summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml2
-rw-r--r--core/array.cpp1
-rw-r--r--core/bind/core_bind.cpp36
-rw-r--r--core/class_db.cpp (renamed from core/object_type_db.cpp)5
-rw-r--r--core/class_db.h (renamed from core/object_type_db.h)9
-rw-r--r--core/color.cpp1
-rw-r--r--core/color_names.inc2
-rw-r--r--core/command_queue_mt.cpp1
-rw-r--r--core/command_queue_mt.h34
-rw-r--r--core/compressed_translation.cpp1
-rw-r--r--core/dictionary.cpp1
-rw-r--r--core/engine.cpp1
-rw-r--r--core/error_macros.cpp1
-rw-r--r--core/global_constants.cpp1
-rw-r--r--core/globals.cpp3
-rw-r--r--core/image.cpp10
-rw-r--r--core/input_map.cpp7
-rw-r--r--core/io/aes256.cpp6
-rw-r--r--core/io/base64.c8
-rw-r--r--core/io/base64.h8
-rw-r--r--core/io/compression.cpp2
-rw-r--r--core/io/networked_multiplayer_peer.cpp28
-rw-r--r--core/io/networked_multiplayer_peer.h28
-rw-r--r--core/io/pck_packer.cpp2
-rw-r--r--core/map.h2
-rw-r--r--core/math/a_star.cpp2
-rw-r--r--core/math/audio_frame.cpp2
-rw-r--r--core/math/audio_frame.h28
-rw-r--r--core/math/bsp_tree.h2
-rw-r--r--core/math/camera_matrix.cpp45
-rw-r--r--core/math/face3.h2
-rw-r--r--core/math/geometry.h2
-rw-r--r--core/math/math_funcs.cpp25
-rw-r--r--core/math/math_funcs.h7
-rw-r--r--core/math/octree.h2
-rw-r--r--core/math/pcg.cpp15
-rw-r--r--core/math/pcg.h14
-rw-r--r--core/math/quick_hull.h2
-rw-r--r--core/math/rect3.cpp (renamed from core/math/aabb.cpp)4
-rw-r--r--core/math/rect3.h (renamed from core/math/aabb.h)2
-rw-r--r--core/math/transform.h2
-rw-r--r--core/math/triangle_mesh.cpp45
-rw-r--r--core/message_queue.cpp2
-rw-r--r--core/object.cpp3
-rw-r--r--core/object.h2
-rw-r--r--core/os/input_event.cpp3
-rw-r--r--core/os/keyboard.cpp7
-rw-r--r--core/os/mutex.cpp2
-rw-r--r--core/packed_data_container.cpp2
-rw-r--r--core/path_db.cpp4
-rw-r--r--core/path_remap.cpp2
-rw-r--r--core/pool_allocator.cpp3
-rw-r--r--core/print_string.cpp2
-rw-r--r--core/profile_clock.cpp3
-rw-r--r--core/profile_clock.h7
-rw-r--r--core/ref_ptr.cpp1
-rw-r--r--core/reference.cpp1
-rw-r--r--core/reference.h2
-rw-r--r--core/register_core_types.cpp2
-rw-r--r--core/resource.cpp10
-rw-r--r--core/resource.h2
-rw-r--r--core/script_debugger_local.cpp3
-rw-r--r--core/script_debugger_remote.cpp2
-rw-r--r--core/set.h2
-rw-r--r--core/string_db.cpp2
-rw-r--r--core/translation.cpp1
-rw-r--r--core/typedefs.h74
-rw-r--r--core/undo_redo.cpp1
-rw-r--r--core/ustring.cpp14
-rw-r--r--core/variant.cpp3
-rw-r--r--core/variant.h2
-rw-r--r--core/variant_call.cpp41
-rw-r--r--core/variant_construct_string.cpp2
-rw-r--r--core/variant_op.cpp2
-rw-r--r--core/variant_parser.cpp18
-rw-r--r--doc/base/classes.xml10
-rw-r--r--drivers/alsa/audio_driver_alsa.cpp12
-rw-r--r--drivers/alsa/audio_driver_alsa.h8
-rw-r--r--drivers/convex_decomp/b2Polygon.cpp2
-rw-r--r--drivers/gles2/rasterizer_gles2.cpp4
-rw-r--r--drivers/gles2/rasterizer_gles2.h2
-rw-r--r--drivers/gles2/shader_compiler_gles2.cpp9
-rw-r--r--drivers/gles3/rasterizer_canvas_gles3.cpp7
-rw-r--r--drivers/gles3/rasterizer_gles3.cpp4
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.cpp35
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.cpp24
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.h5
-rw-r--r--drivers/pulseaudio/audio_driver_pulseaudio.cpp6
-rw-r--r--drivers/pulseaudio/audio_driver_pulseaudio.h8
-rw-r--r--drivers/rtaudio/audio_driver_rtaudio.cpp29
-rw-r--r--drivers/rtaudio/audio_driver_rtaudio.h8
-rw-r--r--drivers/windows/file_access_windows.cpp2
-rw-r--r--drivers/xaudio2/audio_driver_xaudio2.cpp7
-rw-r--r--drivers/xaudio2/audio_driver_xaudio2.h9
-rw-r--r--main/input_default.cpp3
-rw-r--r--main/main.cpp25
-rw-r--r--main/performance.cpp6
-rw-r--r--main/tests/test_gdscript.cpp4
-rw-r--r--main/tests/test_gui.cpp4
-rw-r--r--main/tests/test_main.cpp6
-rw-r--r--main/tests/test_physics.cpp9
-rw-r--r--main/tests/test_physics_2d.cpp13
-rw-r--r--main/tests/test_sound.cpp5
-rw-r--r--modules/chibi/SCsub9
-rw-r--r--modules/chibi/config.py7
-rw-r--r--modules/chibi/cp_config.h52
-rw-r--r--modules/chibi/cp_envelope.cpp369
-rw-r--r--modules/chibi/cp_envelope.h129
-rw-r--r--modules/chibi/cp_file_access_wrapper.h96
-rw-r--r--modules/chibi/cp_instrument.cpp344
-rw-r--r--modules/chibi/cp_instrument.h219
-rw-r--r--modules/chibi/cp_loader.h64
-rw-r--r--modules/chibi/cp_loader_it.cpp216
-rw-r--r--modules/chibi/cp_loader_it.h125
-rw-r--r--modules/chibi/cp_loader_it_info.cpp268
-rw-r--r--modules/chibi/cp_loader_it_instruments.cpp224
-rw-r--r--modules/chibi/cp_loader_it_patterns.cpp166
-rw-r--r--modules/chibi/cp_loader_it_samples.cpp620
-rw-r--r--modules/chibi/cp_loader_mod.cpp482
-rw-r--r--modules/chibi/cp_loader_mod.h52
-rw-r--r--modules/chibi/cp_loader_s3m.cpp413
-rw-r--r--modules/chibi/cp_loader_s3m.h111
-rw-r--r--modules/chibi/cp_loader_xm.cpp752
-rw-r--r--modules/chibi/cp_loader_xm.h89
-rw-r--r--modules/chibi/cp_mixer.h115
-rw-r--r--modules/chibi/cp_note.h102
-rw-r--r--modules/chibi/cp_order.h43
-rw-r--r--modules/chibi/cp_pattern.cpp574
-rw-r--r--modules/chibi/cp_pattern.h94
-rw-r--r--modules/chibi/cp_player_data.cpp151
-rw-r--r--modules/chibi/cp_player_data.h582
-rw-r--r--modules/chibi/cp_player_data_control.cpp324
-rw-r--r--modules/chibi/cp_player_data_effects.cpp1232
-rw-r--r--modules/chibi/cp_player_data_envelopes.cpp89
-rw-r--r--modules/chibi/cp_player_data_events.cpp681
-rw-r--r--modules/chibi/cp_player_data_filter.cpp89
-rw-r--r--modules/chibi/cp_player_data_nna.cpp144
-rw-r--r--modules/chibi/cp_player_data_notes.cpp345
-rw-r--r--modules/chibi/cp_player_data_utils.cpp140
-rw-r--r--modules/chibi/cp_sample.cpp203
-rw-r--r--modules/chibi/cp_sample.h112
-rw-r--r--modules/chibi/cp_sample_defs.h97
-rw-r--r--modules/chibi/cp_sample_manager.cpp78
-rw-r--r--modules/chibi/cp_sample_manager.h99
-rw-r--r--modules/chibi/cp_song.cpp957
-rw-r--r--modules/chibi/cp_song.h261
-rw-r--r--modules/chibi/cp_tables.cpp254
-rw-r--r--modules/chibi/cp_tables.h67
-rw-r--r--modules/chibi/event_stream_chibi.cpp872
-rw-r--r--modules/chibi/event_stream_chibi.h314
-rw-r--r--modules/chibi/register_types.cpp41
-rw-r--r--modules/chibi/register_types.h30
-rw-r--r--modules/gdscript/gd_compiler.cpp2
-rw-r--r--modules/gdscript/gd_editor.cpp2
-rw-r--r--modules/gdscript/gd_function.cpp111
-rw-r--r--modules/gdscript/gd_functions.cpp8
-rw-r--r--modules/gdscript/gd_parser.cpp6
-rw-r--r--modules/gdscript/gd_script.cpp2
-rw-r--r--modules/gridmap/grid_map.cpp8
-rw-r--r--modules/gridmap/grid_map_editor_plugin.cpp6
-rw-r--r--modules/gridmap/register_types.cpp2
-rw-r--r--modules/ogg/config.py3
-rw-r--r--modules/opus/config.py3
-rw-r--r--modules/pvr/texture_loader_pvr.cpp58
-rw-r--r--modules/regex/register_types.cpp2
-rw-r--r--modules/squish/image_compress_squish.cpp6
-rw-r--r--modules/theora/config.py3
-rw-r--r--modules/theora/yuv2rgb.h3
-rw-r--r--modules/visual_script/visual_script_builtin_funcs.cpp6
-rw-r--r--modules/visual_script/visual_script_editor.cpp2
-rw-r--r--modules/visual_script/visual_script_nodes.cpp4
-rw-r--r--modules/vorbis/audio_stream_ogg_vorbis.cpp2
-rw-r--r--modules/vorbis/config.py3
-rw-r--r--modules/webm/config.py3
-rw-r--r--platform/android/audio_driver_jandroid.cpp6
-rw-r--r--platform/android/audio_driver_jandroid.h7
-rw-r--r--platform/android/audio_driver_opensl.cpp9
-rw-r--r--platform/android/audio_driver_opensl.h12
-rw-r--r--platform/android/dir_access_android.cpp2
-rw-r--r--platform/android/export/export.cpp2
-rw-r--r--platform/android/os_android.cpp24
-rw-r--r--platform/android/os_android.h21
-rw-r--r--platform/bb10/audio_driver_bb10.cpp14
-rw-r--r--platform/bb10/audio_driver_bb10.h8
-rw-r--r--platform/bb10/bbutil.c2
-rw-r--r--platform/bb10/bbutil.h6
-rw-r--r--platform/bb10/os_bb10.cpp41
-rw-r--r--platform/bb10/os_bb10.h12
-rw-r--r--platform/haiku/audio_driver_media_kit.cpp6
-rw-r--r--platform/haiku/audio_driver_media_kit.h8
-rw-r--r--platform/haiku/os_haiku.cpp26
-rw-r--r--platform/haiku/os_haiku.h10
-rw-r--r--platform/iphone/app_delegate.h2
-rw-r--r--platform/iphone/app_delegate.mm38
-rw-r--r--platform/iphone/audio_driver_iphone.cpp4
-rw-r--r--platform/iphone/audio_driver_iphone.h7
-rw-r--r--platform/iphone/detect.py8
-rw-r--r--platform/iphone/game_center.mm14
-rwxr-xr-xplatform/iphone/gl_view.mm2
-rw-r--r--platform/iphone/icloud.mm12
-rw-r--r--platform/iphone/in_app_store.mm14
-rw-r--r--platform/iphone/os_iphone.cpp61
-rw-r--r--platform/iphone/os_iphone.h16
-rw-r--r--platform/iphone/platform_config.h4
-rw-r--r--platform/iphone/rasterizer_iphone.h4
-rw-r--r--platform/javascript/audio_driver_javascript.cpp19
-rw-r--r--platform/javascript/audio_driver_javascript.h6
-rw-r--r--platform/javascript/audio_server_javascript.cpp188
-rw-r--r--platform/javascript/audio_server_javascript.h1
-rw-r--r--platform/javascript/javascript_eval.cpp7
-rw-r--r--platform/javascript/javascript_main.cpp2
-rw-r--r--platform/javascript/os_javascript.cpp49
-rw-r--r--platform/javascript/os_javascript.h9
-rw-r--r--platform/osx/audio_driver_osx.cpp4
-rw-r--r--platform/osx/audio_driver_osx.h6
-rw-r--r--platform/osx/os_osx.h9
-rw-r--r--platform/osx/os_osx.mm28
-rw-r--r--platform/server/os_server.cpp6
-rw-r--r--platform/server/os_server.h11
-rw-r--r--platform/uwp/app.h72
-rw-r--r--platform/uwp/export/export.cpp21
-rw-r--r--platform/uwp/joypad_uwp.h4
-rw-r--r--platform/uwp/os_uwp.cpp41
-rw-r--r--platform/uwp/os_uwp.h22
-rw-r--r--platform/windows/joypad.cpp2
-rw-r--r--platform/windows/os_windows.cpp57
-rw-r--r--platform/windows/os_windows.h18
-rw-r--r--platform/windows/stream_peer_winsock.cpp5
-rw-r--r--platform/x11/os_x11.cpp63
-rw-r--r--platform/x11/os_x11.h10
-rw-r--r--scene/2d/area_2d.cpp2
-rw-r--r--scene/2d/navigation2d.cpp4
-rw-r--r--scene/2d/navigation_polygon.cpp2
-rw-r--r--scene/2d/sample_player_2d.cpp263
-rw-r--r--scene/2d/sample_player_2d.h94
-rw-r--r--scene/2d/sound_player_2d.cpp125
-rw-r--r--scene/2d/sound_player_2d.h82
-rw-r--r--scene/2d/sprite.h4
-rw-r--r--scene/3d/area.cpp2
-rw-r--r--scene/3d/baked_light_instance.cpp3
-rw-r--r--scene/3d/body_shape.cpp2
-rw-r--r--scene/3d/bone_attachment.cpp4
-rw-r--r--scene/3d/camera.cpp2
-rw-r--r--scene/3d/character_camera.cpp4
-rw-r--r--scene/3d/gi_probe.cpp1
-rw-r--r--scene/3d/light.cpp2
-rw-r--r--scene/3d/mesh_instance.cpp2
-rw-r--r--scene/3d/navigation.cpp4
-rw-r--r--scene/3d/room_instance.cpp46
-rw-r--r--scene/3d/room_instance.h10
-rw-r--r--scene/3d/spatial_player.cpp135
-rw-r--r--scene/3d/spatial_player.h87
-rw-r--r--scene/3d/spatial_sample_player.cpp241
-rw-r--r--scene/3d/spatial_sample_player.h90
-rw-r--r--scene/3d/spatial_stream_player.cpp407
-rw-r--r--scene/3d/spatial_stream_player.h120
-rw-r--r--scene/3d/sprite_3d.cpp4
-rw-r--r--scene/animation/animation_cache.cpp2
-rw-r--r--scene/animation/animation_player.cpp2
-rw-r--r--scene/animation/animation_tree_player.cpp2
-rw-r--r--scene/audio/event_player.cpp357
-rw-r--r--scene/audio/event_player.h109
-rw-r--r--scene/audio/sample_player.cpp718
-rw-r--r--scene/audio/sample_player.h200
-rw-r--r--scene/audio/sound_room_params.cpp180
-rw-r--r--scene/audio/sound_room_params.h100
-rw-r--r--scene/audio/stream_player.cpp428
-rw-r--r--scene/audio/stream_player.h124
-rw-r--r--scene/gui/box_container.cpp2
-rw-r--r--scene/gui/control.cpp2
-rw-r--r--scene/gui/item_list.cpp4
-rw-r--r--scene/gui/label.cpp2
-rw-r--r--scene/gui/line_edit.cpp2
-rw-r--r--scene/gui/rich_text_label.cpp2
-rw-r--r--scene/gui/separator.h2
-rw-r--r--scene/gui/tab_container.cpp4
-rw-r--r--scene/gui/text_edit.cpp2
-rw-r--r--scene/gui/tree.cpp10
-rw-r--r--scene/gui/video_player.cpp18
-rw-r--r--scene/gui/video_player.h6
-rw-r--r--scene/io/resource_format_wav.cpp2
-rw-r--r--scene/io/resource_format_wav.h2
-rw-r--r--scene/main/node.cpp2
-rw-r--r--scene/main/node.h2
-rw-r--r--scene/main/scene_main_loop.cpp2
-rw-r--r--scene/main/viewport.cpp40
-rw-r--r--scene/register_scene_types.cpp40
-rw-r--r--scene/resources/dynamic_font.cpp2
-rw-r--r--scene/resources/event_stream.cpp85
-rw-r--r--scene/resources/event_stream.h118
-rw-r--r--scene/resources/packed_scene.cpp2
-rw-r--r--scene/resources/polygon_path_finder.cpp2
-rw-r--r--scene/resources/sample.cpp248
-rw-r--r--scene/resources/sample.h108
-rw-r--r--scene/resources/sample_library.cpp215
-rw-r--r--scene/resources/sample_library.h78
-rw-r--r--scene/resources/shader_graph.cpp7
-rw-r--r--scene/resources/surface_tool.cpp2
-rw-r--r--scene/resources/theme.cpp28
-rw-r--r--scene/resources/world.cpp7
-rw-r--r--scene/resources/world.h3
-rw-r--r--scene/resources/world_2d.cpp4
-rw-r--r--servers/audio/audio_driver_dummy.cpp8
-rw-r--r--servers/audio/audio_driver_dummy.h8
-rw-r--r--servers/audio/audio_effect.cpp6
-rw-r--r--servers/audio/audio_effect.h26
-rw-r--r--servers/audio/audio_mixer_sw.cpp1222
-rw-r--r--servers/audio/audio_mixer_sw.h264
-rw-r--r--servers/audio/audio_server_sw.cpp1028
-rw-r--r--servers/audio/audio_server_sw.h286
-rw-r--r--servers/audio/sample_manager_sw.cpp320
-rw-r--r--servers/audio/sample_manager_sw.h129
-rw-r--r--servers/audio_server.cpp315
-rw-r--r--servers/audio_server.h280
-rw-r--r--servers/physics/area_sw.cpp16
-rw-r--r--servers/physics/body_sw.cpp2
-rw-r--r--servers/physics/broad_phase_sw.h2
-rw-r--r--servers/physics/collision_solver_sat.cpp2
-rw-r--r--servers/physics/joints/hinge_joint_sw.cpp2
-rw-r--r--servers/physics/shape_sw.cpp2
-rw-r--r--servers/physics_2d/area_2d_sw.cpp16
-rw-r--r--servers/physics_2d/body_pair_2d_sw.cpp2
-rw-r--r--servers/physics_2d/collision_solver_2d_sw.cpp4
-rw-r--r--servers/physics_2d/physics_2d_server_wrap_mt.cpp4
-rw-r--r--servers/physics_2d/shape_2d_sw.h2
-rw-r--r--servers/physics_2d/space_2d_sw.cpp4
-rw-r--r--servers/physics_2d_server.cpp2
-rw-r--r--servers/physics_server.cpp2
-rw-r--r--servers/register_server_types.cpp5
-rw-r--r--servers/spatial_sound/SCsub7
-rw-r--r--servers/spatial_sound/spatial_sound_server_sw.cpp1071
-rw-r--r--servers/spatial_sound/spatial_sound_server_sw.h266
-rw-r--r--servers/spatial_sound_2d/SCsub7
-rw-r--r--servers/spatial_sound_2d/spatial_sound_2d_server_sw.cpp1042
-rw-r--r--servers/spatial_sound_2d/spatial_sound_2d_server_sw.h265
-rw-r--r--servers/spatial_sound_2d_server.cpp44
-rw-r--r--servers/spatial_sound_2d_server.h164
-rw-r--r--servers/spatial_sound_server.cpp44
-rw-r--r--servers/spatial_sound_server.h168
-rw-r--r--servers/visual/rasterizer.h2
-rw-r--r--servers/visual/shader_language.cpp6
-rw-r--r--servers/visual/visual_server_canvas.cpp2
-rw-r--r--servers/visual/visual_server_raster.cpp1
-rw-r--r--servers/visual_server.cpp2
-rw-r--r--thirdparty/README.md2
-rw-r--r--thirdparty/zlib/deflate.c19
-rw-r--r--thirdparty/zlib/gzlib.c2
-rw-r--r--thirdparty/zlib/gzwrite.c2
-rw-r--r--thirdparty/zlib/inffast.c2
-rw-r--r--thirdparty/zlib/inftrees.c4
-rw-r--r--thirdparty/zlib/trees.c4
-rw-r--r--thirdparty/zlib/zlib.h17
-rw-r--r--thirdparty/zlib/zutil.c2
-rw-r--r--tools/collada/collada.cpp5
-rw-r--r--tools/doc/doc_data.cpp2
-rw-r--r--tools/doc/doc_dump.cpp3
-rw-r--r--tools/doc/doc_dump.h2
-rw-r--r--tools/editor/animation_editor.cpp9
-rw-r--r--tools/editor/asset_library_editor_plugin.cpp4
-rw-r--r--tools/editor/call_dialog.cpp2
-rw-r--r--tools/editor/code_editor.cpp1
-rw-r--r--tools/editor/connections_dialog.cpp3
-rw-r--r--tools/editor/create_dialog.cpp2
-rw-r--r--tools/editor/dependency_editor.cpp1
-rw-r--r--tools/editor/editor_asset_installer.cpp2
-rw-r--r--tools/editor/editor_autoload_settings.cpp2
-rw-r--r--tools/editor/editor_data.cpp1
-rw-r--r--tools/editor/editor_dir_dialog.cpp1
-rw-r--r--tools/editor/editor_file_dialog.cpp4
-rw-r--r--tools/editor/editor_file_system.cpp1
-rw-r--r--tools/editor/editor_fonts.cpp1
-rw-r--r--tools/editor/editor_help.cpp4
-rw-r--r--tools/editor/editor_import_export.cpp5
-rw-r--r--tools/editor/editor_initialize_ssl.cpp1
-rw-r--r--tools/editor/editor_log.cpp3
-rw-r--r--tools/editor/editor_name_dialog.cpp4
-rw-r--r--tools/editor/editor_node.cpp204
-rw-r--r--tools/editor/editor_node.h23
-rw-r--r--tools/editor/editor_path.cpp1
-rw-r--r--tools/editor/editor_plugin.cpp23
-rw-r--r--tools/editor/editor_plugin.h4
-rw-r--r--tools/editor/editor_plugin_settings.cpp1
-rw-r--r--tools/editor/editor_profiler.cpp31
-rw-r--r--tools/editor/editor_profiler.h28
-rw-r--r--tools/editor/editor_reimport_dialog.cpp2
-rw-r--r--tools/editor/editor_resource_preview.cpp1
-rw-r--r--tools/editor/editor_run.cpp1
-rw-r--r--tools/editor/editor_run_native.cpp2
-rw-r--r--tools/editor/editor_run_script.cpp5
-rw-r--r--tools/editor/editor_scale.cpp29
-rw-r--r--tools/editor/editor_scale.h28
-rw-r--r--tools/editor/editor_settings.cpp7
-rw-r--r--tools/editor/editor_sub_scene.cpp3
-rw-r--r--tools/editor/editor_themes.cpp4
-rw-r--r--tools/editor/editor_themes.h2
-rw-r--r--tools/editor/file_type_cache.cpp2
-rw-r--r--tools/editor/fileserver/editor_file_server.cpp1
-rw-r--r--tools/editor/filesystem_dock.cpp7
-rw-r--r--tools/editor/filesystem_dock.h2
-rw-r--r--tools/editor/groups_editor.cpp1
-rw-r--r--tools/editor/io_plugins/editor_atlas.cpp1
-rw-r--r--tools/editor/io_plugins/editor_bitmask_import_plugin.cpp29
-rw-r--r--tools/editor/io_plugins/editor_bitmask_import_plugin.h28
-rw-r--r--tools/editor/io_plugins/editor_export_scene.cpp1
-rw-r--r--tools/editor/io_plugins/editor_font_import_plugin.cpp4
-rw-r--r--tools/editor/io_plugins/editor_import_collada.cpp1
-rw-r--r--tools/editor/io_plugins/editor_mesh_import_plugin.cpp2
-rw-r--r--tools/editor/io_plugins/editor_sample_import_plugin.cpp6
-rw-r--r--tools/editor/io_plugins/editor_sample_import_plugin.h2
-rw-r--r--tools/editor/io_plugins/editor_scene_import_plugin.cpp1
-rw-r--r--tools/editor/io_plugins/editor_scene_importer_fbxconv.cpp1
-rw-r--r--tools/editor/io_plugins/editor_texture_import_plugin.cpp3
-rw-r--r--tools/editor/io_plugins/editor_translation_import_plugin.cpp3
-rw-r--r--tools/editor/multi_node_edit.cpp1
-rw-r--r--tools/editor/node_dock.cpp29
-rw-r--r--tools/editor/node_dock.h28
-rw-r--r--tools/editor/plugins/animation_player_editor_plugin.cpp1
-rw-r--r--tools/editor/plugins/animation_tree_editor_plugin.cpp12
-rw-r--r--tools/editor/plugins/baked_light_baker.cpp7
-rw-r--r--tools/editor/plugins/baked_light_editor_plugin.cpp1
-rw-r--r--tools/editor/plugins/camera_editor_plugin.cpp1
-rw-r--r--tools/editor/plugins/canvas_item_editor_plugin.cpp21
-rw-r--r--tools/editor/plugins/collision_polygon_editor_plugin.cpp1
-rw-r--r--tools/editor/plugins/collision_shape_2d_editor_plugin.cpp1
-rw-r--r--tools/editor/plugins/color_ramp_editor_plugin.cpp1
-rw-r--r--tools/editor/plugins/editor_preview_plugins.cpp7
-rw-r--r--tools/editor/plugins/editor_preview_plugins.h4
-rw-r--r--tools/editor/plugins/gi_probe_editor_plugin.cpp30
-rw-r--r--tools/editor/plugins/gi_probe_editor_plugin.h28
-rw-r--r--tools/editor/plugins/material_editor_plugin.cpp29
-rw-r--r--tools/editor/plugins/material_editor_plugin.h28
-rw-r--r--tools/editor/plugins/mesh_instance_editor_plugin.cpp28
-rw-r--r--tools/editor/plugins/mesh_instance_editor_plugin.h28
-rw-r--r--tools/editor/plugins/multimesh_editor_plugin.cpp3
-rw-r--r--tools/editor/plugins/navigation_polygon_editor_plugin.cpp2
-rw-r--r--tools/editor/plugins/particles_2d_editor_plugin.cpp2
-rw-r--r--tools/editor/plugins/particles_editor_plugin.cpp2
-rw-r--r--tools/editor/plugins/path_editor_plugin.cpp5
-rw-r--r--tools/editor/plugins/polygon_2d_editor_plugin.cpp2
-rw-r--r--tools/editor/plugins/resource_preloader_editor_plugin.cpp3
-rw-r--r--tools/editor/plugins/rich_text_editor_plugin.cpp1
-rw-r--r--tools/editor/plugins/sample_editor_plugin.cpp3
-rw-r--r--tools/editor/plugins/sample_editor_plugin.h4
-rw-r--r--tools/editor/plugins/sample_library_editor_plugin.cpp3
-rw-r--r--tools/editor/plugins/sample_library_editor_plugin.h3
-rw-r--r--tools/editor/plugins/sample_player_editor_plugin.cpp7
-rw-r--r--tools/editor/plugins/sample_player_editor_plugin.h3
-rw-r--r--tools/editor/plugins/script_editor_plugin.cpp1
-rw-r--r--tools/editor/plugins/script_text_editor.cpp1
-rw-r--r--tools/editor/plugins/shader_editor_plugin.cpp2
-rw-r--r--tools/editor/plugins/shader_graph_editor_plugin.cpp3
-rw-r--r--tools/editor/plugins/spatial_editor_plugin.cpp30
-rw-r--r--tools/editor/plugins/stream_editor_plugin.cpp3
-rw-r--r--tools/editor/plugins/stream_editor_plugin.h3
-rw-r--r--tools/editor/plugins/texture_editor_plugin.cpp28
-rw-r--r--tools/editor/plugins/texture_editor_plugin.h28
-rw-r--r--tools/editor/plugins/texture_region_editor_plugin.cpp4
-rw-r--r--tools/editor/plugins/texture_region_editor_plugin.h2
-rw-r--r--tools/editor/plugins/theme_editor_plugin.cpp5
-rw-r--r--tools/editor/plugins/tile_map_editor_plugin.cpp2
-rw-r--r--tools/editor/plugins/tile_set_editor_plugin.cpp2
-rw-r--r--tools/editor/progress_dialog.cpp2
-rw-r--r--tools/editor/project_export.cpp2
-rw-r--r--tools/editor/project_manager.cpp7
-rw-r--r--tools/editor/project_settings.cpp5
-rw-r--r--tools/editor/property_editor.cpp5
-rw-r--r--tools/editor/property_selector.cpp30
-rw-r--r--tools/editor/property_selector.h28
-rw-r--r--tools/editor/pvrtc_compress.cpp2
-rw-r--r--tools/editor/quick_open.cpp2
-rw-r--r--tools/editor/reparent_dialog.cpp4
-rw-r--r--tools/editor/resources_dock.cpp3
-rw-r--r--tools/editor/scene_tree_dock.cpp1
-rw-r--r--tools/editor/scene_tree_editor.cpp2
-rw-r--r--tools/editor/script_create_dialog.cpp1
-rw-r--r--tools/editor/script_editor_debugger.cpp3
-rw-r--r--tools/editor/settings_config_dialog.cpp1
-rw-r--r--tools/editor/spatial_editor_gizmos.cpp66
-rw-r--r--tools/editor/spatial_editor_gizmos.h32
479 files changed, 2528 insertions, 25889 deletions
diff --git a/.travis.yml b/.travis.yml
index 12b49f4c07..ca110a3073 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,7 +11,7 @@ os:
- osx
env:
- #- GODOT_TARGET=iphone
+ - GODOT_TARGET=iphone
- GODOT_TARGET=osx
- GODOT_TARGET=x11
#- GODOT_TARGET=android
diff --git a/core/array.cpp b/core/array.cpp
index b9c8f543da..16598a044d 100644
--- a/core/array.cpp
+++ b/core/array.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "array.h"
+
#include "vector.h"
#include "hashfuncs.h"
#include "variant.h"
diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp
index 657f527a51..d4f61b7ffc 100644
--- a/core/bind/core_bind.cpp
+++ b/core/bind/core_bind.cpp
@@ -592,28 +592,20 @@ uint64_t _OS::get_unix_time_from_datetime(Dictionary datetime) const {
static const unsigned int SECONDS_PER_MINUTE = 60;
static const unsigned int MINUTES_PER_HOUR = 60;
static const unsigned int HOURS_PER_DAY = 24;
- static const unsigned int SECONDS_PER_HOUR = MINUTES_PER_HOUR *
- SECONDS_PER_MINUTE;
+ static const unsigned int SECONDS_PER_HOUR = MINUTES_PER_HOUR * SECONDS_PER_MINUTE;
static const unsigned int SECONDS_PER_DAY = SECONDS_PER_HOUR * HOURS_PER_DAY;
// Get all time values from the dictionary, set to zero if it doesn't exist.
// Risk incorrect calculation over throwing errors
- unsigned int second = ((datetime.has(SECOND_KEY))?
- static_cast<unsigned int>(datetime[SECOND_KEY]): 0);
- unsigned int minute = ((datetime.has(MINUTE_KEY))?
- static_cast<unsigned int>(datetime[MINUTE_KEY]): 0);
- unsigned int hour = ((datetime.has(HOUR_KEY))?
- static_cast<unsigned int>(datetime[HOUR_KEY]): 0);
- unsigned int day = ((datetime.has(DAY_KEY))?
- static_cast<unsigned int>(datetime[DAY_KEY]): 0);
- unsigned int month = ((datetime.has(MONTH_KEY))?
- static_cast<unsigned int>(datetime[MONTH_KEY]) -1: 0);
- unsigned int year = ((datetime.has(YEAR_KEY))?
- static_cast<unsigned int>(datetime[YEAR_KEY]):0);
+ unsigned int second = ((datetime.has(SECOND_KEY)) ? static_cast<unsigned int>(datetime[SECOND_KEY]): 0);
+ unsigned int minute = ((datetime.has(MINUTE_KEY)) ? static_cast<unsigned int>(datetime[MINUTE_KEY]): 0);
+ unsigned int hour = ((datetime.has(HOUR_KEY)) ? static_cast<unsigned int>(datetime[HOUR_KEY]): 0);
+ unsigned int day = ((datetime.has(DAY_KEY)) ? static_cast<unsigned int>(datetime[DAY_KEY]): 0);
+ unsigned int month = ((datetime.has(MONTH_KEY)) ? static_cast<unsigned int>(datetime[MONTH_KEY]) -1: 0);
+ unsigned int year = ((datetime.has(YEAR_KEY)) ? static_cast<unsigned int>(datetime[YEAR_KEY]):0);
/// How many days come before each month (0-12)
- static const unsigned short int DAYS_PAST_THIS_YEAR_TABLE[2][13] =
- {
+ static const unsigned short int DAYS_PAST_THIS_YEAR_TABLE[2][13] = {
/* Normal years. */
{ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 },
/* Leap years. */
@@ -633,19 +625,16 @@ uint64_t _OS::get_unix_time_from_datetime(Dictionary datetime) const {
ERR_FAIL_COND_V( month+1 > 12, 0);
// Do this check after month is tested as valid
- ERR_EXPLAIN("Invalid day value of: " + itos(day) + " which is larger "
- "than "+ itos(MONTH_DAYS_TABLE[LEAPYEAR(year)][month]));
+ ERR_EXPLAIN("Invalid day value of: " + itos(day) + " which is larger than "+ itos(MONTH_DAYS_TABLE[LEAPYEAR(year)][month]));
ERR_FAIL_COND_V( day > MONTH_DAYS_TABLE[LEAPYEAR(year)][month], 0);
// Calculate all the seconds from months past in this year
- uint64_t SECONDS_FROM_MONTHS_PAST_THIS_YEAR =
- DAYS_PAST_THIS_YEAR_TABLE[LEAPYEAR(year)][month] * SECONDS_PER_DAY;
+ uint64_t SECONDS_FROM_MONTHS_PAST_THIS_YEAR = DAYS_PAST_THIS_YEAR_TABLE[LEAPYEAR(year)][month] * SECONDS_PER_DAY;
uint64_t SECONDS_FROM_YEARS_PAST = 0;
for(unsigned int iyear = EPOCH_YR; iyear < year; iyear++) {
- SECONDS_FROM_YEARS_PAST += YEARSIZE(iyear) *
- SECONDS_PER_DAY;
+ SECONDS_FROM_YEARS_PAST += YEARSIZE(iyear) * SECONDS_PER_DAY;
}
uint64_t epoch =
@@ -676,8 +665,7 @@ Dictionary _OS::get_datetime_from_unix_time( uint64_t unix_time_val) const {
// Just fail if unix time is negative (when interpreted as an int).
// This means the user passed in a negative value by accident
- ERR_EXPLAIN("unix_time_val was really huge!"+ itos(unix_time_val) +
- " You probably passed in a negative value!");
+ ERR_EXPLAIN("unix_time_val was really huge!"+ itos(unix_time_val) + " You probably passed in a negative value!");
ERR_FAIL_COND_V( (int64_t)unix_time_val < 0, Dictionary());
OS::Date date;
diff --git a/core/object_type_db.cpp b/core/class_db.cpp
index 24b9c26e71..bb3368c128 100644
--- a/core/object_type_db.cpp
+++ b/core/class_db.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* object_type_db.cpp */
+/* class_db.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -26,7 +26,8 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "object_type_db.h"
+#include "class_db.h"
+
#include "os/mutex.h"
#ifdef NO_THREADS
diff --git a/core/object_type_db.h b/core/class_db.h
index f745e3d5fd..a09a42423b 100644
--- a/core/object_type_db.h
+++ b/core/class_db.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* object_type_db.h */
+/* class_db.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -26,12 +26,13 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef OBJECT_TYPE_DB_H
-#define OBJECT_TYPE_DB_H
+#ifndef CLASS_DB_H
+#define CLASS_DB_H
#include "object.h"
#include "method_bind.h"
#include "print_string.h"
+
/**
@author Juan Linietsky <reduzio@gmail.com>
*/
@@ -537,4 +538,4 @@ public:
-#endif
+#endif // CLASS_DB_H
diff --git a/core/color.cpp b/core/color.cpp
index 89accbb6d2..80a98da252 100644
--- a/core/color.cpp
+++ b/core/color.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "color.h"
+
#include "math_funcs.h"
#include "print_string.h"
#include "map.h"
diff --git a/core/color_names.inc b/core/color_names.inc
index 7b674bb289..b05684acc6 100644
--- a/core/color_names.inc
+++ b/core/color_names.inc
@@ -1,4 +1,6 @@
// Names from https://en.wikipedia.org/wiki/List_of_colors (through https://raw.githubusercontent.com/SuperUserNameMan/color_to_name/616a7cddafefda91478b7bc26167de97fb5badb1/godot_version.gd), slightly edited and normalized
+#include "map.h"
+
static Map<String, Color> _named_colors;
static void _populate_named_colors() {
if(!_named_colors.empty()) return;
diff --git a/core/command_queue_mt.cpp b/core/command_queue_mt.cpp
index 9b1c052eb9..6d50ed8d9a 100644
--- a/core/command_queue_mt.cpp
+++ b/core/command_queue_mt.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "command_queue_mt.h"
+
#include "os/os.h"
void CommandQueueMT::lock() {
diff --git a/core/command_queue_mt.h b/core/command_queue_mt.h
index 779bbe1b58..3975df7658 100644
--- a/core/command_queue_mt.h
+++ b/core/command_queue_mt.h
@@ -179,7 +179,7 @@ class CommandQueueMT {
R* ret;
SyncSemaphore *sync;
- virtual void call() { *ret = (instance->*method)(); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { *ret = (instance->*method)(); sync->sem->post(); sync->in_use=false; }
};
template<class T,class M,class P1,class R>
@@ -204,7 +204,7 @@ class CommandQueueMT {
R* ret;
SyncSemaphore *sync;
- virtual void call() { *ret = (instance->*method)(p1,p2); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { *ret = (instance->*method)(p1,p2); sync->sem->post(); sync->in_use=false; }
};
template<class T,class M,class P1,class P2,class P3,class R>
@@ -218,7 +218,7 @@ class CommandQueueMT {
R* ret;
SyncSemaphore *sync;
- virtual void call() { *ret = (instance->*method)(p1,p2,p3); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { *ret = (instance->*method)(p1,p2,p3); sync->sem->post(); sync->in_use=false; }
};
template<class T,class M,class P1,class P2,class P3,class P4,class R>
@@ -233,7 +233,7 @@ class CommandQueueMT {
R* ret;
SyncSemaphore *sync;
- virtual void call() { *ret = (instance->*method)(p1,p2,p3,p4); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { *ret = (instance->*method)(p1,p2,p3,p4); sync->sem->post(); sync->in_use=false; }
};
template<class T,class M,class P1,class P2,class P3,class P4,class P5,class R>
@@ -249,7 +249,7 @@ class CommandQueueMT {
R* ret;
SyncSemaphore *sync;
- virtual void call() { *ret = (instance->*method)(p1,p2,p3,p4,p5); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { *ret = (instance->*method)(p1,p2,p3,p4,p5); sync->sem->post(); sync->in_use=false; }
};
template<class T,class M,class P1,class P2,class P3,class P4,class P5,class P6,class R>
@@ -266,7 +266,7 @@ class CommandQueueMT {
R* ret;
SyncSemaphore *sync;
- virtual void call() { *ret = (instance->*method)(p1,p2,p3,p4,p5,p6); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { *ret = (instance->*method)(p1,p2,p3,p4,p5,p6); sync->sem->post(); sync->in_use=false; }
};
template<class T,class M,class P1,class P2,class P3,class P4,class P5,class P6,class P7,class R>
@@ -284,7 +284,7 @@ class CommandQueueMT {
R* ret;
SyncSemaphore *sync;
- virtual void call() { *ret = (instance->*method)(p1,p2,p3,p4,p5,p6,p7); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { *ret = (instance->*method)(p1,p2,p3,p4,p5,p6,p7); sync->sem->post(); sync->in_use=false; }
};
template<class T,class M,class P1,class P2,class P3,class P4,class P5,class P6,class P7,class P8,class R>
@@ -303,7 +303,7 @@ class CommandQueueMT {
R* ret;
SyncSemaphore *sync;
- virtual void call() { *ret = (instance->*method)(p1,p2,p3,p4,p5,p6,p7,p8); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { *ret = (instance->*method)(p1,p2,p3,p4,p5,p6,p7,p8); sync->sem->post(); sync->in_use=false; }
};
/** commands that don't return but sync */
@@ -318,7 +318,7 @@ class CommandQueueMT {
SyncSemaphore *sync;
- virtual void call() { (instance->*method)(); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { (instance->*method)(); sync->sem->post(); sync->in_use=false; }
};
template<class T,class M,class P1>
@@ -330,7 +330,7 @@ class CommandQueueMT {
SyncSemaphore *sync;
- virtual void call() { (instance->*method)(p1); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { (instance->*method)(p1); sync->sem->post(); sync->in_use=false; }
};
template<class T,class M,class P1,class P2>
@@ -343,7 +343,7 @@ class CommandQueueMT {
SyncSemaphore *sync;
- virtual void call() { (instance->*method)(p1,p2); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { (instance->*method)(p1,p2); sync->sem->post(); sync->in_use=false; }
};
template<class T,class M,class P1,class P2,class P3>
@@ -357,7 +357,7 @@ class CommandQueueMT {
SyncSemaphore *sync;
- virtual void call() { (instance->*method)(p1,p2,p3); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { (instance->*method)(p1,p2,p3); sync->sem->post(); sync->in_use=false; }
};
template<class T,class M,class P1,class P2,class P3,class P4>
@@ -372,7 +372,7 @@ class CommandQueueMT {
SyncSemaphore *sync;
- virtual void call() { (instance->*method)(p1,p2,p3,p4); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { (instance->*method)(p1,p2,p3,p4); sync->sem->post(); sync->in_use=false; }
};
template<class T,class M,class P1,class P2,class P3,class P4,class P5>
@@ -388,7 +388,7 @@ class CommandQueueMT {
SyncSemaphore *sync;
- virtual void call() { (instance->*method)(p1,p2,p3,p4,p5); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { (instance->*method)(p1,p2,p3,p4,p5); sync->sem->post(); sync->in_use=false; }
};
template<class T,class M,class P1,class P2,class P3,class P4,class P5,class P6>
@@ -405,7 +405,7 @@ class CommandQueueMT {
SyncSemaphore *sync;
- virtual void call() { (instance->*method)(p1,p2,p3,p4,p5,p6); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { (instance->*method)(p1,p2,p3,p4,p5,p6); sync->sem->post(); sync->in_use=false; }
};
template<class T,class M,class P1,class P2,class P3,class P4,class P5,class P6,class P7>
@@ -423,7 +423,7 @@ class CommandQueueMT {
SyncSemaphore *sync;
- virtual void call() { (instance->*method)(p1,p2,p3,p4,p5,p6,p7); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { (instance->*method)(p1,p2,p3,p4,p5,p6,p7); sync->sem->post(); sync->in_use=false; }
};
template<class T,class M,class P1,class P2,class P3,class P4,class P5,class P6,class P7,class P8>
@@ -442,7 +442,7 @@ class CommandQueueMT {
SyncSemaphore *sync;
- virtual void call() { (instance->*method)(p1,p2,p3,p4,p5,p6,p7,p8); sync->sem->post(); sync->in_use=false; ; }
+ virtual void call() { (instance->*method)(p1,p2,p3,p4,p5,p6,p7,p8); sync->sem->post(); sync->in_use=false; }
};
/***** BASE *******/
diff --git a/core/compressed_translation.cpp b/core/compressed_translation.cpp
index 1e3a51fede..d39db5044b 100644
--- a/core/compressed_translation.cpp
+++ b/core/compressed_translation.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "compressed_translation.h"
+
#include "pair.h"
#include <string.h>
diff --git a/core/dictionary.cpp b/core/dictionary.cpp
index 3b4d3b65d0..1176b9be3b 100644
--- a/core/dictionary.cpp
+++ b/core/dictionary.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "dictionary.h"
+
#include "safe_refcount.h"
#include "variant.h"
diff --git a/core/engine.cpp b/core/engine.cpp
index eb6d8a3478..b017e77275 100644
--- a/core/engine.cpp
+++ b/core/engine.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "engine.h"
+
#include "version.h"
void Engine::set_iterations_per_second(int p_ips) {
diff --git a/core/error_macros.cpp b/core/error_macros.cpp
index 53a361fa3a..e963f6122b 100644
--- a/core/error_macros.cpp
+++ b/core/error_macros.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "error_macros.h"
+
#include "os/os.h"
diff --git a/core/global_constants.cpp b/core/global_constants.cpp
index 936facdd23..be619d9ee3 100644
--- a/core/global_constants.cpp
+++ b/core/global_constants.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "global_constants.h"
+
#include "variant.h"
#include "os/keyboard.h"
#include "object.h"
diff --git a/core/globals.cpp b/core/globals.cpp
index 96daf55276..af3ec403d5 100644
--- a/core/globals.cpp
+++ b/core/globals.cpp
@@ -27,9 +27,9 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "globals.h"
+
#include "os/dir_access.h"
#include "os/file_access.h"
-
#include "os/keyboard.h"
#include "io/marshalls.h"
#include "bind/core_bind.h"
@@ -37,6 +37,7 @@
#include "io/file_access_pack.h"
#include "io/file_access_network.h"
#include "variant_parser.h"
+
GlobalConfig *GlobalConfig::singleton=NULL;
GlobalConfig *GlobalConfig::get_singleton() {
diff --git a/core/image.cpp b/core/image.cpp
index d769e6a0b3..ed505b0f77 100644
--- a/core/image.cpp
+++ b/core/image.cpp
@@ -27,11 +27,13 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "image.h"
+
#include "hash_map.h"
#include "core/io/image_loader.h"
#include "core/os/copymem.h"
#include "hq2x.h"
#include "print_string.h"
+
#include <stdio.h>
@@ -762,7 +764,7 @@ void Image::flip_y() {
bool gm=mipmaps;
if (gm)
- clear_mipmaps();;
+ clear_mipmaps();
@@ -789,7 +791,7 @@ void Image::flip_y() {
if (gm)
- generate_mipmaps();;
+ generate_mipmaps();
}
@@ -802,7 +804,7 @@ void Image::flip_x() {
bool gm=mipmaps;
if (gm)
- clear_mipmaps();;
+ clear_mipmaps();
{
@@ -827,7 +829,7 @@ void Image::flip_x() {
}
if (gm)
- generate_mipmaps();;
+ generate_mipmaps();
}
diff --git a/core/input_map.cpp b/core/input_map.cpp
index bcae630c76..8473bce806 100644
--- a/core/input_map.cpp
+++ b/core/input_map.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "input_map.h"
+
#include "globals.h"
#include "os/keyboard.h"
@@ -198,7 +199,7 @@ Array InputMap::_get_action_list(const StringName& p_action) {
if (al) {
for(const List<InputEvent>::Element *E=al->front();E;E=E->next()) {
- ret.push_back(E->get());;
+ ret.push_back(E->get());
}
}
@@ -238,7 +239,7 @@ const Map<StringName, InputMap::Action>& InputMap::get_action_map() const {
void InputMap::load_from_globals() {
- input_map.clear();;
+ input_map.clear();
List<PropertyInfo> pinfo;
GlobalConfig::get_singleton()->get_property_list(&pinfo);
@@ -253,7 +254,7 @@ void InputMap::load_from_globals() {
add_action(name);
- Array va = GlobalConfig::get_singleton()->get(pi.name);;
+ Array va = GlobalConfig::get_singleton()->get(pi.name);
for(int i=0;i<va.size();i++) {
diff --git a/core/io/aes256.cpp b/core/io/aes256.cpp
index cfdac0214d..dc271928b4 100644
--- a/core/io/aes256.cpp
+++ b/core/io/aes256.cpp
@@ -44,8 +44,7 @@ static uint8_t rj_sbox_inv(uint8_t);
#ifdef BACK_TO_TABLES
-static const uint8_t sbox[256] =
-{
+static const uint8_t sbox[256] = {
0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5,
0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,
@@ -79,8 +78,7 @@ static const uint8_t sbox[256] =
0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68,
0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16
};
-static const uint8_t sboxinv[256] =
-{
+static const uint8_t sboxinv[256] = {
0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38,
0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb,
0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,
diff --git a/core/io/base64.c b/core/io/base64.c
index 0c799e9f07..0929ae5db5 100644
--- a/core/io/base64.c
+++ b/core/io/base64.c
@@ -1,3 +1,11 @@
+/*
+ * File: base64.c
+ * Description: Simple BASE64 conversion methods
+ * Author: Ari Edelkind
+ * License: Public Domain
+ * Website: http://episec.com/people/edelkind/c.html
+ */
+
#include <string.h>
char b64string[] =
diff --git a/core/io/base64.h b/core/io/base64.h
index b70b387983..456ef1811b 100644
--- a/core/io/base64.h
+++ b/core/io/base64.h
@@ -1,3 +1,11 @@
+/*
+ * File: base64.h
+ * Description: Simple BASE64 conversion methods
+ * Author: Ari Edelkind
+ * License: Public Domain
+ * Website: http://episec.com/people/edelkind/c.html
+ */
+
#ifndef BASE64_H
#define BASE64_H
diff --git a/core/io/compression.cpp b/core/io/compression.cpp
index 0d3b494106..6fda7d52f3 100644
--- a/core/io/compression.cpp
+++ b/core/io/compression.cpp
@@ -59,7 +59,7 @@ int Compression::compress(uint8_t *p_dst, const uint8_t *p_src, int p_src_size,M
return -1;
strm.avail_in=p_src_size;
- int aout = deflateBound(&strm,p_src_size);;
+ int aout = deflateBound(&strm,p_src_size);
/*if (aout>p_src_size) {
deflateEnd(&strm);
return -1;
diff --git a/core/io/networked_multiplayer_peer.cpp b/core/io/networked_multiplayer_peer.cpp
index 6133401a8c..2981307af6 100644
--- a/core/io/networked_multiplayer_peer.cpp
+++ b/core/io/networked_multiplayer_peer.cpp
@@ -1,3 +1,31 @@
+/*************************************************************************/
+/* networked_multiplayer_peer.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#include "networked_multiplayer_peer.h"
diff --git a/core/io/networked_multiplayer_peer.h b/core/io/networked_multiplayer_peer.h
index a59d9367d1..5d859a2f25 100644
--- a/core/io/networked_multiplayer_peer.h
+++ b/core/io/networked_multiplayer_peer.h
@@ -1,3 +1,31 @@
+/*************************************************************************/
+/* networked_multiplayer_peer.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#ifndef NETWORKED_MULTIPLAYER_PEER_H
#define NETWORKED_MULTIPLAYER_PEER_H
diff --git a/core/io/pck_packer.cpp b/core/io/pck_packer.cpp
index a9f357a7c8..fb5875e4cc 100644
--- a/core/io/pck_packer.cpp
+++ b/core/io/pck_packer.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* pkc_packer.cpp */
+/* pck_packer.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
diff --git a/core/map.h b/core/map.h
index 9448389169..d1a4c209ad 100644
--- a/core/map.h
+++ b/core/map.h
@@ -428,7 +428,7 @@ private:
Element *aux=node->parent->left;
if (aux->color==RED) {
_set_color(aux,BLACK);
- _set_color(node->parent,RED);;
+ _set_color(node->parent,RED);
_rotate_right(node->parent);
aux=node->parent->left;
}
diff --git a/core/math/a_star.cpp b/core/math/a_star.cpp
index 0d6997183f..2c45009a60 100644
--- a/core/math/a_star.cpp
+++ b/core/math/a_star.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* a_star.cpp */
+/* a_star.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
diff --git a/core/math/audio_frame.cpp b/core/math/audio_frame.cpp
new file mode 100644
index 0000000000..566ba23992
--- /dev/null
+++ b/core/math/audio_frame.cpp
@@ -0,0 +1,2 @@
+#include "audio_frame.h"
+
diff --git a/core/math/audio_frame.h b/core/math/audio_frame.h
new file mode 100644
index 0000000000..dbababf762
--- /dev/null
+++ b/core/math/audio_frame.h
@@ -0,0 +1,28 @@
+#ifndef AUDIOFRAME_H
+#define AUDIOFRAME_H
+
+#include "typedefs.h"
+
+struct AudioFrame {
+
+ float l,r;
+
+ _ALWAYS_INLINE_ const float& operator[](int idx) const { return idx==0?l:r; }
+ _ALWAYS_INLINE_ float& operator[](int idx) { return idx==0?l:r; }
+
+ _ALWAYS_INLINE_ AudioFrame operator+(const AudioFrame& p_frame) const { return AudioFrame(l+p_frame.l,r+p_frame.r); }
+ _ALWAYS_INLINE_ AudioFrame operator-(const AudioFrame& p_frame) const { return AudioFrame(l-p_frame.l,r-p_frame.r); }
+ _ALWAYS_INLINE_ AudioFrame operator*(const AudioFrame& p_frame) const { return AudioFrame(l*p_frame.l,r*p_frame.r); }
+ _ALWAYS_INLINE_ AudioFrame operator/(const AudioFrame& p_frame) const { return AudioFrame(l/p_frame.l,r/p_frame.r); }
+
+ _ALWAYS_INLINE_ void operator+=(const AudioFrame& p_frame) { l+=p_frame.l; r+=p_frame.r; }
+ _ALWAYS_INLINE_ void operator-=(const AudioFrame& p_frame) { l-=p_frame.l; r-=p_frame.r; }
+ _ALWAYS_INLINE_ void operator*=(const AudioFrame& p_frame) { l*=p_frame.l; r*=p_frame.r; }
+ _ALWAYS_INLINE_ void operator/=(const AudioFrame& p_frame) { l/=p_frame.l; r/=p_frame.r; }
+
+ _ALWAYS_INLINE_ AudioFrame(float p_l, float p_r) {l=p_l; r=p_r;}
+ _ALWAYS_INLINE_ AudioFrame(const AudioFrame& p_frame) {l=p_frame.l; r=p_frame.r;}
+
+};
+
+#endif
diff --git a/core/math/bsp_tree.h b/core/math/bsp_tree.h
index e01df96555..a64fffcb78 100644
--- a/core/math/bsp_tree.h
+++ b/core/math/bsp_tree.h
@@ -30,7 +30,7 @@
#define BSP_TREE_H
#include "plane.h"
-#include "aabb.h"
+#include "rect3.h"
#include "face3.h"
#include "vector.h"
#include "dvector.h"
diff --git a/core/math/camera_matrix.cpp b/core/math/camera_matrix.cpp
index c44ff4682a..7669356f5e 100644
--- a/core/math/camera_matrix.cpp
+++ b/core/math/camera_matrix.cpp
@@ -143,10 +143,22 @@ void CameraMatrix::set_frustum(float p_left, float p_right, float p_bottom, floa
float c = - ( p_far + p_near ) / ( p_far - p_near );
float d = - 2 * p_far * p_near / ( p_far - p_near );
- te[0] = x; te[4] = 0; te[8] = a; te[12] = 0;
- te[1] = 0; te[5] = y; te[9] = b; te[13] = 0;
- te[2] = 0; te[6] = 0; te[10] = c; te[14] = d;
- te[3] = 0; te[7] = 0; te[11] = - 1; te[15] = 0;
+ te[0] = x;
+ te[1] = 0;
+ te[2] = 0;
+ te[3] = 0;
+ te[4] = 0;
+ te[5] = y;
+ te[6] = 0;
+ te[7] = 0;
+ te[8] = a;
+ te[9] = b;
+ te[10] = c;
+ te[11] = -1;
+ te[12] = 0;
+ te[13] = 0;
+ te[14] = d;
+ te[15] = 0;
#endif
@@ -186,18 +198,21 @@ void CameraMatrix::get_viewport_size(float& r_width, float& r_height) const {
Plane near_plane=Plane(matrix[ 3] + matrix[ 2],
matrix[ 7] + matrix[ 6],
matrix[11] + matrix[10],
- -matrix[15] - matrix[14]).normalized();
+ -matrix[15] - matrix[14]);
+ near_plane.normalize();
///////--- Right Plane ---///////
Plane right_plane=Plane(matrix[ 3] - matrix[ 0],
matrix[ 7] - matrix[ 4],
matrix[11] - matrix[ 8],
- - matrix[15] + matrix[12]).normalized();
+ - matrix[15] + matrix[12]);
+ right_plane.normalize();
Plane top_plane=Plane(matrix[ 3] - matrix[ 1],
matrix[ 7] - matrix[ 5],
matrix[11] - matrix[ 9],
- -matrix[15] + matrix[13]).normalized();
+ -matrix[15] + matrix[13]);
+ top_plane.normalize();
Vector3 res;
near_plane.intersect_3(right_plane,top_plane,&res);
@@ -214,26 +229,29 @@ bool CameraMatrix::get_endpoints(const Transform& p_transform, Vector3 *p_8point
Plane near_plane=Plane(matrix[ 3] + matrix[ 2],
matrix[ 7] + matrix[ 6],
matrix[11] + matrix[10],
- -matrix[15] - matrix[14]).normalized();
+ -matrix[15] - matrix[14]);
+ near_plane.normalize();
///////--- Far Plane ---///////
Plane far_plane=Plane(matrix[ 2] - matrix[ 3],
matrix[ 6] - matrix[ 7],
matrix[10] - matrix[11],
- matrix[15] - matrix[14]).normalized();
-
+ matrix[15] - matrix[14]);
+ far_plane.normalize();
///////--- Right Plane ---///////
Plane right_plane=Plane(matrix[ 0] - matrix[ 3],
matrix[ 4] - matrix[ 7],
matrix[8] - matrix[ 11],
- - matrix[15] + matrix[12]).normalized();
+ - matrix[15] + matrix[12]);
+ right_plane.normalize();
///////--- Top Plane ---///////
Plane top_plane=Plane(matrix[ 1] - matrix[ 3],
matrix[ 5] - matrix[ 7],
matrix[9] - matrix[ 11],
- -matrix[15] + matrix[13]).normalized();
+ -matrix[15] + matrix[13]);
+ top_plane.normalize();
Vector3 near_endpoint;
Vector3 far_endpoint;
@@ -549,7 +567,8 @@ float CameraMatrix::get_fov() const {
Plane right_plane=Plane(matrix[ 3] - matrix[ 0],
matrix[ 7] - matrix[ 4],
matrix[11] - matrix[ 8],
- - matrix[15] + matrix[12]).normalized();
+ - matrix[15] + matrix[12]);
+ right_plane.normalize();
return Math::rad2deg(Math::acos(Math::abs(right_plane.normal.x)))*2.0;
}
diff --git a/core/math/face3.h b/core/math/face3.h
index f08eb227b1..e957f64320 100644
--- a/core/math/face3.h
+++ b/core/math/face3.h
@@ -31,7 +31,7 @@
#include "vector3.h"
#include "plane.h"
-#include "aabb.h"
+#include "rect3.h"
#include "transform.h"
class Face3 {
diff --git a/core/math/geometry.h b/core/math/geometry.h
index d5b3a3068c..25f5e11fcf 100644
--- a/core/math/geometry.h
+++ b/core/math/geometry.h
@@ -297,7 +297,7 @@ public:
if (inters_d<0 || inters_d>rel_l)
return false;
- Vector3 result=p_from+normal*inters_d;;
+ Vector3 result=p_from+normal*inters_d;
if (r_res)
*r_res=result;
diff --git a/core/math/math_funcs.cpp b/core/math/math_funcs.cpp
index 8353aa0ebe..ef8c1ec539 100644
--- a/core/math/math_funcs.cpp
+++ b/core/math/math_funcs.cpp
@@ -31,8 +31,9 @@
#include "core/os/os.h"
#include "float.h"
-uint32_t Math::default_seed=1;
+#include "pcg.h"
+pcg32_random_t Math::default_pcg = {1, PCG_DEFAULT_INC_64};
#define PHI 0x9e3779b9
@@ -40,28 +41,26 @@ uint32_t Math::default_seed=1;
static uint32_t Q[4096];
#endif
-uint32_t Math::rand_from_seed(uint32_t *seed) {
- // Xorshift31 PRNG
- if ( *seed == 0 ) *seed = Math::RANDOM_MAX;
- (*seed) ^= (*seed) << 13;
- (*seed) ^= (*seed) >> 17;
- (*seed) ^= (*seed) << 5;
- return (*seed) & Math::RANDOM_MAX;
+// TODO: we should eventually expose pcg.inc too
+uint32_t Math::rand_from_seed(uint64_t *seed) {
+ pcg32_random_t pcg = {*seed, PCG_DEFAULT_INC_64};
+ uint32_t r = pcg32_random_r(&pcg);
+ *seed = pcg.state;
+ return r;
}
-void Math::seed(uint32_t x) {
- default_seed=x;
+void Math::seed(uint64_t x) {
+ default_pcg.state=x;
}
void Math::randomize() {
OS::Time time = OS::get_singleton()->get_time();
- seed(OS::get_singleton()->get_ticks_usec()*(time.hour+1)*(time.min+1)*(time.sec+1)*rand()); /* *OS::get_singleton()->get_time().sec); // windows doesn't have get_time(), returns always 0 */
+ seed(OS::get_singleton()->get_ticks_usec()*(time.hour+1)*(time.min+1)*(time.sec+1)*rand()); // TODO: can be simplified.
}
uint32_t Math::rand() {
-
- return rand_from_seed(&default_seed);
+ return pcg32_random_r(&default_pcg);
}
double Math::randf() {
diff --git a/core/math/math_funcs.h b/core/math/math_funcs.h
index 8ce59224ff..e81646b1ca 100644
--- a/core/math/math_funcs.h
+++ b/core/math/math_funcs.h
@@ -31,6 +31,7 @@
#include "typedefs.h"
#include "math_defs.h"
+#include "pcg.h"
#ifndef NO_MATH_H
#include <math.h>
@@ -41,8 +42,8 @@
class Math {
+ static pcg32_random_t default_pcg;
- static uint32_t default_seed;
public:
Math() {} // useless to instance
@@ -150,12 +151,12 @@ public:
}
- static uint32_t rand_from_seed(uint32_t *seed);
+ static uint32_t rand_from_seed(uint64_t *seed);
static double ease(double p_x, double p_c);
static int step_decimals(double p_step);
static double stepify(double p_value,double p_step);
- static void seed(uint32_t x=0);
+ static void seed(uint64_t x=0);
static void randomize();
static uint32_t larger_prime(uint32_t p_val);
static double dectime(double p_value,double p_amount, double p_step);
diff --git a/core/math/octree.h b/core/math/octree.h
index 483ba1d510..3630922d10 100644
--- a/core/math/octree.h
+++ b/core/math/octree.h
@@ -30,7 +30,7 @@
#define OCTREE_H
#include "vector3.h"
-#include "aabb.h"
+#include "rect3.h"
#include "list.h"
#include "variant.h"
#include "map.h"
diff --git a/core/math/pcg.cpp b/core/math/pcg.cpp
new file mode 100644
index 0000000000..eac3b36d36
--- /dev/null
+++ b/core/math/pcg.cpp
@@ -0,0 +1,15 @@
+// *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / pcg-random.org
+// Licensed under Apache License 2.0 (NO WARRANTY, etc. see website)
+
+#include "pcg.h"
+
+uint32_t pcg32_random_r(pcg32_random_t* rng)
+{
+ uint64_t oldstate = rng->state;
+ // Advance internal state
+ rng->state = oldstate * 6364136223846793005ULL + (rng->inc|1);
+ // Calculate output function (XSH RR), uses old state for max ILP
+ uint32_t xorshifted = ((oldstate >> 18u) ^ oldstate) >> 27u;
+ uint32_t rot = oldstate >> 59u;
+ return (xorshifted >> rot) | (xorshifted << ((-rot) & 31));
+}
diff --git a/core/math/pcg.h b/core/math/pcg.h
new file mode 100644
index 0000000000..81f4c9770e
--- /dev/null
+++ b/core/math/pcg.h
@@ -0,0 +1,14 @@
+// *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / pcg-random.org
+// Licensed under Apache License 2.0 (NO WARRANTY, etc. see website)
+
+#ifndef RANDOM_H
+#define RANDOM_H
+
+#include "typedefs.h"
+
+#define PCG_DEFAULT_INC_64 1442695040888963407ULL
+
+typedef struct { uint64_t state; uint64_t inc; } pcg32_random_t;
+uint32_t pcg32_random_r(pcg32_random_t* rng);
+
+#endif // RANDOM_H
diff --git a/core/math/quick_hull.h b/core/math/quick_hull.h
index 04d25fef18..7bd23d31f2 100644
--- a/core/math/quick_hull.h
+++ b/core/math/quick_hull.h
@@ -29,7 +29,7 @@
#ifndef QUICK_HULL_H
#define QUICK_HULL_H
-#include "aabb.h"
+#include "rect3.h"
#include "set.h"
#include "list.h"
#include "geometry.h"
diff --git a/core/math/aabb.cpp b/core/math/rect3.cpp
index 3518eea7ac..e0b0646505 100644
--- a/core/math/aabb.cpp
+++ b/core/math/rect3.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* aabb.cpp */
+/* rect3.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -26,7 +26,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "aabb.h"
+#include "rect3.h"
#include "print_string.h"
diff --git a/core/math/aabb.h b/core/math/rect3.h
index 2816d1f012..80c67200f4 100644
--- a/core/math/aabb.h
+++ b/core/math/rect3.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* aabb.h */
+/* rect3.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
diff --git a/core/math/transform.h b/core/math/transform.h
index d65e87cc6a..45d7b2a12c 100644
--- a/core/math/transform.h
+++ b/core/math/transform.h
@@ -31,7 +31,7 @@
#include "matrix3.h"
#include "plane.h"
-#include "aabb.h"
+#include "rect3.h"
/**
@author Juan Linietsky <reduzio@gmail.com>
*/
diff --git a/core/math/triangle_mesh.cpp b/core/math/triangle_mesh.cpp
index 74c4656771..86f8bf29e7 100644
--- a/core/math/triangle_mesh.cpp
+++ b/core/math/triangle_mesh.cpp
@@ -236,21 +236,22 @@ Vector3 TriangleMesh::get_area_normal(const Rect3& p_aabb) const {
stack[level]=(VISIT_LEFT_BIT<<VISITED_BIT_SHIFT)|node;
}
}
-
- } continue;
+ continue;
+ }
case VISIT_LEFT_BIT: {
stack[level]=(VISIT_RIGHT_BIT<<VISITED_BIT_SHIFT)|node;
stack[level+1]=b.left|TEST_AABB_BIT;
level++;
-
- } continue;
+ continue;
+ }
case VISIT_RIGHT_BIT: {
stack[level]=(VISIT_DONE_BIT<<VISITED_BIT_SHIFT)|node;
stack[level+1]=b.right|TEST_AABB_BIT;
level++;
- } continue;
+ continue;
+ }
case VISIT_DONE_BIT: {
if (level==0) {
@@ -258,8 +259,8 @@ Vector3 TriangleMesh::get_area_normal(const Rect3& p_aabb) const {
break;
} else
level--;
-
- } continue;
+ continue;
+ }
}
@@ -357,21 +358,22 @@ bool TriangleMesh::intersect_segment(const Vector3& p_begin,const Vector3& p_end
stack[level]=(VISIT_LEFT_BIT<<VISITED_BIT_SHIFT)|node;
}
}
-
- } continue;
+ continue;
+ }
case VISIT_LEFT_BIT: {
stack[level]=(VISIT_RIGHT_BIT<<VISITED_BIT_SHIFT)|node;
stack[level+1]=b.left|TEST_AABB_BIT;
level++;
-
- } continue;
+ continue;
+ }
case VISIT_RIGHT_BIT: {
stack[level]=(VISIT_DONE_BIT<<VISITED_BIT_SHIFT)|node;
stack[level+1]=b.right|TEST_AABB_BIT;
level++;
- } continue;
+ continue;
+ }
case VISIT_DONE_BIT: {
if (level==0) {
@@ -379,8 +381,8 @@ bool TriangleMesh::intersect_segment(const Vector3& p_begin,const Vector3& p_end
break;
} else
level--;
-
- } continue;
+ continue;
+ }
}
@@ -478,21 +480,22 @@ bool TriangleMesh::intersect_ray(const Vector3& p_begin,const Vector3& p_dir,Vec
stack[level]=(VISIT_LEFT_BIT<<VISITED_BIT_SHIFT)|node;
}
}
-
- } continue;
+ continue;
+ }
case VISIT_LEFT_BIT: {
stack[level]=(VISIT_RIGHT_BIT<<VISITED_BIT_SHIFT)|node;
stack[level+1]=b.left|TEST_AABB_BIT;
level++;
-
- } continue;
+ continue;
+ }
case VISIT_RIGHT_BIT: {
stack[level]=(VISIT_DONE_BIT<<VISITED_BIT_SHIFT)|node;
stack[level+1]=b.right|TEST_AABB_BIT;
level++;
- } continue;
+ continue;
+ }
case VISIT_DONE_BIT: {
if (level==0) {
@@ -500,8 +503,8 @@ bool TriangleMesh::intersect_ray(const Vector3& p_begin,const Vector3& p_dir,Vec
break;
} else
level--;
-
- } continue;
+ continue;
+ }
}
diff --git a/core/message_queue.cpp b/core/message_queue.cpp
index fe46e1671c..668d321e05 100644
--- a/core/message_queue.cpp
+++ b/core/message_queue.cpp
@@ -27,8 +27,10 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "message_queue.h"
+
#include "globals.h"
#include "script_language.h"
+
MessageQueue *MessageQueue::singleton=NULL;
MessageQueue *MessageQueue::get_singleton() {
diff --git a/core/object.cpp b/core/object.cpp
index 8af088122e..26308dc64f 100644
--- a/core/object.cpp
+++ b/core/object.cpp
@@ -27,8 +27,9 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "object.h"
+
#include "print_string.h"
-#include "object_type_db.h"
+#include "class_db.h"
#include "script_language.h"
#include "message_queue.h"
#include "core_string_names.h"
diff --git a/core/object.h b/core/object.h
index 6ce579ea99..b9a800afc4 100644
--- a/core/object.h
+++ b/core/object.h
@@ -721,6 +721,6 @@ public:
};
//needed by macros
-#include "object_type_db.h"
+#include "class_db.h"
#endif
diff --git a/core/os/input_event.cpp b/core/os/input_event.cpp
index 3cc595208f..4ef99558ad 100644
--- a/core/os/input_event.cpp
+++ b/core/os/input_event.cpp
@@ -39,6 +39,8 @@ bool InputEvent::operator==(const InputEvent &p_event) const {
}
switch(type) {
+ /** Current clang-format style doesn't play well with the aligned return values of that switch. */
+ /* clang-format off */
case NONE:
return true;
case KEY:
@@ -80,6 +82,7 @@ bool InputEvent::operator==(const InputEvent &p_event) const {
case ACTION:
return action.action == p_event.action.action
&& action.pressed == p_event.action.pressed;
+ /* clang-format on */
default:
ERR_PRINT("No logic to compare InputEvents of this type, this shouldn't happen.");
}
diff --git a/core/os/keyboard.cpp b/core/os/keyboard.cpp
index 309348ea31..40fa86d09f 100644
--- a/core/os/keyboard.cpp
+++ b/core/os/keyboard.cpp
@@ -36,6 +36,7 @@ struct _KeyCodeText {
static const _KeyCodeText _keycodes[]={
+ /* clang-format off */
{KEY_ESCAPE ,"Escape"},
{KEY_TAB ,"Tab"},
{KEY_BACKTAB ,"BackTab"},
@@ -281,7 +282,8 @@ static const _KeyCodeText _keycodes[]={
{KEY_DIVISION ,"Division"},
{KEY_YDIAERESIS ,"Ydiaeresis"},
- {0 ,0}
+ {0 ,0}
+ /* clang-format on */
};
bool keycode_has_unicode(uint32_t p_keycode) {
@@ -299,7 +301,8 @@ bool keycode_has_unicode(uint32_t p_keycode) {
case KEY_MEDIAPREVIOUS: case KEY_MEDIANEXT: case KEY_MEDIARECORD: case KEY_HOMEPAGE: case KEY_FAVORITES: case KEY_SEARCH: case KEY_STANDBY:
case KEY_OPENURL: case KEY_LAUNCHMAIL: case KEY_LAUNCHMEDIA: case KEY_LAUNCH0: case KEY_LAUNCH1: case KEY_LAUNCH2: case KEY_LAUNCH3: case KEY_LAUNCH4:
case KEY_LAUNCH5: case KEY_LAUNCH6: case KEY_LAUNCH7: case KEY_LAUNCH8: case KEY_LAUNCH9: case KEY_LAUNCHA: case KEY_LAUNCHB: case KEY_LAUNCHC: case KEY_LAUNCHD:
- case KEY_LAUNCHE: case KEY_LAUNCHF: return false;
+ case KEY_LAUNCHE: case KEY_LAUNCHF:
+ return false;
}
return true;
diff --git a/core/os/mutex.cpp b/core/os/mutex.cpp
index f5f7f757c3..acdcb492d9 100644
--- a/core/os/mutex.cpp
+++ b/core/os/mutex.cpp
@@ -47,7 +47,7 @@ Mutex::~Mutex() {
}
-Mutex *_global_mutex=NULL;;
+Mutex *_global_mutex=NULL;
void _global_lock() {
diff --git a/core/packed_data_container.cpp b/core/packed_data_container.cpp
index 5f3b877822..d3bb03ab5e 100644
--- a/core/packed_data_container.cpp
+++ b/core/packed_data_container.cpp
@@ -27,11 +27,11 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "packed_data_container.h"
+
#include "io/marshalls.h"
#include "core_string_names.h"
-
Variant PackedDataContainer::getvar(const Variant& p_key, bool *r_valid) const {
bool err=false;
diff --git a/core/path_db.cpp b/core/path_db.cpp
index 25f62ed951..679372898c 100644
--- a/core/path_db.cpp
+++ b/core/path_db.cpp
@@ -27,8 +27,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "path_db.h"
-#include "print_string.h"
+#include "print_string.h"
uint32_t NodePath::hash() const {
@@ -334,7 +334,7 @@ NodePath::NodePath(const String& p_path) {
StringName property;
Vector<StringName> subpath;
- int absolute=(path[0]=='/')?1:0;;
+ int absolute=(path[0]=='/')?1:0;
bool last_is_slash=true;
int slices=0;
int subpath_pos=path.find(":");
diff --git a/core/path_remap.cpp b/core/path_remap.cpp
index 646c1c497b..ed77fd8840 100644
--- a/core/path_remap.cpp
+++ b/core/path_remap.cpp
@@ -27,9 +27,11 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "path_remap.h"
+
#include "globals.h"
#include "os/os.h"
#include "translation.h"
+
PathRemap* PathRemap::singleton=NULL;
PathRemap* PathRemap::get_singleton() {
diff --git a/core/pool_allocator.cpp b/core/pool_allocator.cpp
index e425218060..b1417dd107 100644
--- a/core/pool_allocator.cpp
+++ b/core/pool_allocator.cpp
@@ -27,12 +27,15 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "pool_allocator.h"
+
#include "error_macros.h"
#include "core/os/os.h"
#include "os/memory.h"
#include "os/copymem.h"
#include "print_string.h"
+
#include <assert.h>
+
#define COMPACT_CHUNK( m_entry , m_to_pos ) \
do { \
void *_dst=&((unsigned char*)pool)[m_to_pos]; \
diff --git a/core/print_string.cpp b/core/print_string.cpp
index 3faed62bb4..36316af619 100644
--- a/core/print_string.cpp
+++ b/core/print_string.cpp
@@ -27,7 +27,9 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "print_string.h"
+
#include "os/os.h"
+
#include <stdio.h>
static PrintHandlerList *print_handler_list=NULL;
diff --git a/core/profile_clock.cpp b/core/profile_clock.cpp
deleted file mode 100644
index 0806275463..0000000000
--- a/core/profile_clock.cpp
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "profile_clock.h"
-
-
diff --git a/core/profile_clock.h b/core/profile_clock.h
deleted file mode 100644
index e254580249..0000000000
--- a/core/profile_clock.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef PROFILE_CLOCK_H
-#define PROFILE_CLOCK_H
-
-
-
-
-#endif // PROFILE_CLOCK_H
diff --git a/core/ref_ptr.cpp b/core/ref_ptr.cpp
index e781bae496..29ffe974d2 100644
--- a/core/ref_ptr.cpp
+++ b/core/ref_ptr.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "ref_ptr.h"
+
#include "reference.h"
#include "resource.h"
diff --git a/core/reference.cpp b/core/reference.cpp
index 69e053cc1a..d21caf0839 100644
--- a/core/reference.cpp
+++ b/core/reference.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "reference.h"
+
#include "script_language.h"
diff --git a/core/reference.h b/core/reference.h
index ce196801bb..e130b4c2b4 100644
--- a/core/reference.h
+++ b/core/reference.h
@@ -32,7 +32,7 @@
#include "object.h"
#include "safe_refcount.h"
#include "ref_ptr.h"
-#include "object_type_db.h"
+#include "class_db.h"
/**
@author Juan Linietsky <reduzio@gmail.com>
diff --git a/core/register_core_types.cpp b/core/register_core_types.cpp
index 85fa5d27c0..242d36042d 100644
--- a/core/register_core_types.cpp
+++ b/core/register_core_types.cpp
@@ -36,7 +36,7 @@
#include "math/a_star.h"
#include "math/triangle_mesh.h"
#include "globals.h"
-#include "object_type_db.h"
+#include "class_db.h"
#include "geometry.h"
#include "bind/core_bind.h"
#include "core_string_names.h"
diff --git a/core/resource.cpp b/core/resource.cpp
index 3369e4a5a2..4b09a506ff 100644
--- a/core/resource.cpp
+++ b/core/resource.cpp
@@ -27,12 +27,14 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "resource.h"
+
#include "core_string_names.h"
-#include <stdio.h>
#include "os/file_access.h"
#include "io/resource_loader.h"
#include "script_language.h"
+#include <stdio.h>
+
void ResourceImportMetadata::set_editor(const String& p_editor) {
editor=p_editor;
@@ -198,7 +200,7 @@ void Resource::set_path(const String& p_path, bool p_take_over) {
if (path_cache!="") {
ResourceCache::lock->write_lock();
- ResourceCache::resources[path_cache]=this;;
+ ResourceCache::resources[path_cache]=this;
ResourceCache::lock->write_unlock();
}
@@ -532,9 +534,9 @@ void ResourceCache::reload_externals() {
bool ResourceCache::has(const String& p_path) {
- lock->read_lock();;
+ lock->read_lock();
bool b = resources.has(p_path);
- lock->read_unlock();;
+ lock->read_unlock();
return b;
diff --git a/core/resource.h b/core/resource.h
index 284c59e1a8..2b071c8e1c 100644
--- a/core/resource.h
+++ b/core/resource.h
@@ -33,7 +33,7 @@
#include "safe_refcount.h"
#include "ref_ptr.h"
#include "reference.h"
-#include "object_type_db.h"
+#include "class_db.h"
/**
@author Juan Linietsky <reduzio@gmail.com>
diff --git a/core/script_debugger_local.cpp b/core/script_debugger_local.cpp
index a8d77668f5..22aceac4c5 100644
--- a/core/script_debugger_local.cpp
+++ b/core/script_debugger_local.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "script_debugger_local.h"
+
#include "os/os.h"
void ScriptDebuggerLocal::debug(ScriptLanguage *p_script,bool p_can_continue) {
@@ -286,7 +287,7 @@ void ScriptDebuggerLocal::profiling_end() {
for(int i=0;i<ofs;i++) {
print_line(itos(i)+":"+pinfo[i].signature);
- float tt=USEC_TO_SEC(pinfo[i].total_time);;
+ float tt=USEC_TO_SEC(pinfo[i].total_time);
float st=USEC_TO_SEC(pinfo[i].self_time);
print_line("\ttotal_ms: "+rtos(tt)+"\tself_ms: "+rtos(st)+"total%: "+itos(tt*100/total_time)+"\tself%: "+itos(st*100/total_time)+"\tcalls: "+itos(pinfo[i].call_count));
}
diff --git a/core/script_debugger_remote.cpp b/core/script_debugger_remote.cpp
index bb0109467e..62d14c4e5a 100644
--- a/core/script_debugger_remote.cpp
+++ b/core/script_debugger_remote.cpp
@@ -27,10 +27,12 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "script_debugger_remote.h"
+
#include "os/os.h"
#include "io/ip.h"
#include "globals.h"
#include "os/input.h"
+
void ScriptDebuggerRemote::_send_video_memory() {
List<ResourceUsage> usage;
diff --git a/core/set.h b/core/set.h
index 13c2b3a4f6..a921fc661f 100644
--- a/core/set.h
+++ b/core/set.h
@@ -416,7 +416,7 @@ private:
Element *aux=node->parent->left;
if (aux->color==RED) {
_set_color(aux,BLACK);
- _set_color(node->parent,RED);;
+ _set_color(node->parent,RED);
_rotate_right(node->parent);
aux=node->parent->left;
}
diff --git a/core/string_db.cpp b/core/string_db.cpp
index be35a44ed1..004b07b9e5 100644
--- a/core/string_db.cpp
+++ b/core/string_db.cpp
@@ -27,8 +27,10 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "string_db.h"
+
#include "print_string.h"
#include "os/os.h"
+
StaticCString StaticCString::create(const char *p_ptr) {
StaticCString scs; scs.ptr=p_ptr; return scs;
}
diff --git a/core/translation.cpp b/core/translation.cpp
index 5215e5f6d1..d5ec61b8d6 100644
--- a/core/translation.cpp
+++ b/core/translation.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "translation.h"
+
#include "globals.h"
#include "io/resource_loader.h"
#include "os/os.h"
diff --git a/core/typedefs.h b/core/typedefs.h
index 176c77570d..c630887924 100644
--- a/core/typedefs.h
+++ b/core/typedefs.h
@@ -40,41 +40,39 @@
#define _STR(m_x) #m_x
#define _MKSTR(m_x) _STR(m_x)
#endif
-// have to include version.h for this to work, include it in the .cpp not the .h
+
+/**
+ * Version macros - it is necessary to include "version.h" for those to work.
+ * Include it in the .cpp file, not the header.
+ */
#ifdef VERSION_PATCH
-#define VERSION_MKSTRING _MKSTR(VERSION_MAJOR)"." _MKSTR(VERSION_MINOR)"." _MKSTR(VERSION_PATCH)"." _MKSTR(VERSION_STATUS)"." _MKSTR(VERSION_REVISION)
+#define VERSION_MKSTRING "" _MKSTR(VERSION_MAJOR) "." _MKSTR(VERSION_MINOR) "." _MKSTR(VERSION_PATCH) "." _MKSTR(VERSION_STATUS) "." _MKSTR(VERSION_REVISION)
#else
-#define VERSION_MKSTRING _MKSTR(VERSION_MAJOR)"." _MKSTR(VERSION_MINOR)"." _MKSTR(VERSION_STATUS)"." _MKSTR(VERSION_REVISION)
+#define VERSION_MKSTRING "" _MKSTR(VERSION_MAJOR) "." _MKSTR(VERSION_MINOR) "." _MKSTR(VERSION_STATUS) "." _MKSTR(VERSION_REVISION)
#endif // VERSION_PATCH
-#define VERSION_FULL_NAME _MKSTR(VERSION_NAME)" v" VERSION_MKSTRING
+#define VERSION_FULL_NAME "" _MKSTR(VERSION_NAME) " v" VERSION_MKSTRING
#ifndef _ALWAYS_INLINE_
#if defined(__GNUC__) && (__GNUC__ >= 4 )
-# define _ALWAYS_INLINE_ __attribute__((always_inline)) inline
+#define _ALWAYS_INLINE_ __attribute__((always_inline)) inline
#elif defined(__llvm__)
-# define _ALWAYS_INLINE_ __attribute__((always_inline)) inline
+#define _ALWAYS_INLINE_ __attribute__((always_inline)) inline
#elif defined(_MSC_VER)
-# define _ALWAYS_INLINE_ __forceinline
+#define _ALWAYS_INLINE_ __forceinline
#else
-# define _ALWAYS_INLINE_ inline
+#define _ALWAYS_INLINE_ inline
#endif
#endif
#ifndef _FORCE_INLINE_
-
#ifdef DEBUG_ENABLED
-
#define _FORCE_INLINE_ inline
-
#else
-
#define _FORCE_INLINE_ _ALWAYS_INLINE_
-
#endif
-
#endif
@@ -97,16 +95,16 @@ T *_nullptr() { T*t=NULL; return t; }
*/
#ifdef _WIN32
-# undef min // override standard definition
-# undef max // override standard definition
-# undef ERROR // override (really stupid) wingdi.h standard definition
-# undef DELETE // override (another really stupid) winnt.h standard definition
-# undef MessageBox // override winuser.h standard definition
-# undef MIN // override standard definition
-# undef MAX // override standard definition
-# undef CLAMP // override standard definition
-# undef Error
-# undef OK
+#undef min // override standard definition
+#undef max // override standard definition
+#undef ERROR // override (really stupid) wingdi.h standard definition
+#undef DELETE // override (another really stupid) winnt.h standard definition
+#undef MessageBox // override winuser.h standard definition
+#undef MIN // override standard definition
+#undef MAX // override standard definition
+#undef CLAMP // override standard definition
+#undef Error
+#undef OK
#endif
#include "error_macros.h"
@@ -150,30 +148,30 @@ inline void __swap_tmpl(T &x, T &y ) {
#endif //swap
-#define HEX2CHR( m_hex ) ( (m_hex>='0' && m_hex<='9')?(m_hex-'0'):\
- ((m_hex>='A' && m_hex<='F')?(10+m_hex-'A'):\
- ((m_hex>='a' && m_hex<='f')?(10+m_hex-'a'):0)))
+/* clang-format off */
+#define HEX2CHR(m_hex) \
+ ((m_hex >= '0' && m_hex <= '9') ? (m_hex - '0') : \
+ ((m_hex >= 'A' && m_hex <= 'F') ? (10 + m_hex - 'A') : \
+ ((m_hex >= 'a' && m_hex <= 'f') ? (10 + m_hex - 'a') : 0)))
+/* clang-format on */
// Macro to check whether we are compiled by clang
// and we have a specific builtin
#if defined(__llvm__) && defined(__has_builtin)
- #define _llvm_has_builtin(x) __has_builtin(x)
+#define _llvm_has_builtin(x) __has_builtin(x)
#else
- #define _llvm_has_builtin(x) 0
+#define _llvm_has_builtin(x) 0
#endif
#if (defined(__GNUC__) && (__GNUC__ >= 5)) || _llvm_has_builtin(__builtin_mul_overflow)
-# define _mul_overflow __builtin_mul_overflow
+#define _mul_overflow __builtin_mul_overflow
#endif
#if (defined(__GNUC__) && (__GNUC__ >= 5)) || _llvm_has_builtin(__builtin_add_overflow)
-# define _add_overflow __builtin_add_overflow
+#define _add_overflow __builtin_add_overflow
#endif
-
-
-
/** Function to find the nearest (bigger) power of 2 to an integer */
static _FORCE_INLINE_ unsigned int nearest_power_of_2(unsigned int x) {
@@ -276,14 +274,11 @@ struct _GlobalLock {
};
#define GLOBAL_LOCK_FUNCTION _GlobalLock _global_lock_;
-#ifdef NO_SAFE_CAST
+#ifdef NO_SAFE_CAST
#define SAFE_CAST static_cast
-
#else
-
#define SAFE_CAST dynamic_cast
-
#endif
#define MT_SAFE
@@ -291,7 +286,4 @@ struct _GlobalLock {
#define __STRX(m_index) #m_index
#define __STR(m_index) __STRX(m_index)
-
-
#endif /* typedefs.h */
-
diff --git a/core/undo_redo.cpp b/core/undo_redo.cpp
index acb262d400..1a0ccc4a7e 100644
--- a/core/undo_redo.cpp
+++ b/core/undo_redo.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "undo_redo.h"
+
#include "os/os.h"
void UndoRedo::_discard_redo() {
diff --git a/core/ustring.cpp b/core/ustring.cpp
index 66608379be..71934b2955 100644
--- a/core/ustring.cpp
+++ b/core/ustring.cpp
@@ -26,8 +26,8 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include <wchar.h>
#include "ustring.h"
+
#include "os/memory.h"
#include "print_string.h"
#include "math_funcs.h"
@@ -36,10 +36,8 @@
#include "ucaps.h"
#include "color.h"
#include "variant.h"
-#define MAX_DIGITS 6
-#define UPPERCASE(m_c) (((m_c)>='a' && (m_c)<='z')?((m_c)-('a'-'A')):(m_c))
-#define LOWERCASE(m_c) (((m_c)>='A' && (m_c)<='Z')?((m_c)+('a'-'A')):(m_c))
+#include <wchar.h>
#ifndef NO_USE_STDLIB
#include <stdlib.h>
@@ -50,6 +48,10 @@
#define snprintf _snprintf
#endif
+#define MAX_DIGITS 6
+#define UPPERCASE(m_c) (((m_c)>='a' && (m_c)<='z')?((m_c)-('a'-'A')):(m_c))
+#define LOWERCASE(m_c) (((m_c)>='A' && (m_c)<='Z')?((m_c)+('a'-'A')):(m_c))
+
/** STRING **/
const char *CharString::get_data() const {
@@ -1255,7 +1257,7 @@ _FORCE_INLINE static int parse_utf8_char(const char *p_utf8,unsigned int *p_ucs4
unichar=*p_utf8;
else {
- unichar=(0xFF >> (len +1)) & *p_utf8;;
+ unichar=(0xFF >> (len +1)) & *p_utf8;
for (int i=1;i<len;i++) {
@@ -1404,7 +1406,7 @@ bool String::parse_utf8(const char* p_utf8,int p_len) {
unichar=*p_utf8;
else {
- unichar=(0xFF >> (len +1)) & *p_utf8;;
+ unichar=(0xFF >> (len +1)) & *p_utf8;
for (int i=1;i<len;i++) {
diff --git a/core/variant.cpp b/core/variant.cpp
index 5a670a2786..103c8f6746 100644
--- a/core/variant.cpp
+++ b/core/variant.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "variant.h"
+
#include "resource.h"
#include "print_string.h"
#include "scene/main/node.h"
@@ -1764,7 +1765,7 @@ Variant::operator Transform() const {
if (type==TRANSFORM2D) {
return *_data._transform2d;
} else if (type==TRANSFORM) {
- const Transform& t = *_data._transform;;
+ const Transform& t = *_data._transform;
Transform2D m;
m.elements[0][0]=t.basis.elements[0][0];
m.elements[0][1]=t.basis.elements[1][0];
diff --git a/core/variant.h b/core/variant.h
index 9d29fd64c3..5936325c1b 100644
--- a/core/variant.h
+++ b/core/variant.h
@@ -33,7 +33,7 @@
@author Juan Linietsky <reduzio@gmail.com>
*/
-#include "aabb.h"
+#include "rect3.h"
#include "ustring.h"
#include "vector3.h"
#include "plane.h"
diff --git a/core/variant_call.cpp b/core/variant_call.cpp
index 51ad115d46..022faede1e 100644
--- a/core/variant_call.cpp
+++ b/core/variant_call.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "variant.h"
+
#include "object.h"
#include "os/os.h"
#include "core_string_names.h"
@@ -1052,32 +1053,32 @@ Variant Variant::construct(const Variant::Type p_type, const Variant** p_args, i
// math types
- case VECTOR2: return Vector2(); // 5
+ case VECTOR2: return Vector2(); // 5
case RECT2: return Rect2();
case VECTOR3: return Vector3();
case TRANSFORM2D: return Transform2D();
case PLANE: return Plane();
case QUAT: return Quat();
- case RECT3: return Rect3(); //sorry naming convention fail :( not like it's used often // 10
+ case RECT3: return Rect3(); // 10
case BASIS: return Basis();
case TRANSFORM: return Transform();
// misc types
case COLOR: return Color();
- case IMAGE: return Image();;
- case NODE_PATH: return NodePath();; // 15
- case _RID: return RID();;
+ case IMAGE: return Image();
+ case NODE_PATH: return NodePath(); // 15
+ case _RID: return RID();
case OBJECT: return (Object*)NULL;
- case INPUT_EVENT: return InputEvent();;
- case DICTIONARY: return Dictionary();;
- case ARRAY: return Array();; // 20
- case POOL_BYTE_ARRAY: return PoolByteArray();;
- case POOL_INT_ARRAY: return PoolIntArray();;
- case POOL_REAL_ARRAY: return PoolRealArray();;
- case POOL_STRING_ARRAY: return PoolStringArray();;
- case POOL_VECTOR2_ARRAY: return PoolVector2Array();; // 25
- case POOL_VECTOR3_ARRAY: return PoolVector3Array();; // 25
- case POOL_COLOR_ARRAY: return PoolColorArray();;
+ case INPUT_EVENT: return InputEvent();
+ case DICTIONARY: return Dictionary();
+ case ARRAY: return Array(); // 20
+ case POOL_BYTE_ARRAY: return PoolByteArray();
+ case POOL_INT_ARRAY: return PoolIntArray();
+ case POOL_REAL_ARRAY: return PoolRealArray();
+ case POOL_STRING_ARRAY: return PoolStringArray();
+ case POOL_VECTOR2_ARRAY: return PoolVector2Array(); // 25
+ case POOL_VECTOR3_ARRAY: return PoolVector3Array();
+ case POOL_COLOR_ARRAY: return PoolColorArray();
default: return Variant();
}
@@ -1126,27 +1127,27 @@ Variant Variant::construct(const Variant::Type p_type, const Variant** p_args, i
case VECTOR3: return (Vector3(*p_args[0]));
case PLANE: return (Plane(*p_args[0]));
case QUAT: return (Quat(*p_args[0]));
- case RECT3: return (Rect3(*p_args[0])); //sorry naming convention fail :( not like it's used often // 10
+ case RECT3: return (Rect3(*p_args[0])); // 10
case BASIS: return (Basis(p_args[0]->operator Basis()));
case TRANSFORM: return (Transform(p_args[0]->operator Transform()));
// misc types
case COLOR: return p_args[0]->type == Variant::STRING ? Color::html(*p_args[0]) : Color::hex(*p_args[0]);
case IMAGE: return (Image(*p_args[0]));
- case NODE_PATH: return (NodePath(p_args[0]->operator NodePath())); // 15
+ case NODE_PATH: return (NodePath(p_args[0]->operator NodePath())); // 15
case _RID: return (RID(*p_args[0]));
case OBJECT: return ((Object*)(p_args[0]->operator Object *()));
case INPUT_EVENT: return (InputEvent(*p_args[0]));
case DICTIONARY: return p_args[0]->operator Dictionary();
- case ARRAY: return p_args[0]->operator Array();
+ case ARRAY: return p_args[0]->operator Array(); // 20
// arrays
case POOL_BYTE_ARRAY: return (PoolByteArray(*p_args[0]));
case POOL_INT_ARRAY: return (PoolIntArray(*p_args[0]));
case POOL_REAL_ARRAY: return (PoolRealArray(*p_args[0]));
case POOL_STRING_ARRAY: return (PoolStringArray(*p_args[0]));
- case POOL_VECTOR2_ARRAY: return (PoolVector2Array(*p_args[0])); // 25
- case POOL_VECTOR3_ARRAY: return (PoolVector3Array(*p_args[0])); // 25
+ case POOL_VECTOR2_ARRAY: return (PoolVector2Array(*p_args[0])); // 25
+ case POOL_VECTOR3_ARRAY: return (PoolVector3Array(*p_args[0]));
case POOL_COLOR_ARRAY: return (PoolColorArray(*p_args[0]));
default: return Variant();
}
diff --git a/core/variant_construct_string.cpp b/core/variant_construct_string.cpp
index 8db756aa79..56aa9891fb 100644
--- a/core/variant_construct_string.cpp
+++ b/core/variant_construct_string.cpp
@@ -169,7 +169,7 @@ Error VariantConstruct::_get_token(const CharType *p_str, int &idx, int p_len, T
case 'r': res=13; break;
case '\"': res='\"'; break;
case '\\': res='\\'; break;
- case '/': res='/'; break; //wtf
+ case '/': res='/'; break;
case 'u': {
//hexnumbarh - oct is deprecated
diff --git a/core/variant_op.cpp b/core/variant_op.cpp
index 50f0b96715..6ed8a3dd85 100644
--- a/core/variant_op.cpp
+++ b/core/variant_op.cpp
@@ -27,9 +27,11 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "variant.h"
+
#include "object.h"
#include "script_language.h"
#include "core_string_names.h"
+
Variant::operator bool() const {
bool b;
diff --git a/core/variant_parser.cpp b/core/variant_parser.cpp
index ca748b7fd3..a833a275df 100644
--- a/core/variant_parser.cpp
+++ b/core/variant_parser.cpp
@@ -27,11 +27,11 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "variant_parser.h"
+
#include "io/resource_loader.h"
#include "os/keyboard.h"
-
CharType VariantParser::StreamFile::get_char() {
return f->get_8();
@@ -1989,7 +1989,7 @@ Error VariantWriter::write(const Variant& p_variant, StoreStringFunc p_store_str
PoolVector<uint8_t> data = img.get_data();
int len = data.size();
PoolVector<uint8_t>::Read r = data.read();
- const uint8_t *ptr=r.ptr();;
+ const uint8_t *ptr=r.ptr();
for (int i=0;i<len;i++) {
if (i>0)
@@ -2133,7 +2133,7 @@ Error VariantWriter::write(const Variant& p_variant, StoreStringFunc p_store_str
PoolVector<uint8_t> data = p_variant;
int len = data.size();
PoolVector<uint8_t>::Read r = data.read();
- const uint8_t *ptr=r.ptr();;
+ const uint8_t *ptr=r.ptr();
for (int i=0;i<len;i++) {
if (i>0)
@@ -2152,7 +2152,7 @@ Error VariantWriter::write(const Variant& p_variant, StoreStringFunc p_store_str
PoolVector<int> data = p_variant;
int len = data.size();
PoolVector<int>::Read r = data.read();
- const int *ptr=r.ptr();;
+ const int *ptr=r.ptr();
for (int i=0;i<len;i++) {
@@ -2172,7 +2172,7 @@ Error VariantWriter::write(const Variant& p_variant, StoreStringFunc p_store_str
PoolVector<real_t> data = p_variant;
int len = data.size();
PoolVector<real_t>::Read r = data.read();
- const real_t *ptr=r.ptr();;
+ const real_t *ptr=r.ptr();
for (int i=0;i<len;i++) {
@@ -2190,7 +2190,7 @@ Error VariantWriter::write(const Variant& p_variant, StoreStringFunc p_store_str
PoolVector<String> data = p_variant;
int len = data.size();
PoolVector<String>::Read r = data.read();
- const String *ptr=r.ptr();;
+ const String *ptr=r.ptr();
String s;
//write_string("\n");
@@ -2213,7 +2213,7 @@ Error VariantWriter::write(const Variant& p_variant, StoreStringFunc p_store_str
PoolVector<Vector2> data = p_variant;
int len = data.size();
PoolVector<Vector2>::Read r = data.read();
- const Vector2 *ptr=r.ptr();;
+ const Vector2 *ptr=r.ptr();
for (int i=0;i<len;i++) {
@@ -2231,7 +2231,7 @@ Error VariantWriter::write(const Variant& p_variant, StoreStringFunc p_store_str
PoolVector<Vector3> data = p_variant;
int len = data.size();
PoolVector<Vector3>::Read r = data.read();
- const Vector3 *ptr=r.ptr();;
+ const Vector3 *ptr=r.ptr();
for (int i=0;i<len;i++) {
@@ -2250,7 +2250,7 @@ Error VariantWriter::write(const Variant& p_variant, StoreStringFunc p_store_str
PoolVector<Color> data = p_variant;
int len = data.size();
PoolVector<Color>::Read r = data.read();
- const Color *ptr=r.ptr();;
+ const Color *ptr=r.ptr();
for (int i=0;i<len;i++) {
diff --git a/doc/base/classes.xml b/doc/base/classes.xml
index 0088f576f0..0b8c5cc11c 100644
--- a/doc/base/classes.xml
+++ b/doc/base/classes.xml
@@ -463,7 +463,7 @@
<argument index="1" name="to" type="float">
</argument>
<description>
- Random range, any floating point value between 'from' and 'to'
+ Random range, any floating point value between 'from' and 'to'.
</description>
</method>
<method name="rand_seed">
@@ -472,28 +472,28 @@
<argument index="0" name="seed" type="int">
</argument>
<description>
- Random from seed, pass a seed and an array with both number and new seed is returned.
+ Random from seed: pass a seed, and an array with both number and new seed is returned. "Seed" here refers to the internal state of the pseudo random number generator. The internal state of the current implementation is 64 bits.
</description>
</method>
<method name="randf">
<return type="float">
</return>
<description>
- Random value (0 to 1 float).
+ Return a random floating point value between 0 and 1.
</description>
</method>
<method name="randi">
<return type="int">
</return>
<description>
- Random 32 bits value (integer). To obtain a value from 0 to N, you can use remainder, like (for random from 0 to 19): randi() % 20.
+ Return a random 32 bits integer value. To obtain a random value between 0 to N (where N is smaller than 2^32 - 1), you can use remainder. For example, to get a random integer between 0 and 19 inclusive, you can use randi() % 20.
</description>
</method>
<method name="randomize">
<return type="Nil">
</return>
<description>
- Reset the seed of the random number generator with a new, different one.
+ Randomize the seed (or the internal state) of the random number generator. Current implementation reseeds using a number based on time.
</description>
</method>
<method name="range">
diff --git a/drivers/alsa/audio_driver_alsa.cpp b/drivers/alsa/audio_driver_alsa.cpp
index b026241579..8984d412a3 100644
--- a/drivers/alsa/audio_driver_alsa.cpp
+++ b/drivers/alsa/audio_driver_alsa.cpp
@@ -30,11 +30,9 @@
#ifdef ALSA_ENABLED
-#include <errno.h>
#include "globals.h"
-
-
+#include <errno.h>
Error AudioDriverALSA::init() {
@@ -46,7 +44,7 @@ Error AudioDriverALSA::init() {
samples_out = NULL;
mix_rate = GLOBAL_DEF("audio/mix_rate",44100);
- output_format = OUTPUT_STEREO;
+ speaker_mode = SPEAKER_MODE_STEREO;
channels = 2;
@@ -205,16 +203,18 @@ int AudioDriverALSA::get_mix_rate() const {
return mix_rate;
};
-AudioDriverSW::OutputFormat AudioDriverALSA::get_output_format() const {
+AudioDriver::SpeakerMode AudioDriverALSA::get_speaker_mode() const {
- return output_format;
+ return speaker_mode;
};
+
void AudioDriverALSA::lock() {
if (!thread || !mutex)
return;
mutex->lock();
};
+
void AudioDriverALSA::unlock() {
if (!thread || !mutex)
diff --git a/drivers/alsa/audio_driver_alsa.h b/drivers/alsa/audio_driver_alsa.h
index df28294f56..6ab98312b2 100644
--- a/drivers/alsa/audio_driver_alsa.h
+++ b/drivers/alsa/audio_driver_alsa.h
@@ -26,7 +26,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "servers/audio/audio_server_sw.h"
+#include "servers/audio_server.h"
#ifdef ALSA_ENABLED
@@ -35,7 +35,7 @@
#include <alsa/asoundlib.h>
-class AudioDriverALSA : public AudioDriverSW {
+class AudioDriverALSA : public AudioDriver {
Thread* thread;
Mutex* mutex;
@@ -48,7 +48,7 @@ class AudioDriverALSA : public AudioDriverSW {
static void thread_func(void* p_udata);
unsigned int mix_rate;
- OutputFormat output_format;
+ SpeakerMode speaker_mode;
snd_pcm_uframes_t buffer_size;
snd_pcm_uframes_t period_size;
@@ -68,7 +68,7 @@ public:
virtual Error init();
virtual void start();
virtual int get_mix_rate() const;
- virtual OutputFormat get_output_format() const;
+ virtual SpeakerMode get_speaker_mode() const;
virtual void lock();
virtual void unlock();
virtual void finish();
diff --git a/drivers/convex_decomp/b2Polygon.cpp b/drivers/convex_decomp/b2Polygon.cpp
index f45d98250a..b6ead62c63 100644
--- a/drivers/convex_decomp/b2Polygon.cpp
+++ b/drivers/convex_decomp/b2Polygon.cpp
@@ -353,7 +353,7 @@ bool b2Polygon::IsUsable(bool printErrors){
b2Vec2 centroid = PolyCentroid(vertices,nVertices);
b2Vec2 n1 = normals[iminus];
b2Vec2 n2 = normals[i];
- b2Vec2 v = vertices[i] - centroid;;
+ b2Vec2 v = vertices[i] - centroid;
b2Vec2 d;
d.x = b2Dot(n1, v) - toiSlop;
diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp
index 760af5100c..1486e85a04 100644
--- a/drivers/gles2/rasterizer_gles2.cpp
+++ b/drivers/gles2/rasterizer_gles2.cpp
@@ -3259,7 +3259,7 @@ void RasterizerGLES2::particles_set_emitting(RID p_particles, bool p_emitting) {
Particles* particles = particles_owner.get( p_particles );
ERR_FAIL_COND(!particles);
- particles->data.emitting=p_emitting;;
+ particles->data.emitting=p_emitting;
}
bool RasterizerGLES2::particles_is_emitting(RID p_particles) const {
@@ -3468,7 +3468,7 @@ void RasterizerGLES2::particles_set_attractor_pos(RID p_particles, int p_attract
Particles* particles = particles_owner.get( p_particles );
ERR_FAIL_COND(!particles);
ERR_FAIL_INDEX(p_attractor,particles->data.attractor_count);
- particles->data.attractors[p_attractor].pos=p_pos;;
+ particles->data.attractors[p_attractor].pos=p_pos;
}
Vector3 RasterizerGLES2::particles_get_attractor_pos(RID p_particles,int p_attractor) const {
diff --git a/drivers/gles2/rasterizer_gles2.h b/drivers/gles2/rasterizer_gles2.h
index f04b035560..ddcd97ec4a 100644
--- a/drivers/gles2/rasterizer_gles2.h
+++ b/drivers/gles2/rasterizer_gles2.h
@@ -1429,7 +1429,7 @@ public:
virtual void multimesh_instance_set_color(RID p_multimesh,int p_index,const Color& p_color);
virtual RID multimesh_get_mesh(RID p_multimesh) const;
- virtual AABB multimesh_get_aabb(RID p_multimesh) const;;
+ virtual AABB multimesh_get_aabb(RID p_multimesh) const;
virtual Transform multimesh_instance_get_transform(RID p_multimesh,int p_index) const;
virtual Color multimesh_instance_get_color(RID p_multimesh,int p_index) const;
diff --git a/drivers/gles2/shader_compiler_gles2.cpp b/drivers/gles2/shader_compiler_gles2.cpp
index 247a35141e..a5aa570e33 100644
--- a/drivers/gles2/shader_compiler_gles2.cpp
+++ b/drivers/gles2/shader_compiler_gles2.cpp
@@ -441,7 +441,8 @@ String ShaderCompilerGLES2::dump_node_code(SL::Node *p_node,int p_level,bool p_a
} else if (custom_h && callfunc=="cosh_custom") {
if (!cosh_used) {
- global_code= "float cosh_custom(float val)\n"\
+ global_code=
+ "float cosh_custom(float val)\n"\
"{\n"\
" float tmp = exp(val);\n"\
" float cosH = (tmp + 1.0 / tmp) / 2.0;\n"\
@@ -453,7 +454,8 @@ String ShaderCompilerGLES2::dump_node_code(SL::Node *p_node,int p_level,bool p_a
} else if (custom_h && callfunc=="sinh_custom") {
if (!sinh_used) {
- global_code= "float sinh_custom(float val)\n"\
+ global_code=
+ "float sinh_custom(float val)\n"\
"{\n"\
" float tmp = exp(val);\n"\
" float sinH = (tmp - 1.0 / tmp) / 2.0;\n"\
@@ -465,7 +467,8 @@ String ShaderCompilerGLES2::dump_node_code(SL::Node *p_node,int p_level,bool p_a
} else if (custom_h && callfunc=="tanh_custom") {
if (!tanh_used) {
- global_code= "float tanh_custom(float val)\n"\
+ global_code=
+ "float tanh_custom(float val)\n"\
"{\n"\
" float tmp = exp(val);\n"\
" float tanH = (tmp - 1.0 / tmp) / (tmp + 1.0 / tmp);\n"\
diff --git a/drivers/gles3/rasterizer_canvas_gles3.cpp b/drivers/gles3/rasterizer_canvas_gles3.cpp
index c10611c961..458da85e74 100644
--- a/drivers/gles3/rasterizer_canvas_gles3.cpp
+++ b/drivers/gles3/rasterizer_canvas_gles3.cpp
@@ -1,6 +1,11 @@
#include "rasterizer_canvas_gles3.h"
#include "os/os.h"
+#ifdef IPHONE_ENABLED
+// for some reason glClearDepth seems to have been removed in iOS ES3.h
+#define glClearDepth glClearDepthf
+#endif
+
static _FORCE_INLINE_ void store_transform2d(const Transform2D& p_mtx, float* p_array) {
p_array[ 0]=p_mtx.elements[0][0];
@@ -87,7 +92,7 @@ void RasterizerCanvasGLES3::light_internal_update(RID p_rid, Light* p_light) {
if (p_light->radius_cache==0)
li->ubo_data.shadow_gradient=0;
else
- li->ubo_data.shadow_gradient=p_light->shadow_gradient_length/(p_light->radius_cache*1.1);;
+ li->ubo_data.shadow_gradient=p_light->shadow_gradient_length/(p_light->radius_cache*1.1);
li->ubo_data.shadow_distance_mult=(p_light->radius_cache*1.1);
diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp
index b7616db8b1..5c6b9c5410 100644
--- a/drivers/gles3/rasterizer_gles3.cpp
+++ b/drivers/gles3/rasterizer_gles3.cpp
@@ -237,7 +237,7 @@ void RasterizerGLES3::set_current_render_target(RID p_render_target){
storage->frame.current_rt=NULL;
storage->frame.clear_request=false;
glViewport(0,0,OS::get_singleton()->get_window_size().width,OS::get_singleton()->get_window_size().height);
- glBindFramebuffer(GL_FRAMEBUFFER,storage->config.system_fbo);
+ glBindFramebuffer(GL_FRAMEBUFFER,RasterizerStorageGLES3::system_fbo);
}
}
@@ -268,7 +268,7 @@ void RasterizerGLES3::blit_render_target_to_screen(RID p_render_target,const Rec
canvas->canvas_begin();
glDisable(GL_BLEND);
- glBindFramebuffer(GL_FRAMEBUFFER,storage->config.system_fbo);
+ glBindFramebuffer(GL_FRAMEBUFFER,RasterizerStorageGLES3::system_fbo);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D,rt->color);
canvas->draw_generic_textured_rect(p_screen_rect,Rect2(0,0,1,-1));
diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp
index 1b531a69b9..f47fcfcd9b 100644
--- a/drivers/gles3/rasterizer_scene_gles3.cpp
+++ b/drivers/gles3/rasterizer_scene_gles3.cpp
@@ -3,6 +3,11 @@
#include "os/os.h"
#include "rasterizer_canvas_gles3.h"
+#ifdef IPHONE_ENABLED
+// for some reason glClearDepth seems to have been removed in iOS ES3.h
+#define glClearDepth glClearDepthf
+#endif
+
static const GLenum _cube_side_enum[6]={
GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
@@ -141,7 +146,7 @@ void RasterizerSceneGLES3::shadow_atlas_set_size(RID p_atlas,int p_size){
GL_TEXTURE_2D, shadow_atlas->depth, 0);
glViewport(0,0,shadow_atlas->size,shadow_atlas->size);
- glClearDepth(0);
+ glClearDepth(0.0f);
glClear(GL_DEPTH_BUFFER_BIT);
}
@@ -2270,9 +2275,9 @@ void RasterizerSceneGLES3::_setup_directional_light(int p_index,const Transform&
float sign = li->light_ptr->negative?-1:1;
Color linear_col = li->light_ptr->color.to_linear();
- ubo_data.light_color_energy[0]=linear_col.r*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];;
- ubo_data.light_color_energy[1]=linear_col.g*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];;
- ubo_data.light_color_energy[2]=linear_col.b*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];;
+ ubo_data.light_color_energy[0]=linear_col.r*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];
+ ubo_data.light_color_energy[1]=linear_col.g*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];
+ ubo_data.light_color_energy[2]=linear_col.b*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];
ubo_data.light_color_energy[3]=0;
//omni, keep at 0
@@ -2427,9 +2432,9 @@ void RasterizerSceneGLES3::_setup_lights(RID *p_light_cull_result,int p_light_cu
float sign = li->light_ptr->negative?-1:1;
Color linear_col = li->light_ptr->color.to_linear();
- ubo_data.light_color_energy[0]=linear_col.r*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];;
- ubo_data.light_color_energy[1]=linear_col.g*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];;
- ubo_data.light_color_energy[2]=linear_col.b*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];;
+ ubo_data.light_color_energy[0]=linear_col.r*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];
+ ubo_data.light_color_energy[1]=linear_col.g*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];
+ ubo_data.light_color_energy[2]=linear_col.b*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];
ubo_data.light_color_energy[3]=0;
@@ -2520,9 +2525,9 @@ void RasterizerSceneGLES3::_setup_lights(RID *p_light_cull_result,int p_light_cu
float sign = li->light_ptr->negative?-1:1;
Color linear_col = li->light_ptr->color.to_linear();
- ubo_data.light_color_energy[0]=linear_col.r*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];;
- ubo_data.light_color_energy[1]=linear_col.g*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];;
- ubo_data.light_color_energy[2]=linear_col.b*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];;
+ ubo_data.light_color_energy[0]=linear_col.r*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];
+ ubo_data.light_color_energy[1]=linear_col.g*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];
+ ubo_data.light_color_energy[2]=linear_col.b*sign*li->light_ptr->param[VS::LIGHT_PARAM_ENERGY];
ubo_data.light_color_energy[3]=0;
Vector3 pos = p_camera_inverse_transform.xform(li->transform.origin);
@@ -3753,8 +3758,7 @@ void RasterizerSceneGLES3::render_scene(const Transform& p_cam_transform,const C
glViewport(0,0,storage->frame.current_rt->width,storage->frame.current_rt->height);
glColorMask(0,0,0,0);
-
- glClearDepth(1.0);
+ glClearDepth(1.0f);
glClear(GL_DEPTH_BUFFER_BIT);
@@ -3866,7 +3870,7 @@ void RasterizerSceneGLES3::render_scene(const Transform& p_cam_transform,const C
}
if (!fb_cleared) {
- glClearDepth(1.0);
+ glClearDepth(1.0f);
glClear(GL_DEPTH_BUFFER_BIT);
}
@@ -3973,7 +3977,6 @@ void RasterizerSceneGLES3::render_scene(const Transform& p_cam_transform,const C
_render_mrts(env,p_cam_projection);
}
- glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
glEnable(GL_BLEND);
glDepthMask(GL_TRUE);
glEnable(GL_DEPTH_TEST);
@@ -4419,7 +4422,7 @@ void RasterizerSceneGLES3::render_shadow(RID p_light,RID p_shadow_atlas,int p_pa
}
glEnable(GL_SCISSOR_TEST);
- glClearDepth(1.0);
+ glClearDepth(1.0f);
glClear(GL_DEPTH_BUFFER_BIT);
glDisable(GL_SCISSOR_TEST);
@@ -4472,7 +4475,7 @@ void RasterizerSceneGLES3::render_shadow(RID p_light,RID p_shadow_atlas,int p_pa
glViewport(local_x,local_y,local_width,local_height);
glScissor(local_x,local_y,local_width,local_height);
glEnable(GL_SCISSOR_TEST);
- glClearDepth(1.0);
+ glClearDepth(1.0f);
glClear(GL_DEPTH_BUFFER_BIT);
glDisable(GL_SCISSOR_TEST);
//glDisable(GL_DEPTH_TEST);
diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp
index f096719988..9f1ff396f1 100644
--- a/drivers/gles3/rasterizer_storage_gles3.cpp
+++ b/drivers/gles3/rasterizer_storage_gles3.cpp
@@ -78,6 +78,8 @@
#define _EXT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
#define _EXT_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
+GLuint RasterizerStorageGLES3::system_fbo = 0;
+
Image RasterizerStorageGLES3::_get_gl_image_and_format(const Image& p_image, Image::Format p_format, uint32_t p_flags,GLenum& r_gl_format,GLenum& r_gl_internal_format,GLenum &r_gl_type,bool &r_compressed,bool &srgb) {
@@ -133,8 +135,12 @@ Image RasterizerStorageGLES3::_get_gl_image_and_format(const Image& p_image, Ima
} break;
case Image::FORMAT_RGB565: {
+#ifdef IPHONE_ENABLED
+ r_gl_internal_format=GL_RGB565;
+#else
//#warning TODO: Convert tod 555 if 565 is not supported (GLES3.3-)
r_gl_internal_format=GL_RGB5;
+#endif
//r_gl_internal_format=GL_RGB565;
r_gl_format=GL_RGB;
r_gl_type=GL_UNSIGNED_SHORT_5_6_5;
@@ -1186,7 +1192,7 @@ RID RasterizerStorageGLES3::texture_create_radiance_cubemap(RID p_source,int p_r
glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
- glBindFramebuffer(GL_FRAMEBUFFER, config.system_fbo);
+ glBindFramebuffer(GL_FRAMEBUFFER, RasterizerStorageGLES3::system_fbo);
glDeleteFramebuffers(1, &tmp_fb);
Texture * ctex = memnew( Texture );
@@ -1351,7 +1357,7 @@ void RasterizerStorageGLES3::skybox_set_texture(RID p_skybox, RID p_cube_map, in
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- glBindFramebuffer(GL_FRAMEBUFFER, config.system_fbo);
+ glBindFramebuffer(GL_FRAMEBUFFER, RasterizerStorageGLES3::system_fbo);
glDeleteFramebuffers(1, &tmp_fb);
}
@@ -5523,7 +5529,7 @@ void RasterizerStorageGLES3::_render_target_allocate(RenderTarget *rt){
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, rt->color, 0);
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
- glBindFramebuffer(GL_FRAMEBUFFER, config.system_fbo);
+ glBindFramebuffer(GL_FRAMEBUFFER, RasterizerStorageGLES3::system_fbo);
ERR_FAIL_COND( status != GL_FRAMEBUFFER_COMPLETE );
@@ -5610,7 +5616,7 @@ void RasterizerStorageGLES3::_render_target_allocate(RenderTarget *rt){
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
- glBindFramebuffer(GL_FRAMEBUFFER, config.system_fbo);
+ glBindFramebuffer(GL_FRAMEBUFFER, RasterizerStorageGLES3::system_fbo);
if (status != GL_FRAMEBUFFER_COMPLETE) {
printf("err status: %x\n",status);
@@ -5643,7 +5649,7 @@ void RasterizerStorageGLES3::_render_target_allocate(RenderTarget *rt){
ERR_FAIL_COND( status != GL_FRAMEBUFFER_COMPLETE );
}
- glBindFramebuffer(GL_FRAMEBUFFER, config.system_fbo);
+ glBindFramebuffer(GL_FRAMEBUFFER, RasterizerStorageGLES3::system_fbo);
if (status != GL_FRAMEBUFFER_COMPLETE) {
_render_target_clear(rt);
@@ -5712,7 +5718,7 @@ void RasterizerStorageGLES3::_render_target_allocate(RenderTarget *rt){
}
- glBindFramebuffer(GL_FRAMEBUFFER, config.system_fbo);
+ glBindFramebuffer(GL_FRAMEBUFFER, RasterizerStorageGLES3::system_fbo);
rt->effects.mip_maps[i].levels=level;
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
@@ -5941,7 +5947,7 @@ RID RasterizerStorageGLES3::canvas_light_shadow_buffer_create(int p_width) {
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
//printf("errnum: %x\n",status);
- glBindFramebuffer(GL_FRAMEBUFFER, config.system_fbo);
+ glBindFramebuffer(GL_FRAMEBUFFER, RasterizerStorageGLES3::system_fbo);
ERR_FAIL_COND_V( status != GL_FRAMEBUFFER_COMPLETE, RID() );
@@ -6296,7 +6302,7 @@ void RasterizerStorageGLES3::initialize() {
config.render_arch=RENDER_ARCH_DESKTOP;
//config.fbo_deferred=int(Globals::get_singleton()->get("rendering/gles3/lighting_technique"));
- config.system_fbo=0;
+ RasterizerStorageGLES3::system_fbo=0;
//// extensions config
@@ -6463,7 +6469,7 @@ void RasterizerStorageGLES3::initialize() {
glBufferData(GL_ARRAY_BUFFER,xf_feedback_size*1024,NULL,GL_STREAM_DRAW);
}
- shaders.blend_shapes.init();;
+ shaders.blend_shapes.init();
glGenVertexArrays(1,&resources.transform_feedback_array);
diff --git a/drivers/gles3/rasterizer_storage_gles3.h b/drivers/gles3/rasterizer_storage_gles3.h
index f9e440288f..c8f04f72c1 100644
--- a/drivers/gles3/rasterizer_storage_gles3.h
+++ b/drivers/gles3/rasterizer_storage_gles3.h
@@ -24,6 +24,7 @@ public:
RasterizerCanvasGLES3 *canvas;
RasterizerSceneGLES3 *scene;
+ static GLuint system_fbo; //on some devices, such as apple, screen is rendered to yet another fbo.
enum RenderArchitecture {
RENDER_ARCH_MOBILE,
@@ -34,8 +35,6 @@ public:
RenderArchitecture render_arch;
- GLuint system_fbo; //on some devices, such as apple, screen is rendered to yet another fbo.
-
bool shrink_textures_x2;
bool use_fast_texture_filter;
bool use_anisotropic_filter;
@@ -1011,7 +1010,7 @@ public:
Particles() : particle_element(this) {
emitting=false;
amount=0;
- lifetime=1.0;;
+ lifetime=1.0;
pre_process_time=0.0;
explosiveness=0.0;
randomness=0.0;
diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.cpp b/drivers/pulseaudio/audio_driver_pulseaudio.cpp
index 3a1317cbf6..14b1b229b2 100644
--- a/drivers/pulseaudio/audio_driver_pulseaudio.cpp
+++ b/drivers/pulseaudio/audio_driver_pulseaudio.cpp
@@ -44,7 +44,7 @@ Error AudioDriverPulseAudio::init() {
samples_out = NULL;
mix_rate = GLOBAL_DEF("audio/mix_rate",44100);
- output_format = OUTPUT_STEREO;
+ speaker_mode = SPEAKER_MODE_STEREO;
channels = 2;
pa_sample_spec spec;
@@ -149,9 +149,9 @@ int AudioDriverPulseAudio::get_mix_rate() const {
return mix_rate;
}
-AudioDriverSW::OutputFormat AudioDriverPulseAudio::get_output_format() const {
+AudioDriver::SpeakerMode AudioDriverPulseAudio::get_speaker_mode() const {
- return output_format;
+ return speaker_mode;
}
void AudioDriverPulseAudio::lock() {
diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.h b/drivers/pulseaudio/audio_driver_pulseaudio.h
index aa7b7a9188..36ae8c2e53 100644
--- a/drivers/pulseaudio/audio_driver_pulseaudio.h
+++ b/drivers/pulseaudio/audio_driver_pulseaudio.h
@@ -26,7 +26,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "servers/audio/audio_server_sw.h"
+#include "servers/audio_server.h"
#ifdef PULSEAUDIO_ENABLED
@@ -35,7 +35,7 @@
#include <pulse/simple.h>
-class AudioDriverPulseAudio : public AudioDriverSW {
+class AudioDriverPulseAudio : public AudioDriver{
Thread* thread;
Mutex* mutex;
@@ -48,7 +48,7 @@ class AudioDriverPulseAudio : public AudioDriverSW {
static void thread_func(void* p_udata);
unsigned int mix_rate;
- OutputFormat output_format;
+ SpeakerMode speaker_mode;
unsigned int buffer_size;
int channels;
@@ -69,7 +69,7 @@ public:
virtual Error init();
virtual void start();
virtual int get_mix_rate() const;
- virtual OutputFormat get_output_format() const;
+ virtual SpeakerMode get_speaker_mode() const;
virtual void lock();
virtual void unlock();
virtual void finish();
diff --git a/drivers/rtaudio/audio_driver_rtaudio.cpp b/drivers/rtaudio/audio_driver_rtaudio.cpp
index 850e5ab053..6ada0aaa68 100644
--- a/drivers/rtaudio/audio_driver_rtaudio.cpp
+++ b/drivers/rtaudio/audio_driver_rtaudio.cpp
@@ -71,7 +71,7 @@ int AudioDriverRtAudio::callback( void *outputBuffer, void *inputBuffer, unsigne
self->audio_server_process(nBufferFrames,buffer);
- self->mutex->unlock();;
+ self->mutex->unlock();
return 0;
}
@@ -85,6 +85,8 @@ Error AudioDriverRtAudio::init() {
ERR_EXPLAIN("Cannot initialize RtAudio audio driver: No devices present.")
ERR_FAIL_COND_V( dac->getDeviceCount() < 1, ERR_UNAVAILABLE );
+ // FIXME: Adapt to the OutputFormat -> SpeakerMode change
+ /*
String channels = GLOBAL_DEF("audio/output","stereo");
if (channels=="5.1")
@@ -95,6 +97,7 @@ Error AudioDriverRtAudio::init() {
output_format=OUTPUT_MONO;
else
output_format=OUTPUT_STEREO;
+ */
RtAudio::StreamParameters parameters;
parameters.deviceId = dac->getDefaultOutputDevice();
@@ -125,11 +128,10 @@ Error AudioDriverRtAudio::init() {
while(true) {
while( true) {
- switch(output_format) {
- case OUTPUT_MONO: parameters.nChannels = 1; break;
- case OUTPUT_STEREO: parameters.nChannels = 2; break;
- case OUTPUT_QUAD: parameters.nChannels = 4; break;
- case OUTPUT_5_1: parameters.nChannels = 6; break;
+ switch(speaker_mode) {
+ case SPEAKER_MODE_STEREO: parameters.nChannels = 2; break;
+ case SPEAKER_SURROUND_51: parameters.nChannels = 6; break;
+ case SPEAKER_SURROUND_71: parameters.nChannels = 8; break;
};
try {
@@ -142,11 +144,10 @@ Error AudioDriverRtAudio::init() {
// try with less channels
ERR_PRINT("Unable to open audio, retrying with fewer channels..");
- switch(output_format) {
- case OUTPUT_MONO: ERR_EXPLAIN("Unable to open audio."); ERR_FAIL_V( ERR_UNAVAILABLE ); break;
- case OUTPUT_STEREO: output_format=OUTPUT_MONO; break;
- case OUTPUT_QUAD: output_format=OUTPUT_STEREO; break;
- case OUTPUT_5_1: output_format=OUTPUT_QUAD; break;
+ switch(speaker_mode) {
+ case SPEAKER_MODE_STEREO: speaker_mode=SPEAKER_MODE_STEREO; break;
+ case SPEAKER_SURROUND_51: speaker_mode=SPEAKER_SURROUND_51; break;
+ case SPEAKER_SURROUND_71: speaker_mode=SPEAKER_SURROUND_71; break;
};
}
}
@@ -189,9 +190,9 @@ int AudioDriverRtAudio::get_mix_rate() const {
return mix_rate;
}
-AudioDriverSW::OutputFormat AudioDriverRtAudio::get_output_format() const {
+AudioDriver::SpeakerMode AudioDriverRtAudio::get_speaker_mode() const {
- return output_format;
+ return speaker_mode;
}
void AudioDriverRtAudio::start() {
@@ -229,7 +230,7 @@ AudioDriverRtAudio::AudioDriverRtAudio()
mutex=NULL;
mix_rate=44100;
- output_format=OUTPUT_STEREO;
+ speaker_mode=SPEAKER_MODE_STEREO;
}
diff --git a/drivers/rtaudio/audio_driver_rtaudio.h b/drivers/rtaudio/audio_driver_rtaudio.h
index aa7fae038a..3f293db6a6 100644
--- a/drivers/rtaudio/audio_driver_rtaudio.h
+++ b/drivers/rtaudio/audio_driver_rtaudio.h
@@ -31,16 +31,16 @@
#ifdef RTAUDIO_ENABLED
-#include "servers/audio/audio_server_sw.h"
+#include "servers/audio_server.h"
#include <RtAudio.h>
-class AudioDriverRtAudio : public AudioDriverSW {
+class AudioDriverRtAudio : public AudioDriver {
static int callback( void *outputBuffer, void *inputBuffer, unsigned int nBufferFrames,
double streamTime, RtAudioStreamStatus status, void *userData );
- OutputFormat output_format;
+ SpeakerMode speaker_mode;
Mutex *mutex;
RtAudio *dac;
int mix_rate;
@@ -53,7 +53,7 @@ public:
virtual Error init();
virtual void start();
virtual int get_mix_rate() const ;
- virtual OutputFormat get_output_format() const;
+ virtual SpeakerMode get_speaker_mode() const;
virtual void lock();
virtual void unlock();
virtual void finish();
diff --git a/drivers/windows/file_access_windows.cpp b/drivers/windows/file_access_windows.cpp
index 183cec96ec..894b49231b 100644
--- a/drivers/windows/file_access_windows.cpp
+++ b/drivers/windows/file_access_windows.cpp
@@ -50,7 +50,7 @@ void FileAccessWindows::check_errors() const {
if (feof(f)) {
- last_error=ERR_FILE_EOF;;
+ last_error=ERR_FILE_EOF;
}
}
diff --git a/drivers/xaudio2/audio_driver_xaudio2.cpp b/drivers/xaudio2/audio_driver_xaudio2.cpp
index 5be857164c..fa55c97325 100644
--- a/drivers/xaudio2/audio_driver_xaudio2.cpp
+++ b/drivers/xaudio2/audio_driver_xaudio2.cpp
@@ -46,7 +46,8 @@ Error AudioDriverXAudio2::init() {
mix_rate = 48000;
- output_format = OUTPUT_STEREO;
+ // FIXME: speaker_mode seems unused in the Xaudio2 driver so far
+ speaker_mode = SPEAKER_MODE_STEREO;
channels = 2;
int latency = GLOBAL_DEF("audio/output_latency", 25);
@@ -156,9 +157,9 @@ int AudioDriverXAudio2::get_mix_rate() const {
return mix_rate;
};
-AudioDriverSW::OutputFormat AudioDriverXAudio2::get_output_format() const {
+AudioDriver::SpeakerMode AudioDriverXAudio2::get_speaker_mode() const {
- return output_format;
+ return speaker_mode;
};
float AudioDriverXAudio2::get_latency() {
diff --git a/drivers/xaudio2/audio_driver_xaudio2.h b/drivers/xaudio2/audio_driver_xaudio2.h
index ad880b24d5..afafb84c23 100644
--- a/drivers/xaudio2/audio_driver_xaudio2.h
+++ b/drivers/xaudio2/audio_driver_xaudio2.h
@@ -29,8 +29,7 @@
#ifndef AUDIO_DRIVER_XAUDIO2_H
#define AUDIO_DRIVER_XAUDIO2_H
-#include "servers/audio/audio_server_sw.h"
-
+#include "servers/audio_server.h"
#include "core/os/thread.h"
#include "core/os/mutex.h"
@@ -40,7 +39,7 @@
#include <xaudio2.h>
#include <wrl/client.h>
-class AudioDriverXAudio2 : public AudioDriverSW {
+class AudioDriverXAudio2 : public AudioDriver {
enum {
AUDIO_BUFFERS = 2
@@ -72,7 +71,7 @@ class AudioDriverXAudio2 : public AudioDriverSW {
int buffer_size;
unsigned int mix_rate;
- OutputFormat output_format;
+ SpeakerMode speaker_mode;
int channels;
@@ -96,7 +95,7 @@ public:
virtual Error init();
virtual void start();
virtual int get_mix_rate() const;
- virtual OutputFormat get_output_format() const;
+ virtual SpeakerMode get_speaker_mode() const;
virtual float get_latency();
virtual void lock();
virtual void unlock();
diff --git a/main/input_default.cpp b/main/input_default.cpp
index a7d06dbdbe..ea4e3f9505 100644
--- a/main/input_default.cpp
+++ b/main/input_default.cpp
@@ -568,8 +568,7 @@ void InputDefault::set_mouse_in_window(bool p_in_window) {
}
// from github.com/gabomdq/SDL_GameControllerDB
-static const char *s_ControllerMappings [] =
-{
+static const char *s_ControllerMappings [] = {
#ifdef WINDOWS_ENABLED
"00f00300000000000000504944564944,RetroUSB.com RetroPad,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,",
"00f0f100000000000000504944564944,RetroUSB.com Super RetroPort,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,",
diff --git a/main/main.cpp b/main/main.cpp
index e7dca04c2a..559f5e359b 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -42,7 +42,7 @@
#include "input_map.h"
#include "io/resource_loader.h"
#include "scene/main/scene_main_loop.h"
-
+#include "servers/audio_server.h"
#include "script_language.h"
#include "io/resource_loader.h"
@@ -63,8 +63,6 @@
#include "tools/doc/doc_data.h"
-#include "servers/spatial_sound_server.h"
-#include "servers/spatial_sound_2d_server.h"
#include "servers/physics_2d_server.h"
@@ -83,6 +81,7 @@ static Engine *engine=NULL;
static InputMap *input_map=NULL;
static bool _start_success=false;
static ScriptDebugger *script_debugger=NULL;
+AudioServer *audio_server=NULL;
static MessageQueue *message_queue=NULL;
static Performance *performance = NULL;
@@ -908,6 +907,11 @@ Error Main::setup2() {
OS::get_singleton()->set_window_position(init_custom_pos);
}
+ //right moment to create and initialize the audio server
+
+ audio_server = memnew( AudioServer );
+ audio_server->init();
+
OS::get_singleton()->set_use_vsync(use_vsync);
register_core_singletons();
@@ -1374,7 +1378,7 @@ bool Main::start() {
DirAccess *da = DirAccess::open(local_game_path.substr(0,sep));
if (da) {
- local_game_path=da->get_current_dir()+"/"+local_game_path.substr(sep+1,local_game_path.length());;
+ local_game_path=da->get_current_dir()+"/"+local_game_path.substr(sep+1,local_game_path.length());
memdelete(da);
}
}
@@ -1522,7 +1526,7 @@ bool Main::start() {
//sml->get_root()->add_child(scene);
sml->add_current_scene(scene);
- String iconpath = GLOBAL_DEF("application/icon","Variant()""");
+ String iconpath = GLOBAL_DEF("application/icon","Variant()");
if (iconpath!="") {
Image icon;
if (icon.load(iconpath)==OK)
@@ -1657,11 +1661,6 @@ bool Main::iteration() {
OS::get_singleton()->get_main_loop()->idle( step*time_scale );
message_queue->flush();
- if (SpatialSoundServer::get_singleton())
- SpatialSoundServer::get_singleton()->update( step*time_scale );
- if (SpatialSound2DServer::get_singleton())
- SpatialSound2DServer::get_singleton()->update( step*time_scale );
-
VisualServer::get_singleton()->sync(); //sync if still drawing from previous frames.
@@ -1764,6 +1763,11 @@ void Main::cleanup() {
OS::get_singleton()->_execpath="";
OS::get_singleton()->_local_clipboard="";
+ if (audio_server) {
+ memdelete(audio_server);
+ }
+
+
#ifdef TOOLS_ENABLED
EditorNode::unregister_editor_types();
#endif
@@ -1775,6 +1779,7 @@ void Main::cleanup() {
OS::get_singleton()->finalize();
+
if (packed_data)
memdelete(packed_data);
if (file_access_network_client)
diff --git a/main/performance.cpp b/main/performance.cpp
index 91df55a21c..50ca594f8e 100644
--- a/main/performance.cpp
+++ b/main/performance.cpp
@@ -141,9 +141,9 @@ float Performance::get_monitor(Monitor p_monitor) const {
};
case RENDER_OBJECTS_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_OBJECTS_IN_FRAME);
case RENDER_VERTICES_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_VERTICES_IN_FRAME);
- case RENDER_MATERIAL_CHANGES_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_MATERIAL_CHANGES_IN_FRAME);;
- case RENDER_SHADER_CHANGES_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_SHADER_CHANGES_IN_FRAME);;
- case RENDER_SURFACE_CHANGES_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_SURFACE_CHANGES_IN_FRAME);;
+ case RENDER_MATERIAL_CHANGES_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_MATERIAL_CHANGES_IN_FRAME);
+ case RENDER_SHADER_CHANGES_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_SHADER_CHANGES_IN_FRAME);
+ case RENDER_SURFACE_CHANGES_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_SURFACE_CHANGES_IN_FRAME);
case RENDER_DRAW_CALLS_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_DRAW_CALLS_IN_FRAME);
case RENDER_VIDEO_MEM_USED: return VS::get_singleton()->get_render_info(VS::INFO_VIDEO_MEM_USED);
case RENDER_TEXTURE_MEM_USED: return VS::get_singleton()->get_render_info(VS::INFO_TEXTURE_MEM_USED);
diff --git a/main/tests/test_gdscript.cpp b/main/tests/test_gdscript.cpp
index 4f4e76d517..7fdfef5f3c 100644
--- a/main/tests/test_gdscript.cpp
+++ b/main/tests/test_gdscript.cpp
@@ -219,7 +219,7 @@ static String _parser_expr(const GDParser::Node *p_expr) {
case GDParser::OperatorNode::OP_ASSIGN_BIT_AND: { txt=_parser_expr(c_node->arguments[0])+"&="+_parser_expr(c_node->arguments[1]); } break;
case GDParser::OperatorNode::OP_ASSIGN_BIT_OR: { txt=_parser_expr(c_node->arguments[0])+"|="+_parser_expr(c_node->arguments[1]); } break;
case GDParser::OperatorNode::OP_ASSIGN_BIT_XOR: { txt=_parser_expr(c_node->arguments[0])+"^="+_parser_expr(c_node->arguments[1]); } break;
- case GDParser::OperatorNode::OP_BIT_AND: { txt=_parser_expr(c_node->arguments[0])+"&"+_parser_expr(c_node->arguments[1]); } break;;
+ case GDParser::OperatorNode::OP_BIT_AND: { txt=_parser_expr(c_node->arguments[0])+"&"+_parser_expr(c_node->arguments[1]); } break;
case GDParser::OperatorNode::OP_BIT_OR: { txt=_parser_expr(c_node->arguments[0])+"|"+_parser_expr(c_node->arguments[1]); } break;
case GDParser::OperatorNode::OP_BIT_XOR: { txt=_parser_expr(c_node->arguments[0])+"^"+_parser_expr(c_node->arguments[1]); } break;
default: {}
@@ -947,7 +947,7 @@ MainLoop* test(TestType p_test) {
if (tk.get_token_line()!=line) {
int from=line+1;
- line = tk.get_token_line();;
+ line = tk.get_token_line();
for(int i=from;i<=line;i++) {
int l=i-1;
diff --git a/main/tests/test_gui.cpp b/main/tests/test_gui.cpp
index b0ebc20180..899bdc37b9 100644
--- a/main/tests/test_gui.cpp
+++ b/main/tests/test_gui.cpp
@@ -353,14 +353,14 @@ public:
label = memnew( Label );
label->set_text("Some Label");
label->set_pos( Point2(20,20) );
- ctl->add_child(label);;
+ ctl->add_child(label);
ctl= memnew( Control );
ctl->set_name("tab 3");
button = memnew( Button );
button->set_text("Some Button");
button->set_pos( Point2(30,50) );
- ctl->add_child(button);;
+ ctl->add_child(button);
tabc->add_child(ctl);
diff --git a/main/tests/test_main.cpp b/main/tests/test_main.cpp
index 1f7f2d7dda..763616dd46 100644
--- a/main/tests/test_main.cpp
+++ b/main/tests/test_main.cpp
@@ -104,10 +104,10 @@ MainLoop* test_main(String p_test,const List<String>& p_args) {
}
#endif
- if (p_test=="sound") {
+ //if (p_test=="sound") {
- return TestSound::test();
- }
+ // return TestSound::test();
+ //}
if (p_test=="io") {
diff --git a/main/tests/test_physics.cpp b/main/tests/test_physics.cpp
index ea98da34ca..95ce540b16 100644
--- a/main/tests/test_physics.cpp
+++ b/main/tests/test_physics.cpp
@@ -111,7 +111,7 @@ protected:
PhysicsServer * ps = PhysicsServer::get_singleton();
- RID plane_shape = ps->shape_create(PhysicsServer::SHAPE_PLANE);;
+ RID plane_shape = ps->shape_create(PhysicsServer::SHAPE_PLANE);
ps->shape_set_data( plane_shape, p_plane );
RID b = ps->body_create( PhysicsServer::BODY_MODE_STATIC );
@@ -345,11 +345,16 @@ public:
/* CAMERA */
camera = vs->camera_create();
+
RID viewport = vs->viewport_create();
+ Size2i screen_size = OS::get_singleton()->get_window_size();
+ vs->viewport_set_size(viewport,screen_size.x,screen_size.y);
+ vs->viewport_attach_to_screen(viewport,Rect2(Vector2(),screen_size));
+ vs->viewport_set_active(viewport,true);
vs->viewport_attach_camera( viewport, camera );
- vs->viewport_attach_to_screen(viewport);
vs->viewport_set_scenario( viewport, scenario );
+
vs->camera_set_perspective(camera,60,0.1,40.0);
vs->camera_set_transform(camera,Transform( Basis(), Vector3(0,9,12)));
//vs->scenario_set_debug(scenario,VS::SCENARIO_DEBUG_WIREFRAME);
diff --git a/main/tests/test_physics_2d.cpp b/main/tests/test_physics_2d.cpp
index 8a6a8c78f9..76d1afd2ac 100644
--- a/main/tests/test_physics_2d.cpp
+++ b/main/tests/test_physics_2d.cpp
@@ -63,7 +63,7 @@ class TestPhysics2DMainLoop : public MainLoop {
};
- BodyShapeData body_shape_data[6];
+ BodyShapeData body_shape_data[8];
void _create_body_shape_data() {
@@ -191,7 +191,7 @@ class TestPhysics2DMainLoop : public MainLoop {
Image image(convex_png);
- body_shape_data[Physics2DServer::SHAPE_CUSTOM+1].image=vs->texture_create_from_image(image);
+ body_shape_data[Physics2DServer::SHAPE_CONVEX_POLYGON].image=vs->texture_create_from_image(image);
RID convex_polygon_shape = ps->shape_create(Physics2DServer::SHAPE_CONVEX_POLYGON);
@@ -206,7 +206,7 @@ class TestPhysics2DMainLoop : public MainLoop {
arr.push_back(Point2(11,7)-sb);
ps->shape_set_data(convex_polygon_shape,arr);
- body_shape_data[Physics2DServer::SHAPE_CUSTOM+1].shape = convex_polygon_shape;
+ body_shape_data[Physics2DServer::SHAPE_CONVEX_POLYGON].shape = convex_polygon_shape;
}
@@ -382,8 +382,13 @@ public:
RID vp = vs->viewport_create();
canvas = vs->canvas_create();
+
+ Size2i screen_size = OS::get_singleton()->get_window_size();
vs->viewport_attach_canvas(vp,canvas);
- vs->viewport_attach_to_screen(vp,Rect2(Vector2(),OS::get_singleton()->get_window_size()));
+ vs->viewport_set_size(vp,screen_size.x,screen_size.y);
+ vs->viewport_attach_to_screen(vp,Rect2(Vector2(),screen_size));
+ vs->viewport_set_active(vp,true);
+
Transform2D smaller;
//smaller.scale(Vector2(0.6,0.6));
//smaller.elements[2]=Vector2(100,0);
diff --git a/main/tests/test_sound.cpp b/main/tests/test_sound.cpp
index 44cc117e02..6b0cf0a324 100644
--- a/main/tests/test_sound.cpp
+++ b/main/tests/test_sound.cpp
@@ -30,11 +30,13 @@
#include "servers/visual_server.h"
#include "os/main_loop.h"
#include "math_funcs.h"
-#include "scene/resources/sample.h"
+
#include "io/resource_loader.h"
#include "print_string.h"
#include "servers/audio_server.h"
#include "os/os.h"
+
+#if 0
namespace TestSound {
@@ -93,3 +95,4 @@ MainLoop* test() {
}
}
+#endif
diff --git a/modules/chibi/SCsub b/modules/chibi/SCsub
deleted file mode 100644
index dffd966753..0000000000
--- a/modules/chibi/SCsub
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-Import('env')
-Import('env_modules')
-
-env_chibi = env_modules.Clone()
-
-# Godot source files
-env_chibi.add_source_files(env.modules_sources, "*.cpp")
diff --git a/modules/chibi/config.py b/modules/chibi/config.py
deleted file mode 100644
index fb920482f5..0000000000
--- a/modules/chibi/config.py
+++ /dev/null
@@ -1,7 +0,0 @@
-
-def can_build(platform):
- return True
-
-
-def configure(env):
- pass
diff --git a/modules/chibi/cp_config.h b/modules/chibi/cp_config.h
deleted file mode 100644
index 35312b68be..0000000000
--- a/modules/chibi/cp_config.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*************************************************************************/
-/* cp_config.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef CP_CONFIG_H
-#define CP_CONFIG_H
-
-
-#include "typedefs.h"
-#include "error_macros.h"
-#include "math_funcs.h"
-#include "os/memory.h"
-#include "os/copymem.h"
-
-#define CP_PRINTERR(m_err) ERR_PRINT(m_err)
-#define CP_ERR_COND(m_cond) ERR_FAIL_COND(m_cond)
-#define CP_ERR_COND_V(m_cond,m_ret) ERR_FAIL_COND_V(m_cond,m_ret)
-#define CP_FAIL_INDEX(m_index,m_size) ERR_FAIL_INDEX(m_index,m_size)
-#define CP_FAIL_INDEX_V(m_index,m_size,m_ret) ERR_FAIL_INDEX_V(m_index,m_size,m_ret)
-#define cp_intabs(m_val) ABS(m_val)
-
-#define CP_ALLOC(m_mem) memalloc(m_mem)
-#define CP_REALLOC(m_mem,m_size) memrealloc(m_mem,m_size)
-#define CP_FREE(m_mem) memfree(m_mem)
-
-#define cp_memzero(m_mem,m_size) zeromem(m_mem,m_size)
-
-#endif // CP_CONFIG_H
diff --git a/modules/chibi/cp_envelope.cpp b/modules/chibi/cp_envelope.cpp
deleted file mode 100644
index 36259e8d63..0000000000
--- a/modules/chibi/cp_envelope.cpp
+++ /dev/null
@@ -1,369 +0,0 @@
-/*************************************************************************/
-/* cp_envelope.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "cp_envelope.h"
-
-
-CPEnvelope::CPEnvelope() {
-
-
- reset();
-}
-
-void CPEnvelope::reset() {
-
-
-
- on=false;
- carry=false;
- loop_on=false;
- loop_begin_node=0;
- loop_end_node=0;
- sustain_loop_on=false;
- sustain_loop_begin_node=0;
- sustain_loop_end_node=0;
- node_count=0;
-
-}
-
-int CPEnvelope::get_height_at_pos(int pos) {
-
- if (node_count && pos>node[node_count-1].tick_offset)
- return node[node_count-1].value;
-
- int begin_x,begin_y;
- int end_x,end_y,xdif;
- int count=0;
- int limit=-1;
-
- if (node_count<2) return NO_POINT;
-
- while ((count<node_count) && (limit==-1)) {
-
- if (node[count].tick_offset>=pos) limit=count;
- count++;
- }
-
- if (pos==0) return node[0].value;
-
- if (limit==-1) return NO_POINT;
-
- begin_x=node[limit-1].tick_offset;
- end_x=node[limit].tick_offset;
- begin_y=node[limit-1].value;
- end_y=node[limit].value;
-
- xdif=end_x-begin_x;
- return begin_y+((pos-begin_x)*(end_y-begin_y))/(xdif?xdif:1);
-}
-
-/*
-int CPEnvelope::get_fx_height_at_pos(int pos) {
-
- if (node_count && pos>node[node_count-1].tick_offset)
- return node[node_count-1].value<<FX_HEIGHT_BITS;
-
- int begin_x,begin_y;
- int end_x,end_y,xdif;
- int count=0;
- int limit=-1;
-
- if (node_count<2) return NO_POINT;
-
- while ((count<node_count) && (limit==-1)) {
-
- if (node[count].tick_offset>=pos) limit=count;
- count++;
- }
-
- if (pos==0) return node[0].value<<FX_HEIGHT_BITS;
-
- if (limit==-1) return NO_POINT;
-
- begin_x=node[limit-1].tick_offset;
- end_x=node[limit].tick_offset;
- begin_y=node[limit-1].value;
- end_y=node[limit].value;
-
- xdif=end_x-begin_x;
- return (begin_y<<FX_HEIGHT_BITS)+((pos-begin_x)*(end_y-begin_y)*(int)(1<<FX_HEIGHT_BITS))/(xdif?xdif:1);
-}
-*/
-
-float CPEnvelope::get_interp_height_at_pos(float pos) {
-
- if (node_count && pos>node[node_count-1].tick_offset)
- return node[node_count-1].value;
-
- int begin_x,begin_y;
- int end_x,end_y,xdif;
- int count=0;
- int limit=-1;
-
- if (node_count<2) return NO_POINT;
-
- while ((count<node_count) && (limit==-1)) {
-
- if (node[count].tick_offset>=pos) limit=count;
- count++;
- }
-
- if (pos==0) return node[0].value;
-
- if (limit==-1) return NO_POINT;
-
- begin_x=node[limit-1].tick_offset;
- end_x=node[limit].tick_offset;
- begin_y=node[limit-1].value;
- end_y=node[limit].value;
-
- xdif=end_x-begin_x;
- return begin_y+((pos-begin_x)*(end_y-begin_y))/(xdif?xdif:1);
-}
-
-void CPEnvelope::set_position(int p_node,int p_x,int p_y) {
-
- if (p_node>=node_count) return;
-
-
-
- if (p_node==0) {
-
- p_x=0;
-
- } else if (p_x<=node[p_node-1].tick_offset) {
-
- p_x=node[p_node-1].tick_offset+1;
-
- } else if ((p_node<(node_count-1)) && (p_x>=node[p_node+1].tick_offset)) {
-
- p_x=node[p_node+1].tick_offset-1;
- }
-
- if (p_x>=9999) p_x=9999;
-
- if (p_y>max_value) p_y=max_value;
- if (p_y<min_value) p_y=min_value;
-
-
- node[p_node].tick_offset=p_x;
- node[p_node].value=p_y;
-
-
-
-}
-
-int CPEnvelope::add_position(int p_x,int p_y,bool p_move_loops) {
-
- if (node_count==MAX_POINTS) return -1;
-
-
- int i,new_node;
-
- // if this is assigning an existing node, let's quit.
- for (i=0;i<node_count;i++) if (p_x==node[i].tick_offset) return -1;
-
-
- i=0;
- while ((i<node_count) && (p_x>=node[i].tick_offset)) i++;
-
- new_node=i;
- node_count++;
-
- if (p_move_loops) {
- if (loop_begin_node>=new_node) loop_begin_node++;
- if (loop_end_node>=new_node) loop_end_node++;
- if (sustain_loop_begin_node>=new_node) sustain_loop_begin_node++;
- if (sustain_loop_end_node>=new_node) sustain_loop_end_node++;
- }
- for (i=node_count-1;i>new_node;i--) node[i]=node[i-1];
-
-
-
- set_position(new_node,p_x,p_y);
-
-
-
- return new_node;
-
-}
-
-void CPEnvelope::set_loop_begin(int pos) {
-
- if ((pos<0) || (pos>=node_count)) return;
-
-
-
- loop_begin_node=pos;
-
- if (loop_end_node<loop_begin_node) loop_end_node=loop_begin_node;
-
-
-
-}
-
-void CPEnvelope::set_loop_end(int pos) {
-
- if ((pos<0) || (pos>=node_count)) return;
-
-
-
- loop_end_node=pos;
-
- if (loop_end_node<loop_begin_node) loop_begin_node=loop_end_node;
-
-
-
-
-}
-
-
-void CPEnvelope::set_sustain_loop_begin(int pos) {
-
- if ((pos<0) || (pos>=node_count)) return;
-
-
-
- sustain_loop_begin_node=pos;
-
- if (sustain_loop_end_node<sustain_loop_begin_node) sustain_loop_end_node=sustain_loop_begin_node;
-
-
-
-}
-
-void CPEnvelope::set_sustain_loop_end(int pos) {
-
- if ((pos<0) || (pos>=node_count)) return;
-
-
-
- sustain_loop_end_node=pos;
-
- if (sustain_loop_end_node<sustain_loop_begin_node) sustain_loop_begin_node=sustain_loop_end_node;
-
-
-
-}
-
-void CPEnvelope::set_loop_enabled(bool p_enabled) {
-
- loop_on=p_enabled;
-}
-bool CPEnvelope::is_loop_enabled() {
-
- return loop_on;
-}
-
-
-void CPEnvelope::set_sustain_loop_enabled(bool p_enabled) {
-
- sustain_loop_on=p_enabled;
-}
-bool CPEnvelope::is_sustain_loop_enabled() {
-
- return sustain_loop_on;
-}
-
-void CPEnvelope::del_position(int p_node) {
-
- if ((node_count<3) || (p_node<=0) || (p_node>=node_count)) return;
-
-
-
- int i;
-
- if (loop_begin_node>=p_node) loop_begin_node--;
- if (loop_end_node>=p_node) loop_end_node--;
- if (sustain_loop_begin_node>=p_node) sustain_loop_begin_node--;
- if (sustain_loop_end_node>=p_node) sustain_loop_end_node--;
-
- for (i=p_node;i<node_count-1;i++) node[i]=node[i+1];
-
- node_count--;
-
-
-
-}
-
-uint8_t CPEnvelope::get_loop_begin() {
-
-
- return loop_begin_node;
-}
-uint8_t CPEnvelope::get_loop_end() {
-
- return loop_end_node;
-}
-
-uint8_t CPEnvelope::get_sustain_loop_begin() {
-
-
- return sustain_loop_begin_node;
-}
-uint8_t CPEnvelope::get_sustain_loop_end() {
-
- return sustain_loop_end_node;
-}
-
-
-
-void CPEnvelope::set_enabled(bool p_enabled) {
-
- on=p_enabled;
-}
-
-bool CPEnvelope::is_enabled() {
-
- return on;
-}
-
-void CPEnvelope::set_carry_enabled(bool p_enabled) {
-
- carry=p_enabled;
-}
-bool CPEnvelope::is_carry_enabled() {
-
- return carry;
-}
-
-uint8_t CPEnvelope::get_node_count() {
-
- return node_count;
-}
-
-const CPEnvelope::Point& CPEnvelope::get_node(int p_idx) {
-
- if (p_idx<0 || p_idx>=node_count)
- return node[node_count-1];
-
- return node[p_idx];
-
-}
-
-
diff --git a/modules/chibi/cp_envelope.h b/modules/chibi/cp_envelope.h
deleted file mode 100644
index af27f5f185..0000000000
--- a/modules/chibi/cp_envelope.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*************************************************************************/
-/* cp_envelope.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef CP_ENVELOPE_H
-#define CP_ENVELOPE_H
-
-#include "cp_config.h"
-
-/**envelope?
- *@author Juan Linietsky
- */
-
-/******************************
- envelope.h
- ----------
-
-Proovides an envelope, and basic functions
-for it that can be used for both player
-and interface
-********************************/
-
-
-class CPEnvelope {
- enum {
-
- MAX_POINTS=25
- };
-
- struct Point {
-
- uint16_t tick_offset;
- int16_t value;
- };
-
- Point node[MAX_POINTS];
-
- int8_t node_count;
-
- bool on;
- bool carry;
-
- bool loop_on;
-
- uint8_t loop_begin_node;
- uint8_t loop_end_node;
-
- bool sustain_loop_on;
- uint8_t sustain_loop_begin_node;
- uint8_t sustain_loop_end_node;
-
-
- int8_t max_value;
- int8_t min_value;
-
-
-public:
- enum {
-
- NO_POINT=-5000,
- };
-
- void set_max(int8_t p_max) { max_value=p_max; }
- int8_t get_max() { return max_value; }
- void set_min(int8_t p_min) { min_value=p_min; }
- int8_t get_min() { return min_value; }
-
- uint8_t get_node_count();
- const Point& get_node(int p_idx);
-
- void set_position(int p_node,int p_x,int p_y);
- int add_position(int p_x,int p_y,bool p_move_loops=true);
- void del_position(int p_node);
-
- void set_loop_enabled(bool p_enabled);
- bool is_loop_enabled();
- void set_loop_begin(int pos);
- void set_loop_end(int pos);
- uint8_t get_loop_begin();
- uint8_t get_loop_end();
-
- void set_sustain_loop_enabled(bool p_enabled);
- bool is_sustain_loop_enabled();
- void set_sustain_loop_begin(int pos);
- void set_sustain_loop_end(int pos);
- uint8_t get_sustain_loop_begin();
- uint8_t get_sustain_loop_end();
-
- void set_enabled(bool p_enabled);
- bool is_enabled();
-
- void set_carry_enabled(bool p_enabled);
- bool is_carry_enabled();
-
- void reset();
- int get_height_at_pos(int pos);
- float get_interp_height_at_pos(float pos);
-
-
- CPEnvelope();
-
-};
-
-#endif
diff --git a/modules/chibi/cp_file_access_wrapper.h b/modules/chibi/cp_file_access_wrapper.h
deleted file mode 100644
index ade077c1ef..0000000000
--- a/modules/chibi/cp_file_access_wrapper.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*************************************************************************/
-/* cp_file_access_wrapper.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef CP_FILE_ACCESS_WRAPPER_H
-#define CP_FILE_ACCESS_WRAPPER_H
-
-#include "cp_config.h"
-
-class CPFileAccessWrapper {
-public:
-
- enum ModeFlags {
-
- READ=1,
- WRITE=2,
- READ_WRITE=3,
- };
-
- enum Error {
-
- OK,
- ERROR_FILE_NOT_FOUND,
- ERROR_FILE_BAD_DRIVE,
- ERROR_FILE_BAD_PATH,
- ERROR_FILE_NO_PERMISSION,
- ERROR_ALREADY_IN_USE,
- ERROR_INVALID_PARAMETERS,
- ERROR_OPENING_FILE,
- ERROR_READING_FILE,
- ERROR_WRITING_FILE
- };
-
- virtual Error open(const char *p_filename, int p_mode_flags)=0;
- virtual void close()=0;
-
- virtual void seek(uint32_t p_position)=0;
- virtual void seek_end()=0;
- virtual uint32_t get_pos()=0;
-
- virtual bool eof_reached()=0;
-
- virtual uint8_t get_byte()=0;
- virtual void get_byte_array(uint8_t *p_dest,int p_elements)=0;
- virtual void get_word_array(uint16_t *p_dest,int p_elements)=0;
-
- virtual uint16_t get_word()=0;
- virtual uint32_t get_dword()=0;
-
- // use this for files WRITTEN in _big_ endian machines (ie, amiga/mac)
- // It's not about the current CPU type but file formats.
- // this flags get reset to false (little endian) on each open
- virtual void set_endian_conversion(bool p_swap)=0;
- virtual bool is_open()=0;
-
- virtual Error get_error()=0;
-
- virtual void store_byte(uint8_t p_dest)=0;
- virtual void store_byte_array(const uint8_t *p_dest,int p_elements)=0;
-
- virtual void store_word(uint16_t p_dest)=0;
- virtual void store_dword(uint32_t p_dest)=0;
-
-
-
- virtual ~CPFileAccessWrapper(){}
-
-};
-
-
-
-#endif
diff --git a/modules/chibi/cp_instrument.cpp b/modules/chibi/cp_instrument.cpp
deleted file mode 100644
index 606a4217e0..0000000000
--- a/modules/chibi/cp_instrument.cpp
+++ /dev/null
@@ -1,344 +0,0 @@
-/*************************************************************************/
-/* cp_instrument.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "cp_instrument.h"
-#include "cp_song.h"
-#include "cp_note.h"
-
-
-
-const char *CPInstrument::get_name() {
-
- return name;
-
-}
-void CPInstrument::set_name(const char *p_name) {
-
-
- if (p_name==NULL) {
- name[0]=0;
- return;
- }
-
-
- bool done=false;
- for (int i=0;i<MAX_NAME_LEN;i++) {
-
-
- name[i]=done?0:p_name[i];
- if (!done && p_name[i]==0)
- done=true;
- }
-
- name[MAX_NAME_LEN-1]=0; /* just in case */
-
-
-}
-
-void CPInstrument::set_sample_number(uint8_t p_note,uint8_t p_sample_id) {
-
- CP_ERR_COND(p_note>=CPNote::NOTES);
- CP_ERR_COND(p_sample_id>CPSong::MAX_SAMPLES && p_sample_id!=CPNote::EMPTY);
- data.sample_number[p_note]=p_sample_id;
-
-
-}
-uint8_t CPInstrument::get_sample_number(uint8_t p_note) {
-
- CP_ERR_COND_V(p_note>=CPNote::NOTES,0);
- return data.sample_number[p_note];
-}
-
-void CPInstrument::set_note_number(uint8_t p_note,uint8_t p_note_id) {
-
- CP_ERR_COND(p_note>=CPNote::NOTES);
- CP_ERR_COND(p_note_id>=CPNote::NOTES && p_note_id!=CPNote::EMPTY);
- data.note_number[p_note]=p_note_id;
-
-}
-uint8_t CPInstrument::get_note_number(uint8_t p_note) {
-
- CP_ERR_COND_V(p_note>=CPNote::NOTES,0);
- return data.note_number[p_note];
-
-}
-
-void CPInstrument::set_NNA_type(NNA_Type p_NNA_type) {
-
- data.NNA_type=p_NNA_type;
-}
-CPInstrument::NNA_Type CPInstrument::get_NNA_type() {
-
- return data.NNA_type;
-}
-
-void CPInstrument::set_DC_type(DC_Type p_DC_type) {
-
- data.DC_type=p_DC_type;
-}
-CPInstrument::DC_Type CPInstrument::get_DC_type() {
-
- return data.DC_type;
-
-}
-
-void CPInstrument::set_DC_action(DC_Action p_DC_action) {
-
- data.DC_action=p_DC_action;
-}
-CPInstrument::DC_Action CPInstrument::get_DC_action() {
-
- return data.DC_action;
-}
-
-/* Volume */
-
-void CPInstrument::set_volume_global_amount(uint8_t p_amount) {
-
- CP_ERR_COND(p_amount>MAX_VOLUME);
- data.volume.global_amount=p_amount;
-
-}
-uint8_t CPInstrument::get_volume_global_amount() {
-
- return data.volume.global_amount;
-}
-
-void CPInstrument::set_volume_fadeout(uint16_t p_amount) {
- CP_ERR_COND(p_amount>MAX_FADEOUT);
- data.volume.fadeout=p_amount;
-}
-uint16_t CPInstrument::get_volume_fadeout() {
-
- return data.volume.fadeout;
-}
-void CPInstrument::set_volume_random_variation(uint8_t p_amount) {
-
- CP_ERR_COND(p_amount>MAX_VOLUME_RANDOM);
- data.volume.random_variation=p_amount;
-}
-uint8_t CPInstrument::get_volume_random_variation() {
-
- return data.volume.random_variation;
-}
-
-/* Panning */
-
-void CPInstrument::set_pan_default_amount(uint8_t p_amount) {
-
- CP_ERR_COND(p_amount>MAX_PAN);
- data.pan.default_amount=p_amount;
-}
-uint8_t CPInstrument::get_pan_default_amount() {
-
- return data.pan.default_amount;
-}
-
-void CPInstrument::set_pan_default_enabled(bool p_enabled) {
-
- data.pan.use_default=p_enabled;
-}
-bool CPInstrument::is_pan_default_enabled() {
-
- return data.pan.use_default;
-
-}
-
-void CPInstrument::set_pan_pitch_separation(int8_t p_amount) {
-
- CP_ERR_COND(p_amount<-32);
- CP_ERR_COND(p_amount>32);
- data.pan.pitch_separation=p_amount;
-}
-int8_t CPInstrument::get_pan_pitch_separation() {
-
- return data.pan.pitch_separation;
-}
-
-void CPInstrument::set_pan_pitch_center(uint8_t p_amount) {
-
- CP_ERR_COND(p_amount>=CPNote::NOTES);
- data.pan.pitch_center=p_amount;
-}
-uint8_t CPInstrument::get_pan_pitch_center() {
-
- return data.pan.pitch_center;
-}
-
-void CPInstrument::set_pan_random_variation(uint8_t p_amount) {
-
- CP_ERR_COND(p_amount>MAX_PAN_RANDOM);
- data.pan.random_variation=p_amount;
-}
-uint8_t CPInstrument::get_pan_random_variation() {
-
- return data.pan.random_variation;
-}
-
-/* Pitch / Filter */
-
-void CPInstrument::set_pitch_use_as_filter(bool p_enabled) {
-
- data.pitch.use_as_filter=p_enabled;
-}
-bool CPInstrument::is_pitch_use_as_filter() {
-
- return data.pitch.use_as_filter;
-}
-
-void CPInstrument::set_filter_use_default_cutoff(bool p_enabled) {
-
- data.pitch.use_default_cutoff=p_enabled;
-
-}
-bool CPInstrument::filter_use_default_cutoff() {
-
- return data.pitch.use_default_cutoff;
-}
-
-void CPInstrument::set_filter_default_cutoff(uint8_t p_amount) {
-
- CP_ERR_COND(p_amount>MAX_FILTER_CUTOFF);
- data.pitch.default_cutoff=p_amount;
-}
-uint8_t CPInstrument::get_filter_default_cutoff() {
-
- return data.pitch.default_cutoff;
-}
-
-void CPInstrument::set_filter_use_default_resonance(bool p_enabled) {
-
- data.pitch.use_default_resonance=p_enabled;
-}
-bool CPInstrument::filter_use_default_resonance() {
-
- return data.pitch.use_default_resonance;
-}
-
-void CPInstrument::set_filter_default_resonance(uint8_t p_amount) {
-
- CP_ERR_COND(p_amount>MAX_FILTER_RESONANCE);
- data.pitch.default_resonance=p_amount;
-
-}
-uint8_t CPInstrument::get_filter_default_resonance() {
-
- return data.pitch.default_resonance;
-}
-
-/* Envelopes */
-
-
-CPEnvelope* CPInstrument::get_volume_envelope() {
-
- return &data.volume.envelope;
-}
-CPEnvelope* CPInstrument::get_pan_envelope() {
-
- return &data.pan.envelope;
-}
-CPEnvelope* CPInstrument::get_pitch_filter_envelope() {
-
- return &data.pitch.envelope;
-
-
-}
-
-
-void CPInstrument::reset() {
-
- name[0]=0;
-
- data.NNA_type=NNA_NOTE_CUT;
- data.DC_action=DCA_NOTE_CUT;
- data.DC_type=DCT_DISABLED;
-
- for (int i=0;i<CPNote::NOTES;i++) {
-
- data.sample_number[i]=CPNote::EMPTY;
- data.note_number[i]=i;
- }
-
- data.volume.envelope.reset();
- data.volume.envelope.set_max(64);
- data.volume.envelope.set_min(0);
- data.volume.envelope.add_position(0,64,false);
- data.volume.envelope.add_position(30,64,false);
-
- data.volume.global_amount=MAX_VOLUME;
- data.volume.fadeout=0;
- data.volume.random_variation=0;
-
- data.pan.envelope.reset();
- data.pan.envelope.set_max(32);
- data.pan.envelope.set_min(-32);
- data.pan.envelope.add_position(0,0,false);
- data.pan.envelope.add_position(30,0,false);
-
- data.pan.default_amount=32;
- data.pan.pitch_center=48;
- data.pan.pitch_separation=0;
- data.pan.use_default=false;
- data.pan.random_variation=0;
-
-
- data.pitch.envelope.reset();
- data.pitch.envelope.set_max(32);
- data.pitch.envelope.set_min(-32);
- data.pitch.envelope.add_position(0,0,false);
- data.pitch.envelope.add_position(30,0,false);
- data.pitch.use_as_filter=false;
- data.pitch.use_default_cutoff=false;
- data.pitch.use_default_resonance=false;
- data.pitch.default_cutoff=0;
- data.pitch.default_resonance=0;
-
-}
-
-bool CPInstrument::is_empty() {
-
- bool has_sample=false;
-
- for (int i=0;i<CPNote::NOTES;i++) {
-
- if (data.sample_number[i]!=CPNote::EMPTY) {
-
- has_sample=true;
- break;
- }
- }
-
- return !has_sample;
-}
-
-CPInstrument::CPInstrument() {
-
- reset();
-
-}
-
diff --git a/modules/chibi/cp_instrument.h b/modules/chibi/cp_instrument.h
deleted file mode 100644
index e51612a38d..0000000000
--- a/modules/chibi/cp_instrument.h
+++ /dev/null
@@ -1,219 +0,0 @@
-/*************************************************************************/
-/* cp_instrument.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef CP_INSTRUMENT_H
-#define CP_INSTRUMENT_H
-
-
-#include "cp_config.h"
-#include "cp_note.h"
-#include "cp_envelope.h"
-
-class CPInstrument {
-public:
-
-
- enum NNA_Type {
-
- NNA_NOTE_CUT,
- NNA_NOTE_CONTINUE,
- NNA_NOTE_OFF,
- NNA_NOTE_FADE
- };
-
- enum DC_Type {
-
- DCT_DISABLED,
- DCT_NOTE,
- DCT_SAMPLE,
- DCT_INSTRUMENT
- };
-
- enum DC_Action
- {
-
- DCA_NOTE_CUT,
- DCA_NOTE_OFF,
- DCA_NOTE_FADE,
- };
-
- enum EnvelopeType {
- VOLUME_ENVELOPE,
- PAN_ENVELOPE,
- PITCH_ENVELOPE
- };
-
-
- enum {
- MAX_NAME_LEN=26,
- MAX_ENVELOPE_NODES=25,
- ENVELOPE_FRAC_BITS=8,
- MAX_VOLUME=128,
- MAX_FADEOUT=256,
- MAX_PAN=128,
- MAX_VOLUME_RANDOM=100,
- MAX_PAN_RANDOM=64, //what did this guy have inside his head?
-
- MAX_FILTER_CUTOFF=127,
- MAX_FILTER_RESONANCE=127
-
- };
-
-
- struct Data {
-
-
- uint8_t sample_number[CPNote::NOTES];
- uint8_t note_number[CPNote::NOTES];
-
- NNA_Type NNA_type;
- DC_Type DC_type;
- DC_Action DC_action;
-
- struct Volume {
-
- CPEnvelope envelope;
- uint8_t global_amount;
- uint16_t fadeout;
- uint8_t random_variation;
-
- } volume;
-
- struct Pan {
-
- CPEnvelope envelope;
- bool use_default;
- uint8_t default_amount;
- int8_t pitch_separation;
- uint8_t pitch_center;
- uint8_t random_variation;
-
- } pan;
-
- struct Pitch {
-
- CPEnvelope envelope;
- bool use_as_filter;
- bool use_default_cutoff;
- uint8_t default_cutoff;
- bool use_default_resonance;
- uint8_t default_resonance;
- } pitch;
-
- };
-
-private:
-
-
-
- Data data;
- char name[MAX_NAME_LEN];
-
-public:
-
- /* CPInstrument General */
-
- const char *get_name();
- void set_name(const char *p_name);
-
- void set_sample_number(uint8_t p_note,uint8_t p_sample_id);
- uint8_t get_sample_number(uint8_t p_note);
-
- void set_note_number(uint8_t p_note,uint8_t p_note_id);
- uint8_t get_note_number(uint8_t p_note);
-
- void set_NNA_type(NNA_Type p_NNA_type);
- NNA_Type get_NNA_type();
-
- void set_DC_type(DC_Type p_DC_type);
- DC_Type get_DC_type();
-
- void set_DC_action(DC_Action p_DC_action);
- DC_Action get_DC_action();
-
- /* Volume */
-
- void set_volume_global_amount(uint8_t p_amount);
- uint8_t get_volume_global_amount();
-
- void set_volume_fadeout(uint16_t p_amount);
- uint16_t get_volume_fadeout();
-
- void set_volume_random_variation(uint8_t p_amount);
- uint8_t get_volume_random_variation();
-
- /* Panning */
-
- void set_pan_default_amount(uint8_t p_amount);
- uint8_t get_pan_default_amount();
-
- void set_pan_default_enabled(bool p_enabled);
- bool is_pan_default_enabled();
-
- void set_pan_pitch_separation(int8_t p_amount);
- int8_t get_pan_pitch_separation();
-
- void set_pan_pitch_center(uint8_t p_amount);
- uint8_t get_pan_pitch_center();
-
- void set_pan_random_variation(uint8_t p_amount);
- uint8_t get_pan_random_variation();
-
- /* Pitch / Filter */
-
- void set_pitch_use_as_filter(bool p_enabled);
- bool is_pitch_use_as_filter();
-
- void set_filter_use_default_cutoff(bool p_enabled);
- bool filter_use_default_cutoff();
-
- void set_filter_default_cutoff(uint8_t p_amount);
- uint8_t get_filter_default_cutoff();
-
- void set_filter_use_default_resonance(bool p_enabled);
- bool filter_use_default_resonance();
-
- void set_filter_default_resonance(uint8_t p_amount);
- uint8_t get_filter_default_resonance();
-
- CPEnvelope* get_volume_envelope();
- CPEnvelope* get_pan_envelope();
- CPEnvelope* get_pitch_filter_envelope();
-
- bool is_empty();
-
- void reset();
- CPInstrument();
-
-};
-
-
-
-#endif
-
-
diff --git a/modules/chibi/cp_loader.h b/modules/chibi/cp_loader.h
deleted file mode 100644
index 1630444481..0000000000
--- a/modules/chibi/cp_loader.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*************************************************************************/
-/* cp_loader.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef CP_LOADER_H
-#define CP_LOADER_H
-
-
-#include "cp_song.h"
-#include "cp_file_access_wrapper.h"
-/**
- @author Juan Linietsky <reduzio@gmail.com>
-*/
-class CPLoader {
-
-public:
-
- enum Error {
- FILE_OK,
- FILE_UNRECOGNIZED,
- FILE_CANNOT_OPEN,
- FILE_CORRUPTED,
- FILE_OUT_OF_MEMORY,
- };
-
-
- virtual bool can_load_song()=0;
- virtual bool can_load_sample()=0;
- virtual bool can_load_instrument()=0;
-
- virtual Error load_song(const char *p_file,CPSong *p_song,bool p_sampleset)=0;
- virtual Error load_sample(const char *p_file,CPSample *p_sample)=0;
- virtual Error load_instrument(const char *p_file,CPSong *p_song,int p_instr_idx)=0;
-
-
- virtual ~CPLoader() {}
-
-};
-
-#endif
diff --git a/modules/chibi/cp_loader_it.cpp b/modules/chibi/cp_loader_it.cpp
deleted file mode 100644
index bfffd9b509..0000000000
--- a/modules/chibi/cp_loader_it.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-/*************************************************************************/
-/* cp_loader_it.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "cp_loader_it.h"
-
-bool CPLoader_IT::can_load_song() { return true; }
-bool CPLoader_IT::can_load_sample() { return true; }
-bool CPLoader_IT::can_load_instrument() { return true; }
-
-CPLoader::Error CPLoader_IT::load_song(const char *p_file,CPSong *p_song, bool p_sampleset) {
-
-
- song=p_song;
-
- if (file->open( p_file, CPFileAccessWrapper::READ )!=CPFileAccessWrapper::OK)
- return CPLoader::FILE_CANNOT_OPEN;
-
-
- Error err;
-
- char aux_identifier[4];
- file->get_byte_array((uint8_t*)aux_identifier,4);
-
- if ( aux_identifier[0]!='I' ||
- aux_identifier[1]!='M' ||
- aux_identifier[2]!='P' ||
- aux_identifier[3]!='M') {
-
-
- CP_PRINTERR("IT CPLoader CPSong: Failed Identifier");
- return FILE_UNRECOGNIZED;
- }
-
-
- if (p_sampleset) {
-
- song->reset(false,true,true,false);
-
- if ((err=load_header(true))) {
- file->close();
- return err;
- }
-
- if ((err=load_samples())) {
- file->close();
- return err;
- }
-
- if ((err=load_instruments())) {
- file->close();
- return err;
- }
-
- return FILE_OK;
- }
-
- song->reset();
-
- if ((err=load_header(false))) {
- file->close();
- return err;
- }
-
- if ((err=load_orders())) {
- file->close();
- return err;
- }
-
- if ((err=load_patterns())) {
- file->close();
- return err;
- }
-
- if ((err=load_samples())) {
- file->close();
- return err;
- }
-
- if ((err=load_effects())) {
- file->close();
- return err;
- }
-
- if ((err=load_instruments())) {
- file->close();
- return err;
- }
-
- if ((err=load_message())) {
- file->close();
- return err;
- }
-
- file->close();
- return FILE_OK;
-
-}
-
-
-
-
-CPLoader::Error CPLoader_IT::load_sample(const char *p_file,CPSample *p_sample) {
-
- if (file->open( p_file, CPFileAccessWrapper::READ )!=CPFileAccessWrapper::OK)
- return CPLoader::FILE_CANNOT_OPEN;
-
- p_sample->reset();
- CPLoader::Error res=load_sample(p_sample);
-
- file->close();
-
- return res;
-}
-CPLoader::Error CPLoader_IT::load_instrument(const char *p_file,CPSong *p_song,int p_instr_idx) {
-
- CP_FAIL_INDEX_V(p_instr_idx,CPSong::MAX_INSTRUMENTS,CPLoader::FILE_CANNOT_OPEN);
-
- if (file->open( p_file, CPFileAccessWrapper::READ )!=CPFileAccessWrapper::OK)
- return CPLoader::FILE_CANNOT_OPEN;
-
-
- p_song->get_instrument( p_instr_idx )->reset();
-
-
- int samples=0;
- CPLoader::Error res=load_instrument( p_song->get_instrument( p_instr_idx ), &samples );
-
- if (res) {
- file->close();
- return res;
- }
-
-
- char exchange[CPSong::MAX_SAMPLES];
- for (int i=0;i<CPSong::MAX_SAMPLES;i++)
- exchange[i]=0;
-
- for (int i=0;i<samples;i++) {
-
- file->seek( 554+i*80 ); //i think this should work?! seems to.. but i'm not sure
-
- /* find free sample */
-
- int free_idx=-1;
- for (int s=0;s<CPSong::MAX_SAMPLES;s++) {
-
- if (p_song->get_sample( s )->get_sample_data().is_null()) {
- free_idx=s;
- break;
- }
- }
- if (free_idx==-1)
- break; //can't seem to be able to load more samples
-
- exchange[i]=free_idx;
- res=load_sample( p_song->get_sample( free_idx ) );
-
- if (res) {
-
- file->close();
- return res;
- }
- }
-
- for (int i=0;i<CPNote::NOTES;i++) {
-
- int smp=song->get_instrument(p_instr_idx)->get_sample_number(i);
-
- if (smp>=CPSong::MAX_SAMPLES)
- continue;
-
- if (smp<0)
- continue;
-
- smp=exchange[smp];
-
- song->get_instrument(p_instr_idx)->set_sample_number(i,smp);
-
- }
-
- file->close();
-
- return res;
-
-}
-
-CPLoader_IT::CPLoader_IT(CPFileAccessWrapper *p_file) {
-
- file=p_file;
-
-}
diff --git a/modules/chibi/cp_loader_it.h b/modules/chibi/cp_loader_it.h
deleted file mode 100644
index 5ce62a6a49..0000000000
--- a/modules/chibi/cp_loader_it.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/*************************************************************************/
-/* cp_loader_it.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef CP_LOADER_IT_H
-#define CP_LOADER_IT_H
-
-#include "cp_loader.h"
-/**
- *@author Juan Linietsky
- */
-
-/******************************
- loader_it.h
- ----------
-Impulse Tracker Module CPLoader!
-It lacks support for old
-instrument files methinks...
-and some other things like
-midi.
-********************************/
-
-class AuxSampleData; //used for internal crap
-
-class CPLoader_IT : public CPLoader {
-
-
-
- CPFileAccessWrapper *file;
- CPSong *song;
-
- struct IT_Header {
- uint8_t blank01[2];
- uint16_t ordnum;
- uint16_t insnum;
- uint16_t smpnum;
- uint16_t patnum;
- uint16_t cwt; /* Created with tracker (y.xx = 0x0yxx) */
- uint16_t cmwt; /* Compatible with tracker ver > than val. */
- uint16_t flags;
- uint16_t special; /* bit 0 set = song message attached */
- uint16_t msglength;
- uint32_t msgoffset;
- bool is_chibi;
- };
-
- /* Variables to store temp data */
- IT_Header header;
-
- /* CPSong Info Methods */
- Error load_header(bool p_dont_set);
- Error load_orders();
- Error load_message();
-
- /* CPPattern Methods */
- Error load_patterns();
-
- /* CPSample Methods */
-
- Error load_samples();
- Error load_sample(CPSample *p_sample);
- CPSample_ID load_sample_data(AuxSampleData& p_sample_data);
-
- // CPSample decompression
-
- uint32_t read_n_bits_from_IT_compressed_block(uint8_t p_bits_to_read);
- bool read_IT_compressed_block (bool p_16bits);
- void free_IT_compressed_block ();
- bool load_sample_8bits_IT_compressed(void *p_dest_buffer,int p_buffsize);
- bool load_sample_16bits_IT_compressed(void *p_dest_buffer,int p_buffsize);
- uint32_t *source_buffer; /* source buffer */
- uint32_t *source_position; /* actual reading position */
- uint8_t source_remaining_bits; /* bits remaining in read dword */
- uint8_t* pat_data;
-
- /* CPInstruments Methods */
- Error load_effects();
- Error load_instruments();
- Error load_instrument(CPInstrument *p_instrument,int *p_samples=0);
- void load_envelope(CPEnvelope *p_envelope,bool*p_has_filter_flag=0);
-
-
-public:
-
-
- bool can_load_song();
- bool can_load_sample();
- bool can_load_instrument();
-
- Error load_song(const char *p_file,CPSong *p_song, bool p_sampleset=false);
- Error load_sample(const char *p_file,CPSample *p_sample);
- Error load_instrument(const char *p_file,CPSong *p_song,int p_instr_idx);
-
- CPLoader_IT(CPFileAccessWrapper *p_file);
-
-};
-
-
-
-#endif
diff --git a/modules/chibi/cp_loader_it_info.cpp b/modules/chibi/cp_loader_it_info.cpp
deleted file mode 100644
index a474fcd2f9..0000000000
--- a/modules/chibi/cp_loader_it_info.cpp
+++ /dev/null
@@ -1,268 +0,0 @@
-/*************************************************************************/
-/* cp_loader_it_info.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "cp_loader_it.h"
-
-
-
-CPLoader::Error CPLoader_IT::load_header(bool p_dont_set) {
-
-
- char aux_songname[26];
-
- file->get_byte_array((uint8_t*)aux_songname,26);
- if (!p_dont_set)
- song->set_name( aux_songname );
-
- uint8_t aux_hlmin=file->get_byte();
- uint8_t aux_hlmaj=file->get_byte();
-
- if (aux_hlmin==0) aux_hlmin=4;
- if (aux_hlmaj==0) aux_hlmaj=16;
-
- if (!p_dont_set) {
- song->set_row_highlight_minor( aux_hlmin );
- song->set_row_highlight_major( aux_hlmaj );
- }
-
- header.ordnum=file->get_word();
- header.insnum=file->get_word();
- header.smpnum=file->get_word();
- header.patnum=file->get_word();
-
- header.cwt=file->get_word(); /* Created with tracker (y.xx = 0x0yxx) */
- header.cmwt=file->get_word(); /* Compatible with tracker ver > than val. */
- header.flags=file->get_word();
-
- if (!p_dont_set) {
- song->set_stereo( header.flags & 1 );
- song->set_linear_slides( header.flags & 8 );
- song->set_old_effects( header.flags & 16 );
- song->set_compatible_gxx( header.flags & 32 );
- song->set_instruments( header.flags & 4 );
- }
-
-
- header.special=file->get_word();
- if (!p_dont_set) {
-
- song->set_global_volume( file->get_byte() );
- song->set_mixing_volume( file->get_byte() );
- song->set_speed( file->get_byte() );
- song->set_tempo( file->get_byte() );
- song->set_stereo_separation( file->get_byte() );
-
- } else {
-
- file->get_byte(); // skip
- file->get_byte(); // skip
- file->get_byte(); // skip
- file->get_byte(); // skip
- file->get_byte(); // skip
- }
- file->get_byte(); // ZERO Byte
- header.msglength=file->get_word();
- header.msgoffset=file->get_dword();
- char chibi[4];
- file->get_byte_array((uint8_t*)chibi,4);
- header.is_chibi=(chibi[0]=='C' && chibi[1]=='H' && chibi[2]=='B' && chibi[3]=='I');
-
- for (int i=0;i<64;i++) {
-
- uint8_t panbyte=file->get_byte();
-
- uint8_t pan_dst=(panbyte<65) ? panbyte : 32;
- bool surround_dst=(panbyte==100);
- bool mute_dst=(panbyte>=128);
-
- if (!p_dont_set) {
- song->set_channel_pan( i, pan_dst );
- song->set_channel_surround( i, surround_dst );
- song->set_channel_mute( i, mute_dst );
- }
- }
- for (int i=0;i<64;i++) {
- unsigned char cv = file->get_byte();
- if (!p_dont_set)
- song->set_channel_volume( i, cv );
- }
-
- CP_ERR_COND_V( file->eof_reached(),FILE_CORRUPTED );
- CP_ERR_COND_V( file->get_error(),FILE_CORRUPTED );
-
- return FILE_OK;
-}
-
-CPLoader::Error CPLoader_IT::load_effects() {
-
- if (!header.is_chibi)
- return FILE_OK; //no effects, regular IT file
-
- /* GOTO End of IT header */
- file->seek(0xC0+header.ordnum+header.insnum*4+header.smpnum*4+header.patnum*4);
-
-
- if (file->get_byte()>0) //not made with this version, ignore extended info
- return FILE_OK;
-
- /* Chibitracker Extended info */
-
- switch(file->get_byte()) {
-
- case CPSong::REVERB_MODE_ROOM: {
-
- song->set_reverb_mode( CPSong::REVERB_MODE_ROOM );
- } break;
- case CPSong::REVERB_MODE_STUDIO_SMALL: {
-
- song->set_reverb_mode( CPSong::REVERB_MODE_STUDIO_SMALL );
-
- } break;
- case CPSong::REVERB_MODE_STUDIO_MEDIUM: {
-
- song->set_reverb_mode( CPSong::REVERB_MODE_STUDIO_MEDIUM );
-
- } break;
- case CPSong::REVERB_MODE_STUDIO_LARGE: {
-
- song->set_reverb_mode( CPSong::REVERB_MODE_STUDIO_LARGE );
-
- } break;
- case CPSong::REVERB_MODE_HALL: {
-
- song->set_reverb_mode( CPSong::REVERB_MODE_HALL );
-
- } break;
- case CPSong::REVERB_MODE_SPACE_ECHO: {
-
- song->set_reverb_mode( CPSong::REVERB_MODE_SPACE_ECHO );
-
- } break;
-
- case CPSong::REVERB_MODE_ECHO: {
-
- song->set_reverb_mode( CPSong::REVERB_MODE_ECHO );
-
- } break;
- case CPSong::REVERB_MODE_DELAY: {
-
- song->set_reverb_mode( CPSong::REVERB_MODE_DELAY );
-
- } break;
- case CPSong::REVERB_MODE_HALF_ECHO: {
-
- song->set_reverb_mode( CPSong::REVERB_MODE_HALF_ECHO );
-
- } break;
-
- }
-
- //chorus
- song->set_chorus_speed_hz10( file->get_byte() );
- song->set_chorus_delay_ms( file->get_byte() );
- song->set_chorus_depth_ms10( file->get_byte() );
- song->set_chorus_separation_ms( file->get_byte() );
-
- for (int i=0;i<CPPattern::WIDTH;i++) {
- song->set_channel_reverb(i,file->get_byte());
- }
- for (int i=0;i<CPPattern::WIDTH;i++) {
- song->set_channel_chorus(i,file->get_byte());
- }
-
- return FILE_OK;
-
-}
-
-CPLoader::Error CPLoader_IT::load_message() {
-
-
- if (!(header.special & 1)) {
-
- return FILE_OK;
- }
-
-
- file->seek(header.msgoffset);
-
- //(void*)tmpmsg=malloc(header.msglength+1);
-
- char message[8000];
-
-
- char *tmpmsg = message;
-
- file->get_byte_array((uint8_t*)tmpmsg,header.msglength);
- tmpmsg[header.msglength]=0;
-
- for (int i=0;i<header.msglength;i++) if (tmpmsg[i]=='\r') tmpmsg[i]='\n';
-
- song->set_message(tmpmsg);
-
- return FILE_OK;
-}
-
-CPLoader::Error CPLoader_IT::load_orders() {
-
- file->seek(0xC0);
-
-
- for (int i=0;i<header.ordnum;i++) {
-
- uint8_t aux_order=file->get_byte();
- CPOrder order=CP_ORDER_NONE;
-
-
- if (i>=CPSong::MAX_ORDERS)
- continue;
- if (aux_order==254) {
-
- order=CP_ORDER_BREAK;
-
- } else if (aux_order<200) {
-
- order=aux_order;
- //nothing!
-
- }
- song->set_order(i,order);
-
- }
-
- if (file->eof_reached() || file->get_error()) {
-
-
- return FILE_CORRUPTED;
-
- }
-
- return FILE_OK;
-}
-
-
-
diff --git a/modules/chibi/cp_loader_it_instruments.cpp b/modules/chibi/cp_loader_it_instruments.cpp
deleted file mode 100644
index 446e841c5f..0000000000
--- a/modules/chibi/cp_loader_it_instruments.cpp
+++ /dev/null
@@ -1,224 +0,0 @@
-/*************************************************************************/
-/* cp_loader_it_instruments.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "cp_loader_it.h"
-
-enum EnvFlags {
- ENV_ON=1,
- ENV_LOOP=2,
- ENV_SUSLOOP=4,
- ENV_CARRY=8,
- ENV_FILTER=128
-};
-
-void CPLoader_IT::load_envelope(CPEnvelope *p_envelope,bool*p_has_filter_flag) {
-
- uint8_t flags=file->get_byte();
- uint8_t points=file->get_byte();
- uint8_t begin=file->get_byte();
- uint8_t end=file->get_byte();
- uint8_t susbegin=file->get_byte();
- uint8_t susend=file->get_byte();
-
- p_envelope->reset();
-
- for (int i=0;i<25;i++) {
-
- uint8_t height=file->get_byte();
- int8_t &signed_height=(int8_t&)height;
- uint16_t tick=file->get_word();
-
- if (i>=points)
- continue;
- p_envelope->add_position( tick, signed_height );
-
- }
-
- p_envelope->set_enabled( flags & ENV_ON );
- p_envelope->set_carry_enabled( flags & ENV_CARRY);
-
- p_envelope->set_loop_enabled( flags & ENV_LOOP );
- p_envelope->set_loop_begin( begin );
- p_envelope->set_loop_end( end );
-
- p_envelope->set_sustain_loop_enabled( flags & ENV_SUSLOOP );
- p_envelope->set_sustain_loop_begin( susbegin );
- p_envelope->set_sustain_loop_end( susend );
-
- if (p_has_filter_flag)
- *p_has_filter_flag=flags&ENV_FILTER;
-
- file->get_byte(); //zerobyte
-
- //fill with stuff if the envelope hass less than 2 points
- while(p_envelope->get_node_count()<2) {
-
- p_envelope->add_position( 30*p_envelope->get_node_count(), p_envelope->get_min()==0 ? 64 : 0, false );
- }
-}
-
-
-CPLoader::Error CPLoader_IT::load_instrument(CPInstrument *p_instrument,int *p_samples) {
-
-
-
- char aux_header[4];
-
- file->get_byte_array((uint8_t*)aux_header,4);
-
-
- if ( aux_header[0]!='I' ||
- aux_header[1]!='M' ||
- aux_header[2]!='P' ||
- aux_header[3]!='I') {
- CP_PRINTERR("IT CPLoader CPInstrument: Failed Identifier");
-
- return FILE_UNRECOGNIZED;
- }
-
-
-
- // Ignore deprecated 8.3 filename field
- for (int i=0;i<12;i++) file->get_byte();
-
- //Ignore zerobyte
- file->get_byte(); /* (byte) CPInstrument type (always 0) */
-
- switch( file->get_byte() ) { /* New CPNote Action [0,1,2,3] */
- case 0: p_instrument->set_NNA_type( CPInstrument::NNA_NOTE_CUT ) ; break;
- case 1: p_instrument->set_NNA_type( CPInstrument::NNA_NOTE_CONTINUE ) ; break;
- case 2: p_instrument->set_NNA_type( CPInstrument::NNA_NOTE_OFF ) ; break;
- case 3: p_instrument->set_NNA_type( CPInstrument::NNA_NOTE_FADE ) ; break;
- };
- switch( file->get_byte() ) { // Duplicate Check Type
- case 0: p_instrument->set_DC_type( CPInstrument::DCT_DISABLED ); break ;
- case 1: p_instrument->set_DC_type( CPInstrument::DCT_NOTE ); break ;
- case 2: p_instrument->set_DC_type( CPInstrument::DCT_SAMPLE ); break ;
- case 3: p_instrument->set_DC_type( CPInstrument::DCT_INSTRUMENT ); break ;
- }
- switch( file->get_byte() ) { //Duplicate Check Action
- case 0: p_instrument->set_DC_action( CPInstrument::DCA_NOTE_CUT ); break ;
- case 1: p_instrument->set_DC_action( CPInstrument::DCA_NOTE_OFF ); break ;
- case 2: p_instrument->set_DC_action( CPInstrument::DCA_NOTE_FADE ); break ;
- }
-
- int fade = file->get_word();
- //intf("AFADE: %i\n",fade);
- if (fade>CPInstrument::MAX_FADEOUT) //needs to be clipped because of horrible modplug doings
- fade=CPInstrument::MAX_FADEOUT;
-
- p_instrument->set_volume_fadeout( fade );
- p_instrument->set_pan_pitch_separation( file->get_byte() );
- p_instrument->set_pan_pitch_center( file->get_byte() );
- p_instrument->set_volume_global_amount( file->get_byte() );
- uint8_t pan=file->get_byte();
- p_instrument->set_pan_default_amount(pan&0x7F);
- p_instrument->set_pan_default_enabled( !(pan&0x80) );
- p_instrument->set_volume_random_variation( file->get_byte() );
- p_instrument->set_pan_random_variation( file->get_byte() );
-
-
-
- file->get_word(); //empty (version)
- uint8_t samples=file->get_byte();
- if (p_samples)
- *p_samples=samples;
- file->get_byte(); //empty
- char aux_name[26];
- file->get_byte_array((uint8_t*)aux_name,26);
- p_instrument->set_name(aux_name);
-
- uint8_t cutoff=file->get_byte();
-
- p_instrument->set_filter_default_cutoff(cutoff&0x7F);
- p_instrument->set_filter_use_default_cutoff(cutoff&0x80);
-
- uint8_t resonance=file->get_byte();
-
- p_instrument->set_filter_default_resonance(resonance&0x7F);
- p_instrument->set_filter_use_default_resonance(resonance&0x80);
-
- file->get_dword(); //MIDI, IGNORED!
-
- /* CPNote -> CPSample table */
- for (uint8_t i=0;i<CPNote::NOTES;i++) {
-
-
- uint8_t note=file->get_byte();
- if (note>=CPNote::NOTES)
- note=0;
- p_instrument->set_note_number(i,note);
-
- uint8_t samp=file->get_byte();
- if (samp==0 || samp>99)
- samp=CPNote::EMPTY;
- else
- samp--;
-
-
- p_instrument->set_sample_number(i,samp);
-
-
- }
-
-
- load_envelope( p_instrument->get_volume_envelope() );
- load_envelope( p_instrument->get_pan_envelope() );
- bool use_as_filter;
- load_envelope( p_instrument->get_pitch_filter_envelope(), &use_as_filter );
- p_instrument->set_pitch_use_as_filter( use_as_filter );
-
- return FILE_OK;
-
-}
-
-
-CPLoader::Error CPLoader_IT::load_instruments() {
-
-
- for (int i=0;i<header.insnum;i++) {
-
-
- file->seek(0xC0+header.ordnum+i*4);
- uint32_t final_location=file->get_dword();
- file->seek( final_location );
-
- Error err=load_instrument( song->get_instrument( i ) );
- if (err)
- return err;
-
- }
-
- return FILE_OK;
-
- if (file->eof_reached() || file->get_error())
- return FILE_CORRUPTED;
-}
-
-
diff --git a/modules/chibi/cp_loader_it_patterns.cpp b/modules/chibi/cp_loader_it_patterns.cpp
deleted file mode 100644
index 528d99fff7..0000000000
--- a/modules/chibi/cp_loader_it_patterns.cpp
+++ /dev/null
@@ -1,166 +0,0 @@
-/*************************************************************************/
-/* cp_loader_it_patterns.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "cp_loader_it.h"
-
-
-CPLoader::Error CPLoader_IT::load_patterns() {
-
-
- for (int i=0;i<header.patnum;i++) {
-
- if (i>=CPSong::MAX_PATTERNS)
- break;
-
- /* Position where pattern offsets are stored */
- file->seek(0xC0+header.ordnum+header.insnum*4+header.smpnum*4+i*4);
- uint32_t pattern_offset=file->get_dword();
-
- if (pattern_offset==0) {
-
- continue;
- }
-
- uint16_t pat_size;
- uint16_t pat_length;
-
- int row=0,flag,channel,j;
- uint8_t aux_byte;
- uint32_t reserved;
- uint8_t chan_mask[64]; //mask cache for each
- CPNote last_value[64]; //last value of each
-
- for (j=0;j<64;j++) {
-
- chan_mask[j]=0;
- last_value[j].clear();
- }
-
- file->seek(pattern_offset);
-
- pat_size=file->get_word();
- pat_length=file->get_word();
- reserved=file->get_dword();
-
- song->get_pattern(i)->set_length( pat_length );
-
- do {
-
- aux_byte=file->get_byte();
- flag=aux_byte;
-
- if ( flag==0 ) {
-
- row++;
- } else {
-
- channel=(flag-1) & 63;
-
- if ( flag & 128 ) {
-
- aux_byte=file->get_byte();
- chan_mask[channel]=aux_byte;
- }
-
- CPNote note; //note used for reading
-
- if ( chan_mask[channel]&1 ) { // read note
-
- aux_byte=file->get_byte();
-
- if ( aux_byte<120 )
- note.note=aux_byte;
- else if ( aux_byte==255 )
- note.note=CPNote::OFF;
- else if ( aux_byte==254 )
- note.note=CPNote::CUT;
-
- last_value[channel].note=note.note;
- }
-
-
- if ( chan_mask[channel]&2 ) {
-
- aux_byte=file->get_byte();
- if ( aux_byte<100 )
- note.instrument=aux_byte-1;
-
- last_value[channel].instrument=note.instrument;
- }
- if ( chan_mask[channel]&4 ) {
-
- aux_byte=file->get_byte();
- if ( aux_byte<213 )
- note.volume=aux_byte;
-
- last_value[channel].volume=note.volume;
- }
- if ( chan_mask[channel]&8 ) {
-
- aux_byte=file->get_byte();
- if ( aux_byte>0 )
- note.command=aux_byte-1;
-
-
- last_value[channel].command=note.command;
-
- note.parameter=file->get_byte();
-
- last_value[channel].parameter=note.parameter;
- }
-
- if ( chan_mask[channel]&16 ) {
-
- note.note=last_value[channel].note;
- }
-
- if ( chan_mask[channel]&32 ) {
-
- note.instrument=last_value[channel].instrument;
- }
- if ( chan_mask[channel]&64 ) {
-
- note.volume=last_value[channel].volume;
- }
- if ( chan_mask[channel]&128 ) {
-
- note.command=last_value[channel].command;
- note.parameter=last_value[channel].parameter;
- }
-
- song->get_pattern(i)->set_note(channel,row,note);
- }
-
-
- } while(row<pat_length);
-
- }
-
- return FILE_OK;
-}
-
diff --git a/modules/chibi/cp_loader_it_samples.cpp b/modules/chibi/cp_loader_it_samples.cpp
deleted file mode 100644
index c736c99c0f..0000000000
--- a/modules/chibi/cp_loader_it_samples.cpp
+++ /dev/null
@@ -1,620 +0,0 @@
-/*************************************************************************/
-/* cp_loader_it_samples.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "cp_loader_it.h"
-#include "cp_sample.h"
-
-struct AuxSampleData {
-
-
- uint32_t fileofs;
- uint32_t c5spd;
- uint32_t length;
- uint32_t loop_begin;
- uint32_t loop_end;
- bool loop_enabled;
- bool pingpong_enabled;
- bool is16bit;
- bool stereo;
- bool exists;
- bool compressed;
-
-};
-
-
-enum IT_Sample_Flags {
-
- IT_SAMPLE_EXISTS=1,
- IT_SAMPLE_16BITS=2,
- IT_SAMPLE_STEREO=4,
- IT_SAMPLE_COMPRESSED=8,
- IT_SAMPLE_LOOPED=16,
- IT_SAMPLE_SUSTAIN_LOOPED=32,
- IT_SAMPLE_LOOP_IS_PINGPONG=64,
- IT_SAMPLE_SUSTAIN_LOOP_IS_PINGPONG=128
-};
-
-
-CPLoader::Error CPLoader_IT::load_sample(CPSample *p_sample) {
-
-
- AuxSampleData aux_sample_data;
-
- char aux_header[4];
-
- file->get_byte_array((uint8_t*)aux_header,4);
-
- if ( aux_header[0]!='I' ||
- aux_header[1]!='M' ||
- aux_header[2]!='P' ||
- aux_header[3]!='S') {
-
- //CP_PRINTERR("IT CPLoader CPSample: Failed Identifier");
- return FILE_UNRECOGNIZED;
- }
-
-
- // Ignore deprecated 8.3 filename
- for (int i=0;i<12;i++) file->get_byte();
-
- file->get_byte(); //ignore zerobyte
-
- p_sample->set_global_volume( file->get_byte() );
-
- /* SAMPLE FLAGS */
- uint8_t flags=file->get_byte();
- aux_sample_data.loop_enabled=flags&IT_SAMPLE_LOOPED;
- aux_sample_data.pingpong_enabled=flags&IT_SAMPLE_LOOP_IS_PINGPONG;
- aux_sample_data.is16bit=flags&IT_SAMPLE_16BITS;
- aux_sample_data.exists=flags&IT_SAMPLE_EXISTS;
- aux_sample_data.stereo=flags&IT_SAMPLE_STEREO;
- aux_sample_data.compressed=flags&IT_SAMPLE_COMPRESSED;
-
- p_sample->set_default_volume(file->get_byte());
- /* SAMPLE NAME */
- char aux_name[26];
- file->get_byte_array((uint8_t*)aux_name,26);
- p_sample->set_name(aux_name);
-
- // ??
- uint8_t convert_flag=file->get_byte();
- // PAN
- uint8_t pan=file->get_byte();
- p_sample->set_pan( pan&0x7F );
- p_sample->set_pan_enabled( pan & 0x80 );
-
- aux_sample_data.length=file->get_dword();
-
-
- aux_sample_data.loop_begin= file->get_dword();
- aux_sample_data.loop_end= file->get_dword();
- aux_sample_data.c5spd=file->get_dword();
- /*p_sample->data.set_sustain_loop_begin=*/file->get_dword();
- /*p_sample->data.sustain_loop_end=*/file->get_dword();
- aux_sample_data.fileofs=file->get_dword();
- p_sample->set_vibrato_speed( file->get_byte() );
- p_sample->set_vibrato_depth( file->get_byte() );
- p_sample->set_vibrato_rate( file->get_byte() );
- switch( file->get_byte() ) {
- /* Vibrato Wave: 0=sine, 1=rampdown, 2=square, 3=random */
- case 0: p_sample->set_vibrato_type( CPSample::VIBRATO_SINE ); break;
- case 1: p_sample->set_vibrato_type( CPSample::VIBRATO_SAW ); break;
- case 2: p_sample->set_vibrato_type( CPSample::VIBRATO_SQUARE ); break;
- case 3: p_sample->set_vibrato_type( CPSample::VIBRATO_RANDOM ); break;
- default: p_sample->set_vibrato_type( CPSample::VIBRATO_SINE ); break;
- }
-
- //printf("Name %s - Flags: fileofs :%i - c5spd %i - len %i 16b %i - data?: %i\n",p_sample->get_name(),aux_sample_data.fileofs,aux_sample_data.c5spd, aux_sample_data.length, aux_sample_data.is16bit,aux_sample_data.exists);
- CPSample_ID samp_id;
-
- if (aux_sample_data.exists) {
- samp_id=load_sample_data(aux_sample_data);
- CPSampleManager::get_singleton()->set_c5_freq(samp_id,aux_sample_data.c5spd);
- CPSampleManager::get_singleton()->set_loop_begin( samp_id,aux_sample_data.loop_begin );
- CPSampleManager::get_singleton()->set_loop_end( samp_id,aux_sample_data.loop_end );
- CPSample_Loop_Type loop_type=aux_sample_data.loop_enabled?( aux_sample_data.pingpong_enabled? CP_LOOP_BIDI: CP_LOOP_FORWARD):CP_LOOP_NONE;
- CPSampleManager::get_singleton()->set_loop_end( samp_id,aux_sample_data.loop_end );
- CPSampleManager::get_singleton()->set_loop_type( samp_id, loop_type);
-
- }
-
- //printf("Loaded id is null?: %i\n",samp_id.is_null());
- p_sample->set_sample_data(samp_id);
- if (!samp_id.is_null()) {
-
- //printf("Loaded ID: stereo: %i len %i 16bit %i\n",CPSampleManager::get_singleton()->is_stereo(samp_id), CPSampleManager::get_singleton()->get_size( samp_id), CPSampleManager::get_singleton()->is_16bits( samp_id) );
- }
-
- CP_ERR_COND_V( file->eof_reached(),FILE_CORRUPTED );
- CP_ERR_COND_V( file->get_error(),FILE_CORRUPTED );
-
- return FILE_OK;
-
-}
-
-CPSample_ID CPLoader_IT::load_sample_data(AuxSampleData& p_sample_data) {
-
-
- int aux_sample_properties = (p_sample_data.is16bit?IT_SAMPLE_16BITS:0)|(p_sample_data.compressed?IT_SAMPLE_COMPRESSED:0)|(p_sample_data.stereo?IT_SAMPLE_STEREO:0);
-
- file->seek(p_sample_data.fileofs);
-
- CPSampleManager *sm=CPSampleManager::get_singleton();
-
- CPSample_ID id;
-
- switch (aux_sample_properties) {
-
- case (0): // 8 bits, mono
- case (IT_SAMPLE_16BITS): // 16 bits mono
- case (IT_SAMPLE_STEREO): // 8 bits stereo
- case (IT_SAMPLE_16BITS|IT_SAMPLE_STEREO): { // 16 bits mono
-
- id=sm->create(p_sample_data.is16bit,p_sample_data.stereo,p_sample_data.length);
- if (id.is_null())
- break;
-
- sm->lock_data(id);
-
- int16_t *ptr16 = (int16_t*)sm->get_data(id);
- int8_t *ptr8=(int8_t*)ptr16;
-
- int chans=p_sample_data.stereo?2:1;
-
- if (p_sample_data.is16bit) {
-
- for (int c=0;c<chans;c++) {
-
- for (int i=0;i<p_sample_data.length;i++) {
-
- ptr16[i*chans+c]=file->get_word();
- }
- }
- } else {
-
- for (int c=0;c<chans;c++) {
-
- for (int i=0;i<p_sample_data.length;i++) {
-
- ptr8[i*chans+c]=file->get_byte();
- }
- }
-
- }
-
- sm->unlock_data(id);
-
- } break;
- case (IT_SAMPLE_COMPRESSED): { // 8 bits compressed
-
-
- id=sm->create(false,false,p_sample_data.length);
- if (id.is_null())
- break;
- sm->lock_data(id);
-
- if ( load_sample_8bits_IT_compressed((void*)sm->get_data( id),p_sample_data.length) ) {
-
- sm->unlock_data(id);
- sm->destroy(id);
-
- break;
- }
-
- sm->unlock_data(id);
-
-
- } break;
- case (IT_SAMPLE_16BITS|IT_SAMPLE_COMPRESSED): { // 16 bits compressed
-
-
- id=sm->create(true,false,p_sample_data.length);
- if (id.is_null())
- break;
- sm->lock_data(id);
-
- if ( load_sample_16bits_IT_compressed((void*)sm->get_data(id),p_sample_data.length) ) {
-
- sm->unlock_data(id);
- sm->destroy(id);
- break;
- }
-
- sm->unlock_data(id);
-
- } break;
- default: {
-
- // I dont know how to handle stereo compressed, does that exist?
- } break;
-
- }
-
-
- return id;
-}
-
-
-CPLoader::Error CPLoader_IT::load_samples() {
-
- for (int i=0;i<header.smpnum;i++) {
-
- //seek to sample
- file->seek(0xC0+header.ordnum+header.insnum*4+i*4);
-
- uint32_t final_location=file->get_dword();
- file->seek( final_location );
-
-
- Error err=load_sample(song->get_sample(i));
- CP_ERR_COND_V(err,err);
-
- }
-
- if (file->eof_reached() || file->get_error())
- return FILE_CORRUPTED;
-
- return FILE_OK;
-}
-/* * NOTICE * NOTICE * NOTICE * NOTICE * NOTICE * NOTICE * NOTICE * NOTICE * NOTICE * NOTICE * NOTICE
-
- -The following sample decompression code is based on xmp's code.(http://xmp.helllabs.org) which is based in openCP code.
-
-* NOTICE * NOTICE * NOTICE * NOTICE * NOTICE * NOTICE * NOTICE * NOTICE * NOTICE * NOTICE * NOTICE */
-
-uint32_t CPLoader_IT::read_n_bits_from_IT_compressed_block (uint8_t p_bits_to_read) {
-
- uint32_t aux_return_value;
- uint32_t val;
-
- uint8_t *buffer=(uint8_t*)source_position;
- if ( p_bits_to_read <= source_remaining_bits ) {
-
- val=buffer[3];
- val<<=8;
- val|=buffer[2];
- val<<=8;
- val|=buffer[1];
- val<<=8;
- val|=buffer[0];
-
- aux_return_value = val & ((1 << p_bits_to_read) - 1);
- val >>= p_bits_to_read;
- source_remaining_bits -= p_bits_to_read;
-
- buffer[3]=val>>24;
- buffer[2]=(val>>16)&0xFF;
- buffer[1]=(val>>8)&0xFF;
- buffer[0]=(val)&0xFF;
-
- } else {
- aux_return_value=buffer[3];
- aux_return_value<<=8;
- aux_return_value|=buffer[2];
- aux_return_value<<=8;
- aux_return_value|=buffer[1];
- aux_return_value<<=8;
- aux_return_value|=buffer[0];
-
- uint32_t nbits = p_bits_to_read - source_remaining_bits;
- source_position++;
-
- buffer+=4;
- val=buffer[3];
- val<<=8;
- val|=buffer[2];
- val<<=8;
- val|=buffer[1];
- val<<=8;
- val|=buffer[0];
- aux_return_value |= ((val & ((1 << nbits) - 1)) << source_remaining_bits);
- val >>= nbits;
- source_remaining_bits = 32 - nbits;
- buffer[3]=val>>24;
- buffer[2]=(val>>16)&0xFF;
- buffer[1]=(val>>8)&0xFF;
- buffer[0]=(val)&0xFF;
-
- }
-
- return aux_return_value;
-}
-
-bool CPLoader_IT::read_IT_compressed_block (bool p_16bits) {
-
- uint16_t size;
-
- size=file->get_word();
-
- if (file->eof_reached() || file->get_error()) return true;
-
- pat_data = (uint8_t*)CP_ALLOC( 4* ((size >> 2) + 2) );
- if (!pat_data)
- return true;
-
-
- source_buffer=(uint32_t*)pat_data;
- file->get_byte_array((uint8_t*)source_buffer,size);
-
- if (file->eof_reached() || file->get_error()) {
-
- free_IT_compressed_block();
- return true;
- }
-
- source_position = source_buffer;
- source_remaining_bits = 32;
-
- return false;
-}
-
-void CPLoader_IT::free_IT_compressed_block () {
-
-
- if (pat_data) {
- CP_FREE(pat_data);
- pat_data=NULL;
- }
-
-}
-
-bool CPLoader_IT::load_sample_8bits_IT_compressed(void *p_dest_buffer,int p_buffsize) {
-
- int8_t *dest_buffer; /* destination buffer which will be returned */
- uint16_t block_length; /* length of compressed data block in samples */
- uint16_t block_position; /* position in block */
- uint8_t bit_width; /* actual "bit width" */
- uint16_t aux_value; /* value read from file to be processed */
- int8_t d1, d2; /* integrator buffers (d2 for it2.15) */
- int8_t *dest_position; /* position in output buffer */
- int8_t v; /* sample value */
- bool it215; // is this an it215 module?
-
- dest_buffer = (int8_t *) p_dest_buffer;
-
- if (dest_buffer==NULL)
- return true;
-
- for (int i=0;i<p_buffsize;i++)
- dest_buffer[i]=0;
-
-
- dest_position = dest_buffer;
-
- it215=(header.cmwt==0x215);
-
- /* now unpack data till the dest buffer is full */
-
- while (p_buffsize) {
- /* read a new block of compressed data and reset variables */
- if ( read_IT_compressed_block(false) ) {
- CP_PRINTERR("Out of memory decompressing IT CPSample");
- return true;
- }
-
-
- block_length = (p_buffsize < 0x8000) ? p_buffsize : 0x8000;
-
- block_position = 0;
-
- bit_width = 9; /* start with width of 9 bits */
-
- d1 = d2 = 0; /* reset integrator buffers */
-
- /* now uncompress the data block */
- while ( block_position < block_length ) {
-
- aux_value = read_n_bits_from_IT_compressed_block(bit_width); /* read bits */
-
- if ( bit_width < 7 ) { /* method 1 (1-6 bits) */
-
- if ( aux_value == (1 << (bit_width - 1)) ) { /* check for "100..." */
-
- aux_value = read_n_bits_from_IT_compressed_block(3) + 1; /* yes -> read new width; */
- bit_width = (aux_value < bit_width) ? aux_value : aux_value + 1;
- /* and expand it */
- continue; /* ... next value */
- }
-
- } else if ( bit_width < 9 ) { /* method 2 (7-8 bits) */
-
- uint8_t border = (0xFF >> (9 - bit_width)) - 4;
- /* lower border for width chg */
-
- if ( aux_value > border && aux_value <= (border + 8) ) {
-
- aux_value -= border; /* convert width to 1-8 */
- bit_width = (aux_value < bit_width) ? aux_value : aux_value + 1;
- /* and expand it */
- continue; /* ... next value */
- }
-
-
- } else if ( bit_width == 9 ) { /* method 3 (9 bits) */
-
- if ( aux_value & 0x100 ) { /* bit 8 set? */
-
- bit_width = (aux_value + 1) & 0xff; /* new width... */
- continue; /* ... and next value */
- }
-
- } else { /* illegal width, abort */
-
-
- free_IT_compressed_block();
- CP_PRINTERR("CPSample has illegal BitWidth ");
- return true;
- }
-
- /* now expand value to signed byte */
- if ( bit_width < 8 ) {
-
- uint8_t tmp_shift = 8 - bit_width;
-
- v=(aux_value << tmp_shift);
- v>>=tmp_shift;
-
- } else v = (int8_t) aux_value;
-
- /* integrate upon the sample values */
- d1 += v;
- d2 += d1;
-
- /* ... and store it into the buffer */
- *(dest_position++) = it215 ? d2 : d1;
- block_position++;
-
- }
-
- /* now subtract block lenght from total length and go on */
- free_IT_compressed_block();
- p_buffsize -= block_length;
- }
-
-
- return false;
-}
-
-bool CPLoader_IT::load_sample_16bits_IT_compressed(void *p_dest_buffer,int p_buffsize) {
-
- int16_t *dest_buffer; /* destination buffer which will be returned */
- uint16_t block_length; /* length of compressed data block in samples */
- uint16_t block_position; /* position in block */
- uint8_t bit_width; /* actual "bit width" */
- uint32_t aux_value; /* value read from file to be processed */
- int16_t d1, d2; /* integrator buffers (d2 for it2.15) */
- int16_t *dest_position; /* position in output buffer */
- int16_t v; /* sample value */
-
- bool it215; // is this an it215 module?
-
- dest_buffer = (int16_t *) p_dest_buffer;
-
- if (dest_buffer==NULL)
- return true;
-
- for (int i=0;i<p_buffsize;i++)
- dest_buffer[i]=0;
-
- dest_position = dest_buffer;
-
- it215=(header.cmwt==0x215);
-
-
- while (p_buffsize) {
- /* read a new block of compressed data and reset variables */
- if ( read_IT_compressed_block(true) ) {
-
- return true;
- }
-
-
- block_length = (p_buffsize < 0x4000) ? p_buffsize : 0x4000;
-
- block_position = 0;
-
- bit_width = 17; /* start with width of 9 bits */
-
- d1 = d2 = 0; /* reset integrator buffers */
-
- while ( block_position < block_length ) {
-
- aux_value = read_n_bits_from_IT_compressed_block(bit_width); /* read bits */
-
- if ( bit_width < 7 ) { /* method 1 (1-6 bits) */
-
- if ( (signed)aux_value == (1 << (bit_width - 1)) ) { /* check for "100..." */
-
- aux_value = read_n_bits_from_IT_compressed_block(4) + 1; /* yes -> read new width; */
- bit_width = (aux_value < bit_width) ? aux_value : aux_value + 1;
- /* and expand it */
- continue; /* ... next value */
- }
-
- } else if ( bit_width < 17 ) {
-
- uint16_t border = (0xFFFF >> (17 - bit_width)) - 8;
-
- if ( (int)aux_value > (int)border && (int)aux_value <= ((int)border + 16) ) {
-
- aux_value -= border; /* convert width to 1-8 */
- bit_width = (aux_value < bit_width) ? aux_value : aux_value + 1;
- /* and expand it */
- continue; /* ... next value */
- }
-
-
- } else if ( bit_width == 17 ) {
-
- if ( aux_value & 0x10000 ) { /* bit 8 set? */
-
- bit_width = (aux_value + 1) & 0xff; /* new width... */
- continue; /* ... and next value */
- }
-
- } else { /* illegal width, abort */
-
- CP_PRINTERR("CPSample has illegal BitWidth ");
-
- free_IT_compressed_block();
-
- return true;
- }
-
- /* now expand value to signed byte */
- if ( bit_width < 16 ) {
-
- uint8_t tmp_shift = 16 - bit_width;
-
- v=(aux_value << tmp_shift);
- v>>=tmp_shift;
-
- } else v = (int16_t) aux_value;
-
- /* integrate upon the sample values */
- d1 += v;
- d2 += d1;
-
- /* ... and store it into the buffer */
- *(dest_position++) = it215 ? d2 : d1;
- block_position++;
-
- }
-
- /* now subtract block lenght from total length and go on */
- free_IT_compressed_block();
- p_buffsize -= block_length;
- }
-
-
- return false;
-
-}
-
-
-
diff --git a/modules/chibi/cp_loader_mod.cpp b/modules/chibi/cp_loader_mod.cpp
deleted file mode 100644
index cfa3e34736..0000000000
--- a/modules/chibi/cp_loader_mod.cpp
+++ /dev/null
@@ -1,482 +0,0 @@
-/*************************************************************************/
-/* cp_loader_mod.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "cp_loader_mod.h"
-
-
-static bool tag_equal_to(const char *p_tag, const char *p_string) {
-
- return( p_tag[0]==p_string[0] &&
- p_tag[1]==p_string[1] &&
- p_tag[2]==p_string[2] &&
- p_tag[3]==p_string[3]);
-}
-/* ProTracker period table */
-uint16_t period_table[6*12] = {
- 1712,1616,1524,1440,1356,1280,1208,1140,1076,1016,960,907,
- 856,808,762,720,678,640,604,570,538,508,480,453,
- 428,404,381,360,339,320,302,285,269,254,240,226,
- 214,202,190,180,170,160,151,143,135,127,120,113,
- 107,101,95,90,85,80,75,71,67,63,60,56,
- 53,50,47,45,42,40,37,35,33,31,30,28
-};
-
-
-CPLoader::Error CPLoader_MOD::load_song(const char *p_file,CPSong *p_song,bool p_sampleset) {
-
- if (file->open(p_file,CPFileAccessWrapper::READ)) {
- //printf("Can't open file! %s\n",p_file);
- return FILE_CANNOT_OPEN;
- };
-
- /* FIRST OF ALL, one needs to read the .mod file format tag */
- file->seek( 1080 ); //located at 1080
-
- char format_tag[4];
-
- file->get_byte_array( (uint8_t*)format_tag, 4 );
-
- int channels=-1;
-
- /** THE PAIN!! - COMPARE TAGS */
-
- /* Classic 4-chan */
- if (tag_equal_to(format_tag,"M.K.") )
- channels=4;
- if (tag_equal_to(format_tag,"FLT4") )
- channels=4;
- if (tag_equal_to(format_tag,"M!K!") )
- channels=4;
-
- /* 8 Channel MODS */
-
- if (tag_equal_to(format_tag,"FLT8") )
- channels=2;
-
- if (tag_equal_to(format_tag,"CD81") )
- channels=2;
-
- /* Custom channel MODS */
-
- for (int i=1;i<=32;i++) {
-
- if (i<10) { // up to 9 channels mods
-
- /* Old Take Tracker */
- char old_take_tracker[4]={'T','D','Z',char('0'+i)};
-
- if (tag_equal_to(format_tag,old_take_tracker)) {
-
- channels=i;
- break;
- }
-
- /* Contemplates many XCHN Formats */
- char xchn[4]={char('0'+i),'C','H','N'};
-
- if (tag_equal_to(format_tag,xchn)) {
-
- channels=i;
- break;
- }
- }
-
- /* Fast Tracker */
- char fast_tracker[4]={char('0'+(i/10)),char('0'+(i%10)),'C','H'};
-
- if (tag_equal_to(format_tag,fast_tracker)) {
-
- channels=i;
- break;
- }
-
- }
-
-
- if (channels==-1) {
-
- file->close();
- return FILE_UNRECOGNIZED;
- }
-
-
-
- /** Load CPSong INFO */
-
- file->seek( 0 ); //go to begining of file
-
- file->set_endian_conversion( true );
- p_song->reset();
- p_song->set_instruments( false );
-
- char name[21];
-
- file->get_byte_array( (uint8_t*)name,20);
- name[20]=0;
-
- p_song->set_name(name);
- p_song->set_old_effects( true );
- p_song->set_linear_slides( false );
- p_song->set_compatible_gxx( true );
-
-
-
- CPSampleManager *sm=CPSampleManager::get_singleton();
-
- int instruments=31;
-
- for (int i=0;i<instruments;i++) {
-
- char sample_name[23];
- file->get_byte_array( (uint8_t*)sample_name,22);
- sample_name[22]=0;
-
- uint32_t sample_len=file->get_word();
- sample_len<<=1;
-
- uint8_t fine_nibble=file->get_byte()&0xF;
-
-
- //(int8_t)(fine_nibble & 7) - (int8_t)(fine_nibble & 8); //yesso's genius trick
- // boo, I can't use it :( but i leave it here because of how cool it is
- uint8_t linear_volume=file->get_byte(); //0 .. ?
-
- uint32_t loop_begin=file->get_word(); //0 .. ?
- loop_begin<<=1;
- uint32_t loop_end=file->get_word(); //0 .. ?
- loop_end<<=1;
-
- if (sample_len>0) {
-
- CPSample_ID sid=sm->create( false, false, sample_len );
-
- if (sid.is_null()) {
-
- file->close();
- return FILE_OUT_OF_MEMORY;
- }
-
- if (loop_end>2) {
- sm->set_loop_begin( sid, loop_begin );
- sm->set_loop_end( sid, loop_end+loop_begin );
- sm->set_loop_type( sid,CP_LOOP_FORWARD );
- }
- static const uint16_t fine_to_freq[16]={
- 8363,8413,8463,8529,8581,8651,8723,8757,
- 7895,7941,7985,8046,8107,8169,8232,8280
- };
-
- sm->set_c5_freq( sid, fine_to_freq[fine_nibble] );
- p_song->get_sample(i)->set_sample_data(sid);
- }
-
- p_song->get_sample(i)->set_name(sample_name);
- p_song->get_sample(i)->set_default_volume( linear_volume );
-
-
-
- }
-
- /* pan for MODs */
- for (int i=0;i<channels;i++)
- p_song->set_channel_pan( i, (((i&3)==1) || ((i&3)==2)) ? 0: 64);
-
-
- uint8_t order_count=file->get_byte();
- //uint8_t loop_to=file->get_byte();
-
-
- int pattern_count=0;
-
- for (int i=0;i<128;i++) {
-
- uint8_t order=file->get_byte();
-
-
- if (i<order_count) {
- p_song->set_order(i,order);
-
- /* Determine the amount of patterns */
- if ((order+1)>pattern_count)
- pattern_count=order+1;
- } else
- p_song->set_order( i, CP_ORDER_NONE );
- }
-
- if (instruments==31)
- file->get_dword(); // identiefier, now skip it
-
- for (int i=0;i<pattern_count;i++) {
-
- for(int line=0;line<64;line++) {
-
- for(int column=0;column<channels;column++) {
-
- uint32_t note_w=file->get_dword();
-
- CPNote note;
-
- note.instrument=(note_w>>12)&0xF;
- note.instrument|=(note_w>>24)&0xF0;
-
- if (note.instrument==0)
- note.instrument=CPNote::EMPTY;
- else
- note.instrument--;
-
- note.parameter=note_w&0xFF;
-
- int cmd=(note_w>>8)&0xF;
-
- uint32_t period=(note_w>>16)&0xFFF;
-
- if (period>0 && period<0xFFF) {
-
- //period>>=2;
- //period<<=1;
- for (int n=0; n<6*12; n++) {
-
- if (period >= period_table[n]) {
-
- if ((period!=period_table[n]) && (n))
- {
- uint32_t p1 = period_table[n-1];
- uint32_t p2 = period_table[n];
- if (p1 - period < (period - p2)) {
-
- note.note=n+36;
- break;
- }
- }
- note.note=n+1+36;
- break;
- }
- }
- if (note.note==CPNote::EMPTY)
- note.note=6*12+36;
-
- note.note--;
- }
-
-
- switch(cmd) {
-
- case 0x0: {
-
- if (note.parameter>0)
- note.command='J'-'A';
- } break;
- case 0x1: {
- note.command='F'-'A';
- } break;
- case 0x2: {
-
- note.command='E'-'A';
- } break;
- case 0x3: {
-
- note.command='G'-'A';
- } break;
- case 0x4: {
-
- note.command='H'-'A';
- } break;
- case 0x5: {
- note.command='L'-'A';
- } break;
- case 0x6: {
-
- note.command='K'-'A';
- } break;
- case 0x7: {
- note.command='R'-'A';
- } break;
- case 0x8: {
-
- note.command='X'-'A';
- } break;
- case 0x9: {
-
- note.command='O'-'A';
-
- } break;
- case 0xA: {
-
- note.command='D'-'A';
-
- } break;
- case 0xB: {
-
- note.command='B'-'A';
-
- } break;
- case 0xC: {
-
- note.volume=note.parameter;
- if (note.volume>64)
- note.volume=64;
- note.parameter=0;
-
- } break;
- case 0xD: {
-
- note.command='C'-'A';
- note.parameter=(note.parameter>>4)*10 + (note.parameter&0xF);
-
- } break;
- case 0xE: { //SPECIAL EFFECT!
-
- note.command='S'-'A';
-
- switch(note.parameter>>4) {
-
- case 0x1: {
-
- note.command='F'-'A';
- note.parameter=0xF0|(note.parameter&0xF);
- } break;
- case 0x2: {
-
- note.command='E'-'A';
- note.parameter=0xF0|(note.parameter&0xF);
- } break;
- case 0x4: {
-
- note.command='S'-'A';
- note.parameter=0x30|(note.parameter&0x3);
-
- } break;
- case 0x6: {
-
- note.command='S'-'A';
- note.parameter=0xB0|(note.parameter&0xF);
-
- } break;
- case 0x7: {
- note.command='S'-'A';
- note.parameter=0x40|(note.parameter&0x3);
-
- } break;
- case 0x8: {
-
- note.command='S'-'A'; // wow, it's the same!
-
- } break;
- case 0x9: {
- note.command='Q'-'A';
- note.parameter=(note.parameter&0xF);
-
- } break;
- case 0xA: {
-
- note.command='D'-'A';
- note.parameter=0xF|((note.parameter&0xF)<<4);
-
- } break;
- case 0xB: {
- note.command='D'-'A';
- note.parameter=0xF0|(note.parameter&0xF);
-
- } break;
- case 0xC:
- case 0xD: {
-
- note.command='S'-'A'; //wow, they are the same!
-
- } break;
- case 0xE: {
- note.command='S'-'A';
- note.parameter=0x60|(note.parameter&0xF);
-
- } break;
-
- default: {
-
- note.command=CPNote::EMPTY;
- note.parameter=0;
- } break;
-
- }
- } break;
- case 0xF: {
-
- if (note.parameter<32)
- note.command='A'-'A';
- else
- note.command='T'-'A';
-
- } break;
- }
-
- p_song->get_pattern(i)->set_note( column,line, note );
- }
- }
- }
-
-
-
- for (int i=0;i<instruments;i++) {
-
- CPSample_ID sid=p_song->get_sample(i)->get_sample_data();
- if (sid.is_null()) {
- continue; //empty sample, not stored?
- }
- sm->lock_data(sid);
- uint8_t *dataptr = (uint8_t*)sm->get_data(sid);
-
- int len=sm->get_size(sid);
- for (int s=0;s<len;s++) {
-
- uint8_t d=file->get_byte();
- //d-=128; //convert to signed
- int8_t*ds=(int8_t*)&d;
- dataptr[s]=*ds;
-
- }
- sm->unlock_data(sid);
- }
-
- file->close();
-
- return FILE_OK;
-
-
-}
-
-
-CPLoader_MOD::CPLoader_MOD(CPFileAccessWrapper *p_file) {
-
- file=p_file;
-}
-
-
-CPLoader_MOD::~CPLoader_MOD()
-{
-}
-
-
diff --git a/modules/chibi/cp_loader_mod.h b/modules/chibi/cp_loader_mod.h
deleted file mode 100644
index 57f7128bc0..0000000000
--- a/modules/chibi/cp_loader_mod.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*************************************************************************/
-/* cp_loader_mod.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef CP_LOADER_MOD_H
-#define CP_LOADER_MOD_H
-#include "cp_loader.h"
-/**
- @author Juan Linietsky <reduz@gmail.com>
-*/
-class CPLoader_MOD : public CPLoader {
-
- CPFileAccessWrapper *file;
-public:
-
- bool can_load_song() { return true; }
- bool can_load_sample() { return false; }
- bool can_load_instrument() { return false; }
-
- Error load_song(const char *p_file,CPSong *p_song,bool p_sampleset);
- Error load_sample(const char *p_file,CPSample *p_sample) { return FILE_UNRECOGNIZED; }
- Error load_instrument(const char *p_file,CPSong *p_song,int p_instr_idx) { return FILE_UNRECOGNIZED; }
-
- CPLoader_MOD(CPFileAccessWrapper *p_file);
- ~CPLoader_MOD();
-};
-
-#endif
diff --git a/modules/chibi/cp_loader_s3m.cpp b/modules/chibi/cp_loader_s3m.cpp
deleted file mode 100644
index 4943e6d86c..0000000000
--- a/modules/chibi/cp_loader_s3m.cpp
+++ /dev/null
@@ -1,413 +0,0 @@
-/*************************************************************************/
-/* cp_loader_s3m.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "cp_loader_s3m.h"
-
-#define BITBOOL(m_exp) ((m_exp)?1:0)
-
-
-CPLoader::Error CPLoader_S3M::load_header() {
-
- int i;
-
-
- file->get_byte_array((uint8_t*)header.songname,28);
- header.t1a=file->get_byte();
- header.type=file->get_byte();
- file->get_byte_array((uint8_t*)header.unused1,2);
- header.ordnum=file->get_word();
- header.insnum=file->get_word();
- header.patnum=file->get_word();
- header.flags=file->get_word();
- header.tracker=file->get_word();
- header.fileformat=file->get_word();
- file->get_byte_array((uint8_t*)header.scrm,4);
- header.scrm[4]=0;
-
- if (header.scrm[0]!='S' || header.scrm[1]!='C' || header.scrm[2]!='R' || header.scrm[3]!='M')
- return FILE_UNRECOGNIZED;
-
- header.mastervol=file->get_byte();
- header.initspeed=file->get_byte();
- header.inittempo=file->get_byte();
- header.mastermult=file->get_byte();
- header.ultraclick=file->get_byte();
- header.pantable=file->get_byte();
- file->get_byte_array((uint8_t*)header.unused2,8);
- header.special=file->get_word();
- file->get_byte_array((uint8_t*)header.channels,32);
-
- file->get_byte_array((uint8_t*)header.orderlist,header.ordnum);
-
- header.scrm[4]=0;
- if (header.scrm[0]!='S' || header.scrm[1]!='C' || header.scrm[2]!='R' || header.scrm[3]!='M') //again?
- return FILE_UNRECOGNIZED;
- //sample parapointers
- for (i=0;i<header.insnum;i++) {
-
- int parapointer;
- parapointer=file->get_word();
- parapointer=(parapointer*16);
- sample_parapointers[i]=parapointer;
- }
- //pattern
- for (i=0;i<header.patnum;i++) {
-
- int parapointer;
- parapointer=file->get_word();
- parapointer=(parapointer*16);
- pattern_parapointers[i]=parapointer;
- }
-
- if (header.pantable==252) {
-
- file->get_byte_array((uint8_t*)header.pannings,32);
- }
-
- return FILE_OK;
-
-
-}
-
-
-void CPLoader_S3M::set_header() {
-
-
-
-
- song->set_name( header.songname );
- //song->variables.filename=
-
- song->set_row_highlight_minor( 4 );
- song->set_row_highlight_major( 16 );
- song->set_mixing_volume( header.mastervol );
- song->set_linear_slides( false );
- song->set_old_effects( !(header.flags&64) );
- song->set_compatible_gxx( true );
-
- song->set_global_volume( header.mastermult );
- song->set_speed( header.initspeed );
- song->set_tempo( header.inittempo );
-
- //[TODO] Set Panning Positions.. ?
-
- for (int i=0;i<header.ordnum;i++) song->set_order(i,header.orderlist[i]);
-
-}
-
-CPLoader::Error CPLoader_S3M::load_sample(CPSample *p_sample) {
-
-
-
- int type=file->get_byte();
-
- char filename[13];
- file->get_byte_array((uint8_t*)filename,12);
- filename[12]=0;
-
-
- uint32_t samplepos=(uint32_t)file->get_byte() << 16;
- samplepos|=file->get_word();
- samplepos*=16;
- //printf("sample at %i\n",samplepos);
- /**/
- int sample_size=file->get_dword();
-
-
- int loop_begin=file->get_dword();
- int loop_end=file->get_dword();
-
- int def_volume=file->get_byte();;
- int dsk=file->get_byte();
- int pack=file->get_byte();
-
- int flags=file->get_byte();
- int c2speed=file->get_dword();
-
- file->get_dword(); //useless crap
- file->get_dword();
- file->get_dword();
-
-
- char name[29];
- file->get_byte_array((uint8_t*)name,28);
- name[28]=0;
-
- p_sample->set_default_volume(def_volume);
- p_sample->set_name(name);
-
- char scrs[5];
- file->get_byte_array((uint8_t*)scrs,4);
- scrs[4]=0;
-
-
-
- bool data_is_16bits=flags&4;
- bool data_is_stereo=flags&2;
-
- if (type==0) {
- //empty sample
- return FILE_OK;
- }
-
-
- if ((type!=1) || scrs[0]!='S' || scrs[1]!='C' || scrs[2]!='R' || scrs[3]!='S' ) {
- //printf("type: %i, %c%c%c%c\n",type,scrs[0],scrs[1],scrs[2],scrs[3]);
- CP_PRINTERR("Not an S3M CPSample!");
- return FILE_CORRUPTED;
- }
-
- //p_sample->data.set_c5_freq(p_sample->c2spd<<1);
-
- file->seek(samplepos);
-
- int real_sample_size=sample_size<<BITBOOL(data_is_16bits);
- real_sample_size<<=BITBOOL(data_is_stereo);
-
- CPSampleManager *sm=CPSampleManager::get_singleton();
-
- CPSample_ID id =sm->create( data_is_16bits, data_is_stereo, sample_size );
-
- if (id.is_null())
- return FILE_OUT_OF_MEMORY;
-
- sm->lock_data(id);
- void *dataptr = sm->get_data(id);
-
- int chans = (data_is_stereo?2:1);
- for (int c=0;c<chans;c++) {
- for (int i=0;i<sample_size;i++) {
-
- if (data_is_16bits) {
-
- uint16_t s=file->get_word();
- s-=32768; //toggle sign
-
- int16_t *v=(int16_t*)&s;
- ((int16_t*)dataptr)[i*chans+c]=*v;
- } else {
-
-
- int8_t *v;
- uint8_t s=file->get_byte();
- s-=128; //toggle sign
- v=(int8_t*)&s;
- ((int8_t*)dataptr)[i*chans+c]=*v;
-
- }
-
- }
-
- }
-
- sm->unlock_data(id);
-
-
- sm->set_loop_begin( id, loop_begin );
- sm->set_loop_end( id, loop_end );
- sm->set_loop_type( id, (flags&1) ? CP_LOOP_FORWARD : CP_LOOP_NONE );
- sm->set_c5_freq( id, c2speed << 1 );
- p_sample->set_sample_data(id);
-
- /* Scream tracker previous to 3.10 seems to be buggy, as in, wont save what is after the sample loop, including the loop end point. Because of this I must fix it by habd */
- if (flags&1) {
-
- for (int c=0;c<(data_is_stereo?2:1);c++) {
- sm->set_data( id, loop_end, sm->get_data( id, loop_begin,c ),c );
-
- }
- }
-
-
- return FILE_OK;
-
-}
-
-
-CPLoader::Error CPLoader_S3M::load_pattern(CPPattern *p_pattern) {
-
- int row=0,flag,ch;
- CPNote n;
- int length,accum=0;
-
- length=file->get_word();
- p_pattern->set_length(64);
-
- /* clear pattern data */
- while((row<64) && (accum<=length) ) {
- flag=file->get_byte();
- accum++;
-
- n.clear();
- if(flag) {
- // ch=remap[flag&31];
-// ch=remap[flag&31];
-// if(ch!=-1)
-// n=s3mbuf[(64U*ch)+row];
-// else
-// n=&dummy;
-
- ch=flag&31;
-
- if(flag&32) {
- n.note=file->get_byte();
- if (n.note==255) {
-
- n.note=CPNote::EMPTY;
- } else if (n.note==254) {
-
- n.note=CPNote::CUT;
- } else {
-
- n.note=((n.note>>4)*12)+(n.note&0xF);
- }
-
- n.instrument=file->get_byte()-1;
- accum+=2;
-
- }
- if(flag&64) {
- n.volume=file->get_byte();
- if (n.volume>64) n.volume=64;
- accum++;
-
- }
- if(flag&128) {
- n.command=file->get_byte()-1;
- n.parameter=file->get_byte();
- accum+=2;
- }
-
- p_pattern->set_note(ch,row,n);
- } else row++;
- }
- return FILE_OK;
-
-
-}
-
-CPLoader::Error CPLoader_S3M::load_sample(const char *p_file,CPSample *p_sample) {
-
- return FILE_UNRECOGNIZED;
-}
-CPLoader::Error CPLoader_S3M::load_instrument(const char *p_file,CPSong *p_song,int p_instr_idx) {
-
- return FILE_UNRECOGNIZED;
-
-}
-
-
-CPLoader::Error CPLoader_S3M::load_samples() {
-
- int i;
-
- for(i=0;i<header.insnum;i++) {
-
- file->seek(sample_parapointers[i]);
- load_sample(song->get_sample(i));
- sample_count++;
- }
-
- return FILE_OK;
-}
-
-CPLoader::Error CPLoader_S3M::load_patterns() {
-
- int i;
-
- Error err;
- for(i=0;i<header.patnum;i++) {
-
- file->seek(pattern_parapointers[i]);
-
- err=load_pattern(song->get_pattern(i) );
- CP_ERR_COND_V(err,err);
-
-
- pattern_count++;
- }
- return FILE_OK;
-
-}
-
-CPLoader::Error CPLoader_S3M::load_song(const char *p_file,CPSong *p_song,bool p_sampleset) {
-
- song=p_song;
-
- if (file->open(p_file,CPFileAccessWrapper::READ)) {
- //printf("Can't open file! %s\n",p_file);
- return FILE_CANNOT_OPEN;
- };
-
- sample_count=0;
- pattern_count=0;
-
- //printf("LOADING HEADER\n");
- CPLoader::Error err;
- if ((err=load_header())) {
- file->close();
- CP_ERR_COND_V(err,err);
-
- }
-
- song->reset(); //file type recognized, reset song!
-
- set_header();
-
- //printf("LOADING SAMPLES\n");
-
- if ((err=load_samples())) {
- file->close();
-
- CP_ERR_COND_V(err,err);
- }
-
- //printf("LOADING PATTERNS\n");
-
- if ((err=load_patterns())) {
-
- file->close();
- return err;
- }
-
- file->close();
-
- return FILE_OK;
-}
-
-
-
-CPLoader_S3M::CPLoader_S3M(CPFileAccessWrapper *p_file){
-
- file=p_file;
-
-}
-CPLoader_S3M::~CPLoader_S3M(){
-}
-
diff --git a/modules/chibi/cp_loader_s3m.h b/modules/chibi/cp_loader_s3m.h
deleted file mode 100644
index 04ee0b2917..0000000000
--- a/modules/chibi/cp_loader_s3m.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/*************************************************************************/
-/* cp_loader_s3m.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef CP_LOADER_S3M_H
-#define CP_LOADER_S3M_H
-
-#include "cp_loader.h"
-
-/**
- *@author Juan Linietsky
- */
-/******************************
- loader_s3m.h
- ----------
-Scream Tracker Module CPLoader!
-It lacks support for
-individual sample loading
-and reorganizing the columns.
-********************************/
-
-
-
-
-class CPLoader_S3M : public CPLoader {
-
- struct S3M_Header {
- char songname[28];
- uint8_t t1a;
- uint8_t type;
- uint8_t unused1[2];
- uint16_t ordnum;
- uint16_t insnum;
- uint16_t patnum;
- uint16_t flags;
- uint16_t tracker;
- uint16_t fileformat;
- char scrm[5];
- uint8_t mastervol;
- uint8_t initspeed;
- uint8_t inittempo;
- uint8_t mastermult;
- uint8_t ultraclick;
- uint8_t pantable;
- uint8_t unused2[8];
- uint16_t special;
- uint8_t channels[32];
- uint8_t pannings[32];
- uint8_t orderlist[300];
- };
-
-
- int sample_parapointers[CPSong::MAX_SAMPLES];
- int pattern_parapointers[CPSong::MAX_PATTERNS];
-
- Error load_header();
- void set_header();
- Error load_sample(CPSample *p_sample);
- Error load_pattern(CPPattern *p_pattern);
- Error load_patterns();
-
- Error load_samples();
-
- S3M_Header header;
- int sample_count;
- int pattern_count;
-
- CPFileAccessWrapper *file;
- CPSong *song;
-public:
-
- bool can_load_song() { return true; }
- bool can_load_sample() { return false; }
- bool can_load_instrument() { return false; }
-
- Error load_song(const char *p_file,CPSong *p_song,bool p_sampleset);
- Error load_sample(const char *p_file,CPSample *p_sample);
- Error load_instrument(const char *p_file,CPSong *p_song,int p_instr_idx);
-
- CPLoader_S3M(CPFileAccessWrapper *p_file);
- ~CPLoader_S3M();
-};
-
-
-
-#endif
diff --git a/modules/chibi/cp_loader_xm.cpp b/modules/chibi/cp_loader_xm.cpp
deleted file mode 100644
index cbd883642c..0000000000
--- a/modules/chibi/cp_loader_xm.cpp
+++ /dev/null
@@ -1,752 +0,0 @@
-/*************************************************************************/
-/* cp_loader_xm.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "cp_loader_xm.h"
-#include "cp_tables.h"
-
-#define ABORT_LOAD { file->close(); return FILE_CORRUPTED; }
-
-
-
-
-CPLoader::Error CPLoader_XM::load_song(const char *p_file,CPSong *p_song,bool p_sampleset) {
-
- song=p_song;
-
- if (file->open(p_file,CPFileAccessWrapper::READ)) {
-
- return FILE_CANNOT_OPEN;
- };
-
-
- /**************************************
- LOAD HEADER
- ***************************************/
-
- file->get_byte_array(header.idtext,17);
- header.idtext[17]=0;
-
- file->get_byte_array(header.songname,20);
-
-
-
- header.songname[20]=0;
- header.hex1a=file->get_byte();
- if (header.hex1a!=0x1A) { //XM "magic" byte.. this sucks :)
-
- file->close();
- return FILE_UNRECOGNIZED;
-
- }
-
-
- //magic byte sucks, but can't do much about it..
-
- song->reset(); //must reset the song
-
- song->set_name( (const char*)header.songname );
-
- file->get_byte_array(header.trackername,20);
- header.trackername[20]=0;
-
-
- header.version=file->get_word();
-
- header.headersize=file->get_dword();
-
- header.songlength=file->get_word();
-
- header.restart_pos=file->get_word();
-
- header.channels_used=file->get_word();
-
- header.patterns_used=file->get_word();
-
- header.instruments_used=file->get_word();
-
- song->set_linear_slides( file->get_word() );
-
- song->set_speed( file->get_word() );
-
- song->set_tempo( file->get_word() );
- song->set_instruments( true );
-
- file->get_byte_array(header.orderlist,256);
-
- for (int i=0;i<header.songlength;i++) {
-
- if (i>199)
- break;
- song->set_order(i,header.orderlist[i]);
- }
-
- /**************************************
- LOAD PATTERNS
- ***************************************/
-
- for (int i=0;i<header.patterns_used;i++) {
-
- uint32_t aux,rows;
-
- aux=file->get_dword(); //length
- aux=file->get_byte(); //packing type
- rows=aux=file->get_word(); //rows!
-
- song->get_pattern(i)->set_length( aux );
-
- aux=file->get_word(); //packed size
- if (aux==0)
- continue;
- //unpaaack!
- for(int j=0;j<(int)rows;j++)
- for(int k=0;k<header.channels_used;k++) {
-
- CPNote aux_note;
- uint8_t aux_byte;
- //uint8_t field;
- aux_byte=file->get_byte(); //packing type
- if (!(aux_byte&0x80)) {
-
- aux_note.note=aux_byte;
- aux_byte=0xFE; //if bit 7 not set, read all of them except the note
- }
-
- if (aux_byte&1) aux_note.note=file->get_byte();
- if (aux_byte&2) aux_note.instrument=file->get_byte();
- if (aux_byte&4) aux_note.volume=file->get_byte();
- if (aux_byte&8) aux_note.command=file->get_byte();
- if (aux_byte&16) aux_note.parameter=file->get_byte();
-
- if (aux_note.note!=CPNote::EMPTY) {
-
- if (aux_note.note==97) aux_note.note=CPNote::OFF;
- else {
- aux_note.note+=11; //octave minus one (XM C-0 is 1, not zero )
- }
- }
- if (aux_note.instrument!=CPNote::EMPTY) {
-
- if ((aux_note.instrument>0) && (aux_note.instrument<100))
- aux_note.instrument--;
- else
- aux_note.instrument=CPNote::EMPTY;
- }
- if (aux_note.volume!=CPNote::EMPTY) {
-
- if (aux_note.volume<0x10) {}
- else if (aux_note.volume<0x50) {
-
- aux_note.volume-=0x10;
-
- } else if (aux_note.volume<0x60) {
- //
- aux_note.volume=CPNote::EMPTY;
-
- } else if (aux_note.volume<0x70) {
- //60 -- volume slide down
- aux_note.volume-=0x60;
- if (aux_note.volume>9) aux_note.volume=9;
- aux_note.volume+=95;
-
- } else if (aux_note.volume<0x80) {
- //70 -- volume slide up
- aux_note.volume-=0x70;
- if (aux_note.volume>9) aux_note.volume=9;
- aux_note.volume+=85;
-
-
- } else if (aux_note.volume<0x90) {
- //80 -- fine volume slide down
- aux_note.volume-=0x80;
- if (aux_note.volume>9) aux_note.volume=9;
- aux_note.volume+=75;
-
-
- } else if (aux_note.volume<0xA0) {
- //9 -- fine volume slide up
-
- aux_note.volume-=0x90;
- if (aux_note.volume>9) aux_note.volume=9;
-
- aux_note.volume+=65;
-
-
-
- } else if (aux_note.volume<0xB0) {
- //A -- set vibrato speed
- aux_note.volume=CPNote::EMPTY;
-
- } else if (aux_note.volume<0xC0) {
- //B -- vibrato
- aux_note.volume-=0xB0;
- if (aux_note.volume>9) aux_note.volume=9;
- aux_note.volume+=203;
-
-
- } else if (aux_note.volume<0xD0) {
- //C -- set panning
- int aux=aux_note.volume-=0xC0;
- aux=aux*65/0xF;
- aux_note.volume=128+aux;
-
- } else if (aux_note.volume<0xE0) {
- aux_note.volume=CPNote::EMPTY;
-
-
- } else if (aux_note.volume<0xF0) {
- aux_note.volume=CPNote::EMPTY;
-
-
- } else {
- //F -- tone porta
- aux_note.volume-=0xF0;
- aux_note.volume*=9;
- aux_note.volume/=0xF;
- aux_note.volume+=193;
- }
- }
- if (aux_note.command!=CPNote::EMPTY) {
-
- switch(aux_note.command) {
-
- case 0x0:
- aux_note.command='J'-'A';
- break;
- case 0x1:
- aux_note.command='F'-'A';
- break;
- case 0x2:
- aux_note.command='E'-'A';
- break;
- case 0x3:
- aux_note.command='G'-'A';
- break;
- case 0x4:
- aux_note.command='H'-'A';
- break;
- case 0x5:
- aux_note.command='L'-'A';
- break;
- case 0x6:
- aux_note.command='K'-'A';
- break;
- case 0x7:
- aux_note.command='R'-'A';
- break;
- case 0x8:
- aux_note.command='X'-'A';
- break;
- case 0x9:
- aux_note.command='O'-'A';
- break;
- case 0xa:
- aux_note.command='D'-'A';
- break;
- case 0xb:
- aux_note.command='B'-'A';
- break;
- case 0xc:
- //printf("XM Import: Warning! effect C (set volume) not implemented!\n");
- break;
- case 0xd:
- aux_note.command='C'-'A';
- break;
-
- case 0xe: /* Extended effects */
-
- aux_note.command='S'-'A';
- switch(aux_note.parameter>>4) {
- case 0x1: /* XM fine porta up */
- if (!(aux_note.parameter&0xF)) { aux_note.command=CPNote::EMPTY; aux_note.parameter=0; break; }
- aux_note.command='F'-'A';
- aux_note.parameter=0xF0|(aux_note.parameter&0xF);
- break;
- case 0x2: /* XM fine porta down */
- if (!(aux_note.parameter&0xF)) { aux_note.command=CPNote::EMPTY; aux_note.parameter=0; break; }
- aux_note.command='E'-'A';
- aux_note.parameter=0xF0|(aux_note.parameter&0xF);
- break;
- case 0xa: /* XM fine volume up */
- if (!(aux_note.parameter&0xF)) { aux_note.command=CPNote::EMPTY; aux_note.parameter=0; break; }
- aux_note.command='D'-'A';
- aux_note.parameter=0x0F|((aux_note.parameter&0xF)<<4);
-
- break;
- case 0xb: /* XM fine volume down */
- if (!(aux_note.parameter&0xF)) { aux_note.command=CPNote::EMPTY; aux_note.parameter=0; break; }
- aux_note.command='D'-'A';
- aux_note.parameter=0xF0|(aux_note.parameter&0xF);
-
- break;
- case 0x9: /* XM fine volume down */
- if (!(aux_note.parameter&0xF)) { aux_note.command=CPNote::EMPTY; aux_note.parameter=0; break; }
- aux_note.command='Q'-'A';
- aux_note.parameter=0x00|(aux_note.parameter&0xF);
- break;
-
- case 0xc: //notecut
-
- aux_note.parameter=0xC0|(aux_note.parameter&0xF);
- break;
-
- case 0xd: //notedelay
-
- aux_note.parameter=0xD0|(aux_note.parameter&0xF);
- break;
-
- case 0xe: //patterndelay
-
- aux_note.parameter=0xE0|(aux_note.parameter&0xF);
- break;
- }
-
- break;
- case 0xf:
- if (aux_note.parameter<32) {
- aux_note.command='A'-'A';
- } else {
- aux_note.command='T'-'A';
- }
- break;
- case 'G'-55:
- aux_note.command='V'-'A';
- break;
- case 'H'-55:
- aux_note.command='W'-'A';
- break;
- case 'K'-55:
- if (aux_note.note!=CPNote::EMPTY) break;
- aux_note.note=CPNote::OFF;
- break;
- case 'P'-55:
- aux_note.command='P'-'A';
- break;
- case 'R'-55:
- aux_note.command='Q'-'A';
- break;
- case 'T'-55:
- aux_note.command='I'-'A';
- break;
- default: {
-
- aux_note.command=CPNote::EMPTY;
- }
- }
-
-
- }
-
- song->get_pattern( i)->set_note( k,j,aux_note );
- }
- }
-
- /**************************************
- LOAD INSTRUMENTS!
- ***************************************/
-
- for (int i=0;i<header.instruments_used;i++) {
-
-
- uint32_t aux;
- int sampnum;
-
- CPInstrument &instrument=*song->get_instrument(i);
- uint32_t cpos=file->get_pos();
- //printf("pos is %i\n",cpos);
-
-
-
-/* +4 */ uint32_t hsize=file->get_dword(); //header length
-
- char instrname[23];
- instrname[22]=0;
-
- file->get_byte_array((uint8_t*)instrname,22);
-//XM_LOAD_DEBUG printf("name is %s\n",instrname);
-
-/* +27 */ aux=file->get_byte(); //byte that must be ignored
-//XM_LOAD_DEBUG printf("header size is %i\n",hsize);
-
-/* +29 */ sampnum=file->get_word();
-
-//XM_LOAD_DEBUG printf("samples %i\n",sampnum);
-
-
- instrument.set_name( instrname );
- //printf("Header Len: %i, CPInstrument %i, %i samples , name: s,\n",hsize,i,sampnum,instrname);
-
- if (sampnum==0) {
- //aux=file->get_dword(); //Why is this for? -- for nothing, skipped
- if (hsize) {
-
- file->seek( cpos+hsize ); //skip header if size has been specified
- }
- continue;
- }
-
-/* +33 */ file->get_dword();
-
- if (Error result=load_instrument_internal(&instrument,false,cpos,hsize,sampnum)) {
-
- CP_PRINTERR("Error loading instrument");
- file->close();
- return result;
- }
-
- }
-//
- file->close();
- return FILE_OK;
-}
-
-CPLoader::Error CPLoader_XM::load_instrument_internal(CPInstrument *p_instr,bool p_xi,int p_cpos, int p_hsize, int p_sampnum) {
-
- int sampnum;
- uint32_t aux;
- uint8_t notenumb[96];
- uint16_t panenv[24],volenv[24];
- int volpoints,panpoints;
- int vol_loop_begin,vol_loop_end,vol_sustain_loop;
- int pan_loop_begin,pan_loop_end,pan_sustain_loop;
- char instrname[23];
- int sample_index[16]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}; //-1 means no index!
-
- instrname[22]=0;
-
-
-/* +129 */ file->get_byte_array((uint8_t*)notenumb,96);
- for (int j=0;j<24;j++) {
- volenv[j]=file->get_word();
- }
- for (int j=0;j<24;j++) {
- panenv[j]=file->get_word();
- }
-
-/* +177 */
-/* +225 */
-/* +226 */ volpoints=file->get_byte();
-/* +227 */ panpoints=file->get_byte();
-/* +230 */ vol_sustain_loop=file->get_byte();
-/* +228 */ vol_loop_begin=file->get_byte();
-/* +229 */ vol_loop_end=file->get_byte();
-
-//XM_LOAD_DEBUG printf("1- volpoints: %i, panpoints: %i, susloop: %i, loop begin: %i, loop end %i\n",volpoints,panpoints,vol_sustain_loop,vol_loop_begin,vol_loop_end);
- pan_sustain_loop=file->get_byte();
-/* +231 */ pan_loop_begin=file->get_byte();
-/* +232 */ pan_loop_end=file->get_byte();
-
-
-
-/* +234 */ aux=file->get_byte();
- p_instr->get_volume_envelope()->reset();
- p_instr->get_volume_envelope()->set_enabled(aux&1);
- p_instr->get_volume_envelope()->set_sustain_loop_enabled((aux&2)?true:false);
- p_instr->get_volume_envelope()->set_loop_enabled((aux&4)?true:false);
-/* +235 */ aux=file->get_byte();
- p_instr->get_pan_envelope()->reset();
- p_instr->get_pan_envelope()->set_enabled(aux&1);
- p_instr->get_pan_envelope()->set_sustain_loop_enabled((aux&2)?true:false);
- p_instr->get_pan_envelope()->set_loop_enabled((aux&4)?true:false);
-
-/* +239 */ aux=file->get_dword(); // sadly, cant use those
-/* +241 */ p_instr->set_volume_fadeout( file->get_word() >> 4 );
-/* +243 */ aux=file->get_word(); // reserved!
-
-
-
- for (int j=0;j<volpoints;j++) {
- int ofs=volenv[j*2];
- int val=volenv[j*2+1];
- p_instr->get_volume_envelope()->add_position(ofs,val);
-
- }
-
- //make sure minimum is 2
- while (p_instr->get_volume_envelope()->get_node_count()<2) {
-
- p_instr->get_volume_envelope()->add_position( p_instr->get_volume_envelope()->get_node_count()*20,64 );
- }
-
- for (int j=0;j<panpoints;j++) {
- int ofs=panenv[j*2];
- int val=panenv[j*2+1];
- p_instr->get_pan_envelope()->add_position(ofs,val-32);
- }
-
- //make sure minimum is 2
- while (p_instr->get_pan_envelope()->get_node_count()<2) {
-
- p_instr->get_pan_envelope()->add_position( p_instr->get_pan_envelope()->get_node_count()*20,0 );
- }
-
-
- p_instr->get_volume_envelope()->set_loop_begin(vol_loop_begin);
- p_instr->get_volume_envelope()->set_loop_end(vol_loop_end);
- p_instr->get_volume_envelope()->set_sustain_loop_end(vol_sustain_loop);
- p_instr->get_volume_envelope()->set_sustain_loop_begin(vol_sustain_loop);
- p_instr->get_pan_envelope()->set_loop_begin(pan_loop_begin);
- p_instr->get_pan_envelope()->set_loop_end(pan_loop_end);
- p_instr->get_pan_envelope()->set_sustain_loop_end(pan_sustain_loop);
- p_instr->get_pan_envelope()->set_sustain_loop_begin(pan_sustain_loop);
-
-
- if (!p_xi) {
-
- if ((file->get_pos()-p_cpos)<p_hsize) {
-
- uint8_t junkbuster[500];
-
- //printf("extra junk XM instrument in header! hsize is %i, extra junk: %i\n",p_hsize,(file->get_pos()-p_cpos));
- //printf("extra: %i\n",p_hsize-(file->get_pos()-p_cpos));
- file->get_byte_array((uint8_t*)junkbuster,p_hsize-(file->get_pos()-p_cpos));
- }
-
- sampnum=p_sampnum;
- } else {
-
- uint8_t junkbuster[500];
- file->get_byte_array((uint8_t*)junkbuster,20); //14 bytes?
-
- sampnum=file->get_word();
-
- }
-
-
- CPSampleManager *sm=CPSampleManager::get_singleton();
-
- /*SAMPLE!!*/
-
- for (int j=0;j<sampnum;j++) {
-
- if (j>16) ABORT_LOAD;
-
-
- int s_idx=-1;
- for (int s=0;s<CPSong::MAX_SAMPLES;s++) {
-
- if (song->get_sample(s)->get_sample_data().is_null()) {
- //empty sample!
- s_idx=s;
- break;
- }
- }
-
- if (s_idx==-1) ABORT_LOAD;
- //printf("free sample: %i\n",s_idx);
-
-
- CPSample& sample=*song->get_sample(s_idx);
-
- int sample_size=file->get_dword();
- int tmp_loop_begin=file->get_dword();
-
- int tmp_loop_end=file->get_dword();
-
- sample.set_default_volume(file->get_byte());
-
- uint8_t ftb=file->get_byte();
- int8_t *fts=(int8_t*)&ftb;
- int finetune=*fts;
- uint32_t flags=file->get_byte();
-
- if (flags&16) { // is 16 bits.. at flag 16.. fun :)
-
- tmp_loop_end/=2;
- tmp_loop_begin/=2;
- sample_size/=2;
- }
-
-
- CPSample_ID sample_data=sm->create( flags&16, false, sample_size );
-
- sample.set_sample_data(sample_data);
- sm->set_loop_begin(sample_data,tmp_loop_begin);
- sm->set_loop_end(sample_data,tmp_loop_end+tmp_loop_begin);
-
- sm->set_loop_type( sample_data, (flags&3)?( (flags&2) ? CP_LOOP_BIDI : CP_LOOP_FORWARD ):CP_LOOP_NONE );
-
-
-
- sample.set_pan_enabled(true);
- sample.set_pan(file->get_byte()*64/255);
- uint8_t noteb=file->get_byte();
- int8_t *notes=(int8_t*)&noteb;
- int note_offset=*notes;
- note_offset+=48;
- //note_offset+=60;
-
-
-
- //int linear_period=10*12*16*4 - (note_offset)*16*4 - finetune/2;
- //int freq=(int)(8363*pow(2.0,(double)(6*12*16*4 - linear_period) / (double)(12*16*4)));
-
- //sm->set_c5_freq( sample_data, freq);
- sm->set_c5_freq( sample_data, CPTables::get_linear_frequency(CPTables::get_linear_period(note_offset<<1,finetune)) );
- //printf("NOTE %i,fine %i\n",note_offset,finetune);
-
- char auxb;
- auxb=file->get_byte(); //reserved?
- file->get_byte_array((uint8_t*)instrname,22);
- sample.set_name(instrname);
-
- sample_index[j]=s_idx;
- }
-
- /*SAMPLE __DATA__!!*/
-
- for (int j=0;j<sampnum;j++) {
-
- if (sample_index[j]==-1) continue;
-
- CPSample *sample=song->get_sample(sample_index[j]);
- CPSample_ID sid=sample->get_sample_data();
-
- sm->lock_data(sid);
-
- void*dataptr=sm->get_data(sid);
-
- if (sm->is_16bits( sid)) {
-
- int16_t old=0;
-
-
- for (int k=0;k<sm->get_size(sid);k++) {
-
- int16_t newsample;
- int16_t sampleval=file->get_word();
- newsample=sampleval+old;
- old=newsample;
-
- ((int16_t*)dataptr)[k]=newsample;
- //sm->set_data( sid, k, newsample );
- }
- } else {
-
- int8_t old=0;
-
-
- for (int k=0;k<sm->get_size(sid);k++) {
-
- int8_t newsample;
- int8_t sampleval=file->get_byte();
- newsample=sampleval+old;
- old=newsample;
-
- ((int8_t*)dataptr)[k]=newsample;
-
- //sm->set_data( sid, k, (int16_t)newsample << 8 );
-
- }
- }
-
- sm->unlock_data(sid);
-
- }
-
- for (int j=0;j<96;j++) {
-
- int val=notenumb[j];
- if ((val<0) || (val>15)) continue;
- else val=sample_index[val];
- if (val==-1) continue;
- p_instr->set_sample_number( 12+j,val );
- }
-
-
- return FILE_OK;
-}
-
-
-
-CPLoader::Error CPLoader_XM::load_sample(const char *p_file,CPSample *p_sample) {
-
- return FILE_UNRECOGNIZED;
-}
-
-
-/* Compute CPInstrument Info */
-CPLoader::Error CPLoader_XM::load_instrument(const char *p_file,CPSong *p_song,int p_instr_idx) {
-
- if ( file->open(p_file,CPFileAccessWrapper::READ) ) return FILE_CANNOT_OPEN;
- //int i;
- song=p_song;
- CPInstrument& instr=*p_song->get_instrument( p_instr_idx );
- int aux;
-
-
- char buffer[500];
- file->get_byte_array((uint8_t*)buffer,0x15);
- buffer[8]=0;
- if ( buffer[0]!='E' ||
- buffer[1]!='x' ||
- buffer[2]!='t' ||
- buffer[3]!='e' ||
- buffer[4]!='n' ||
- buffer[5]!='d' ||
- buffer[6]!='e' ||
- buffer[7]!='d') {
- file->close();
- return FILE_UNRECOGNIZED;
- }
-
- file->get_byte_array((uint8_t*)buffer,0x16);
- buffer[0x16]=0;
- instr.set_name(buffer);
- aux=file->get_byte(); //says ignore ti
- /*if(aux!=0x1a) { I'm not sure. this is supposed to be ignored...
-
- file->close();
- return FILE_UNRECOGNIZED;
- } */
-
- file->get_byte_array((uint8_t*)buffer,0x14); //somethingaboutthename
- aux=file->get_word(); //version or blahblah
-
- if (load_instrument_internal(&instr,true,0,0)) {
-
- file->close();
- return FILE_CORRUPTED;
- }
-
- file->close(); //ook, we got it..
-
-
- return FILE_OK;
-
-}
-
-
-
-CPLoader_XM::CPLoader_XM(CPFileAccessWrapper *p_file){
-
- file=p_file;
-}
-CPLoader_XM::~CPLoader_XM(){
-}
-
diff --git a/modules/chibi/cp_loader_xm.h b/modules/chibi/cp_loader_xm.h
deleted file mode 100644
index 0889569b38..0000000000
--- a/modules/chibi/cp_loader_xm.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*************************************************************************/
-/* cp_loader_xm.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef CP_LOADER_XM_H
-#define CP_LOADER_XM_H
-
-#include "cp_loader.h"
-
-
-/**
- *@author red
- */
-
-
-
-
-class CPLoader_XM : public CPLoader {
-
-
- struct XM_Header {
-
- uint8_t idtext[18];
- uint8_t songname[21];
- uint8_t hex1a; // ?
- uint8_t trackername[21];
- uint16_t version;
- uint32_t headersize; //from here
-
- uint16_t songlength; //pattern ordertable
- uint16_t restart_pos;
- uint16_t channels_used;
- uint16_t patterns_used;
- uint16_t instruments_used;
- uint16_t use_linear_freq;
- uint16_t tempo;
- uint16_t speed;
- uint8_t orderlist[256];
-
- } header;
-
- CPFileAccessWrapper *file;
-
- Error load_instrument_internal(CPInstrument *pint,bool p_xi,int p_cpos, int p_hsize, int p_sampnumb=-1);
- CPSong *song;
-
-public:
-
- bool can_load_song() { return true; }
- bool can_load_sample() { return false; }
- bool can_load_instrument() { return true; }
-
- Error load_song(const char *p_file,CPSong *p_song,bool p_sampleset);
- Error load_sample(const char *p_file,CPSample *p_sample);
- Error load_instrument(const char *p_file,CPSong *p_song,int p_instr_idx);
-
-
- CPLoader_XM(CPFileAccessWrapper *p_file);
- ~CPLoader_XM();
-};
-
-
-
-#endif
diff --git a/modules/chibi/cp_mixer.h b/modules/chibi/cp_mixer.h
deleted file mode 100644
index d8564bae00..0000000000
--- a/modules/chibi/cp_mixer.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/*************************************************************************/
-/* cp_mixer.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef CP_MIXER_H
-#define CP_MIXER_H
-
-#include "cp_sample_defs.h"
-
-/**Abstract base class representing a mixer
- *@author Juan Linietsky
- */
-
-
-/******************************
- mixer.h
- ----------
-
-Abstract base class for the mixer.
-This is what the player uses to setup
-voices and stuff.. this way
-it can be abstracted to hardware
-devices or other stuff..
-********************************/
-
-class CPSample_ID; /* need this */
-
-class CPMixer {
-public:
-
- enum {
-
- FREQUENCY_BITS=8
-
- };
-
- enum ReverbMode {
- REVERB_MODE_ROOM,
- REVERB_MODE_STUDIO_SMALL,
- REVERB_MODE_STUDIO_MEDIUM,
- REVERB_MODE_STUDIO_LARGE,
- REVERB_MODE_HALL,
- REVERB_MODE_SPACE_ECHO,
- REVERB_MODE_ECHO,
- REVERB_MODE_DELAY,
- REVERB_MODE_HALF_ECHO
- };
-
- /* Callback */
-
- virtual void set_callback_interval(int p_interval_us)=0; //in usecs, for tracker it's 2500000/tempo
- virtual void set_callback(void (*p_callback)(void*),void *p_userdata)=0;
-
- /* Voice Control */
-
- virtual void setup_voice(int p_voice_index,CPSample_ID p_sample_id,int32_t p_start_index) =0;
- virtual void stop_voice(int p_voice_index) =0;
- virtual void set_voice_frequency(int p_voice_index,int32_t p_freq) =0; //in freq*FREQUENCY_BITS
- virtual void set_voice_panning(int p_voice_index,int p_pan) =0;
- virtual void set_voice_volume(int p_voice_index,int p_vol) =0;
- virtual void set_voice_filter(int p_filter,bool p_enabled,uint8_t p_cutoff, uint8_t p_resonance )=0;
- virtual void set_voice_reverb_send(int p_voice_index,int p_reverb)=0;
- virtual void set_voice_chorus_send(int p_voice_index,int p_chorus)=0; /* 0 - 255 */
-
- virtual void set_reverb_mode(ReverbMode p_mode)=0;
- virtual void set_chorus_params(unsigned int p_delay_ms,unsigned int p_separation_ms,unsigned int p_depth_ms10,unsigned int p_speed_hz10)=0;
-
-
- /* Info retrieving */
-
- virtual int32_t get_voice_sample_pos_index(int p_voice_index) =0;
- virtual int get_voice_panning(int p_voice_index) =0;
- virtual int get_voice_volume(int p_voice_index) =0;
- virtual CPSample_ID get_voice_sample_id(int p_voice_index) =0;
- virtual bool is_voice_active(int p_voice_index) =0;
- virtual int get_active_voice_count()=0;
- virtual int get_total_voice_count()=0;
-
-
- virtual uint32_t get_mix_frequency()=0; //if mixer is not software, return 0
-
- /* Methods below only work with software mixers, meant for software-based sound drivers, hardware mixers ignore them */
- virtual int32_t process(int32_t p_frames)=0; /* Call this to process N frames, returns how much it was processed */
- virtual int32_t *get_mixdown_buffer_ptr()=0; /* retrieve what was mixed */
- virtual void set_mix_frequency(int32_t p_mix_frequency)=0;
-
- virtual ~CPMixer() {}
-};
-
-#endif
diff --git a/modules/chibi/cp_note.h b/modules/chibi/cp_note.h
deleted file mode 100644
index f9a3ef39fc..0000000000
--- a/modules/chibi/cp_note.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*************************************************************************/
-/* cp_note.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef CP_NOTE_H
-#define CP_NOTE_H
-
-#include "cp_config.h"
-
-struct CPNote {
-
- enum {
-
- NOTES=120,
- OFF=254,
- CUT=253,
- EMPTY=255,
- SCRIPT=252,
- };
-
-
- uint8_t note;
- uint8_t instrument;
- uint8_t volume;
- uint8_t command;
- uint8_t parameter;
- unsigned int script_source_sign;
- bool cloned;
-
- void clear() {
-
- note=EMPTY;
- instrument=EMPTY;
- volume=EMPTY;
- command=EMPTY;
- parameter=0;
- script_source_sign='\0';
- cloned=false;
- }
-
- void raise() {
-
- if (note<(NOTES-1))
- note++;
- else if (note==SCRIPT && parameter<0xFF)
- parameter++;
- }
-
- void lower() {
-
- if ((note>0) && (note<NOTES))
- note--;
- else if (note==SCRIPT && parameter>0)
- parameter--;
-
- }
-
- bool operator== (const CPNote &rvalue) {
-
- return (
- (note==rvalue.note) &&
- (instrument==rvalue.instrument) &&
- (volume==rvalue.volume) &&
- (command==rvalue.command) &&
- (parameter==rvalue.parameter)
- );
- }
-
- bool is_empty() const { return (note==EMPTY && instrument==EMPTY && volume==EMPTY && command==EMPTY && parameter==0 && !cloned); }
- CPNote() {
-
- clear();
- }
-};
-
-
-#endif
-
diff --git a/modules/chibi/cp_order.h b/modules/chibi/cp_order.h
deleted file mode 100644
index 8df67df40c..0000000000
--- a/modules/chibi/cp_order.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*************************************************************************/
-/* cp_order.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef CP_ORDER_H
-#define CP_ORDER_H
-
-
-#include "cp_config.h"
-
-enum CPOrderType {
- CP_ORDER_NONE=255,
- CP_ORDER_BREAK=254
-};
-
-typedef uint8_t CPOrder;
-
-#endif
-
diff --git a/modules/chibi/cp_pattern.cpp b/modules/chibi/cp_pattern.cpp
deleted file mode 100644
index 8671b6247d..0000000000
--- a/modules/chibi/cp_pattern.cpp
+++ /dev/null
@@ -1,574 +0,0 @@
-/*************************************************************************/
-/* cp_pattern.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "cp_pattern.h"
-
-void CPPattern::clear() {
-
- if (event_count>0) {
-
-
- CP_FREE(events);
- events=NULL;
- event_count=0;
- }
-
- length=DEFAULT_LEN;
-
-}
-
-
-bool CPPattern::resize_event_list_to(uint32_t p_events) {
-
-
- //Module is slow in some cpus, so this should be fast enough
- uint32_t new_size=((p_events-1)&(~((1<<RESIZE_EVERY_BITS)-1)))+(1<<RESIZE_EVERY_BITS);
-
- CP_ERR_COND_V(new_size<p_events,true); //bugARM_INFO
-
- if (event_count==0 && new_size==0)
- return false; //nothing to do
-
- if (event_count==0) {
-
- events=(Event*)CP_ALLOC( new_size*sizeof(Event) );
-
- } else if (new_size==0) {
-
- CP_FREE(events);
- events=NULL;
- } else {
-
- CP_ERR_COND_V(events==NULL,true);
- events=(Event*)CP_REALLOC(events, new_size*sizeof(Event));
-
- }
-
- event_count=p_events;
-
- return false;
-}
-
-
-int32_t CPPattern::get_event_pos(uint16_t p_target_pos) {
-
-
- if (event_count==0)
- return -1;
-
- int low = 0;
- int high = event_count -1;
- int middle;
-
- while( low <= high )
- {
- middle = ( low + high ) / 2;
-
- if( p_target_pos == events[middle].pos ) { //match
- break;
- } else if( p_target_pos < events[middle].pos )
- high = middle - 1; //search low end of array
- else
- low = middle + 1; //search high end of array
- }
-
- /* adapt so we are behind 2 */
-
- if (events[middle].pos<p_target_pos)
- middle++;
- return middle;
-
- /* Linear search for now */
-
- /*
- int32_t pos_idx=0;
-
- for (;pos_idx<event_count;pos_idx++) {
-
- if (event_list[pos_idx].pos>=p_target_pos)
- break;
-
- } */
-
- //return pos_idx;
-}
-
-bool CPPattern::erase_event_at_pos(uint16_t p_pos) {
-
- if (event_count==0)
- return false;
-
-
-
- Event *event_list=events;
-
- int32_t pos_idx = get_event_pos(p_pos);
- if (pos_idx==-1) {
- CP_ERR_COND_V(pos_idx==-1,true);
- }
-
- if (pos_idx==event_count || event_list[pos_idx].pos!=p_pos) {
- /* Nothing to Erase */
- return false;
- }
-
- for (int32_t i=pos_idx;i<(event_count-1);i++) {
-
- event_list[i]=event_list[i+1];
- }
-
-
- resize_event_list_to(event_count-1);
-
- return false;
-}
-
-bool CPPattern::set_note(uint8_t p_column, uint16_t p_row,const CPNote& p_note) {
-
- CP_ERR_COND_V(p_column>=WIDTH,true);
- CP_ERR_COND_V(p_row>=length,true);
-
- int32_t new_pos;
- uint16_t target_pos=p_row*WIDTH+p_column;
-
-
-
- if (p_note.is_empty()) {
- bool res=erase_event_at_pos(target_pos);
-
- return res;;
- }
-
- Event *event_list=0;
-
- if (event_count==0) {
- /* If no events, create the first */
-
- if (resize_event_list_to(1)) {
-
- CP_PRINTERR("Can't resize event list to 1");
- return true;
- }
-
- event_list=events;
- if (event_list==0) {
-
-
- CP_PRINTERR("Can't get event list");
- return true;
- }
-
- new_pos=0;
-
- } else {
- /* Prepare to add */
-
- event_list=events;
- if (event_list==0) {
-
-
- CP_PRINTERR("Can't get event list");
- return true;
- }
-
- int32_t pos_idx = get_event_pos(target_pos);
-
- if (pos_idx==-1) {
-
-
- CP_PRINTERR("Can't find add position");
- return true;
- }
-
-
- if (pos_idx==event_count || event_list[pos_idx].pos!=target_pos) {
- /* If the note being modified didnt exist, then we add it */
-
- //resize, and return if out of mem
- if (resize_event_list_to( event_count+1)) {
-
-
- CP_PRINTERR("Can't resize event list");
- return true;
- }
- event_list=events;
- if (event_list==0) {
-
-
- CP_PRINTERR("Can't get event list");
- return true;
- }
-
- //make room for new pos, this wont do a thing if pos_idx was ==event_count
- for(int32_t i=(event_count-1);i>pos_idx;i--) {
- event_list[i]=event_list[i-1];
-
- }
-
- } /* Else it means that position is taken, so we just modify it! */
-
-
- new_pos=pos_idx;
- }
-
- event_list[new_pos].pos=target_pos;
- event_list[new_pos].note=p_note.note;
- event_list[new_pos].instrument=p_note.instrument;
- event_list[new_pos].volume=p_note.volume;
- event_list[new_pos].command=p_note.command;
- event_list[new_pos].parameter=p_note.parameter;
- event_list[new_pos].script_source_sign=p_note.script_source_sign;
- event_list[new_pos].cloned=p_note.cloned;
-
-
-
-
- return false;
-
-}
-CPNote CPPattern::get_note(uint8_t p_column,uint16_t p_row) {
-
- if (p_column==CPNote::EMPTY) return CPNote();
-
- CP_ERR_COND_V(p_column>=WIDTH,CPNote());
- CP_ERR_COND_V(p_row>=length,CPNote());
-
- if (event_count==0)
- return CPNote();
-
-
- Event *event_list=events;
-
- CP_ERR_COND_V(event_list==0,CPNote());
-
- uint16_t target_pos=p_row*WIDTH+p_column;
- int32_t pos_idx = get_event_pos(target_pos);
- if (pos_idx==-1) {
-
- CP_PRINTERR("Can't find event pos");
- return CPNote();
- }
-
- if (pos_idx>=event_count || event_list[pos_idx].pos!=target_pos) {
- /* no note found */
-
- return CPNote();
- }
-
- CPNote n;
- n.note=event_list[pos_idx].note;
- n.instrument=event_list[pos_idx].instrument;
- n.volume=event_list[pos_idx].volume;
- n.command=event_list[pos_idx].command;
- n.parameter=event_list[pos_idx].parameter;
- n.script_source_sign=event_list[pos_idx].script_source_sign;
- n.cloned=event_list[pos_idx].cloned;
-
-
- return n;
-
-}
-
-CPNote CPPattern::get_transformed_script_note(uint8_t p_column,uint16_t p_row ) {
-
- CPNote n = get_note( p_column, p_row );
-
- // get source channel and note
-
- int channel = get_scripted_note_target_channel( p_column, p_row );
- CPNote src_n = get_note( channel, 0 );
-
- if ( src_n.note == CPNote::SCRIPT ) return CPNote();
-
- script_transform_note( src_n, n );
-
- return src_n;
-
-}
-
-int CPPattern::get_scripted_note_target_channel(uint8_t p_column, uint16_t p_row) {
-
- CPNote n = get_note( p_column, p_row );
-
- if ( n.note != CPNote::SCRIPT ) return CPNote::EMPTY;
-
- int channel = n.instrument;
-
- if ( n.script_source_sign == '\0' ) {
-
- if ( channel < 0 || channel >= CPPattern::WIDTH ) return CPNote::EMPTY;
-
- } else {
-
- channel = p_column + ( ( n.script_source_sign=='+') ? 1 : -1 ) * (channel+1);
- if ( channel < 0 || channel >= CPPattern::WIDTH ) return CPNote::EMPTY;
-
- }
-
- return channel;
-}
-
-void CPPattern::scripted_clone(uint8_t p_column, uint16_t p_row) {
-
- int channel = get_scripted_note_target_channel( p_column, p_row );
- int src_row = 1;
- CPNote script_n = get_note( p_column, p_row );
-
- for ( int row = p_row+1; row < length; ++row ) {
-
- CPNote src_n = get_note( channel, src_row );
- CPNote target_n = get_note( p_column, row );
-
- if ( target_n.note != CPNote::SCRIPT ) {
- if ( src_n.note == CPNote::SCRIPT ) {
- src_n = CPNote();
- channel = CPNote::EMPTY;
- }
-
- script_transform_note( src_n, script_n );
-
- src_n.cloned = true;
- set_note( p_column, row, src_n );
-
- } else {
-
- return;
-
- }
-
- src_row++;
- }
-
-}
-
-void CPPattern::scripted_clone_remove(uint8_t p_column, uint16_t p_row) {
-
- if ( get_note( p_column, p_row ).cloned )
- set_note( p_column, p_row, CPNote() );
-
- for ( int row = p_row+1; row < length; ++row ) {
-
- CPNote target_n = get_note( p_column, row );
-
- if ( target_n.note != CPNote::SCRIPT ) {
-
- set_note( p_column, row, CPNote() );
-
- } else {
-
- return;
-
- }
-
- }
-
-}
-
-void CPPattern::script_transform_note(CPNote& n, const CPNote& p_note) {
-
- // set instrument
-
- if ( n.note < CPNote::NOTES && p_note.volume != CPNote::EMPTY ) {
-
- n.instrument = p_note.volume;
-
- }
-
- // transpose
-
- if ( n.note < CPNote::NOTES && p_note.command != CPNote::EMPTY ) {
-
- int transpose = ( p_note.parameter & 0xF ) + ( p_note.parameter / 0x10 ) * 12;
-
- if ( p_note.command == '^' ) {
-
- if ( n.note >= CPNote::NOTES-transpose )
- n.note = CPNote::NOTES-1;
- else
- n.note += transpose;
-
- } else if ( p_note.command == 'v' ) {
-
- if ( n.note <= transpose )
- n.note = 0;
- else
- n.note -= transpose;
-
- }
- }
-
-}
-
-bool CPPattern::update_scripted_clones_sourcing_channel( int channel ) {
-
- bool updated = false;
-
- for ( int x = 0; x < WIDTH; ++x ) {
-
- for (int y = 0; y < length; ++y ) {
-
- if ( channel == get_scripted_note_target_channel( x, y ) ) {
-
- scripted_clone( x, y );
- updated = true;
- }
-
- }
-
- }
-
- return updated;
-}
-
-void CPPattern::set_length(uint16_t p_rows) {
-
-
-
- if (event_count==0) {
-
- if (p_rows>=MIN_ROWS)
- length=p_rows;
-
-
- return;
-
- }
-
- if (p_rows<MIN_ROWS) {
-
- return;
- }
-
- if (p_rows<length) {
-
- Event* event_list=events;
- if (event_list==0) {
-
- CP_PRINTERR("get_event_list() Failed");
- return;
- }
-
-
- uint16_t target_pos=p_rows*WIDTH;
- int32_t pos_idx = get_event_pos(target_pos);
-
-
- if (pos_idx==-1) {
-
- CP_ERR_COND(pos_idx==-1);
- }
-
- if (resize_event_list_to(pos_idx)) {
-
- CP_PRINTERR("resize_event_list_to(pos_idx) Failed");
- return;
- }
-
- }
-
- length=p_rows;
-
-
-}
-#if 0
-void CPPattern::copy_to(CPPattern *p_pattern) const {
-
-
-
-
- p_pattern->clear();
- p_pattern->length=length;
-
-
- if (!event_count)
- return;
-
-
-
- int bufsiz=MemPool_Wrapper::get_singleton()->get_mem_size( mem_handle );
- MemPool_Handle aux_mem_handle=MemPool_Wrapper::get_singleton()->alloc_mem( bufsiz );
-
- if (aux_mem_handle.is_null()) {
-
- CP_PRINTERR("own handle is null");
-
- return;
- }
-
-
- if (MemPool_Wrapper::get_singleton()->lock_mem(aux_mem_handle)) {
- CP_PRINTERR("Unable to lock aux new handle");
-
- return;
-
- }
-
- if (MemPool_Wrapper::get_singleton()->lock_mem(mem_handle)) {
-
- CP_PRINTERR("Unable to lock own handle");
-
- return;
- }
-
- uint8_t* srcuint8_tt8_t*)MemPool_Wrapper::get_singleton()->get_mem(mem_handle);
- uint8_t* dstuint8_tt8_t*)MemPool_Wrapper::get_singleton()->get_mem(aux_mem_handle);
-
- for (int i=0;i<bufsiz;i++)
- dst[i]=src[i];
-
- MemPool_Wrapper::get_singleton()->unlock_mem(mem_handle);
- MemPool_Wrapper::get_singleton()->unlock_mem(aux_mem_handle);
-
- p_pattern->mem_handle=aux_mem_handle;
- p_pattern->event_count=event_count;
-
-
-}
-#endif
-uint16_t CPPattern::get_length() {
-
-
- return length;
-}
-CPPattern::CPPattern() {
-
-
- length=DEFAULT_LEN;
- event_count=0;
- clear();
-
-}
-bool CPPattern::is_empty() {
-
- return events==NULL;
-}
-
-CPPattern::~CPPattern() {
-
- clear();
-}
diff --git a/modules/chibi/cp_pattern.h b/modules/chibi/cp_pattern.h
deleted file mode 100644
index fc3b032523..0000000000
--- a/modules/chibi/cp_pattern.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*************************************************************************/
-/* cp_pattern.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef CP_PATTERN_H
-#define CP_PATTERN_H
-
-#include "cp_note.h"
-
-class CPPattern {
-public:
-
-
- enum {
- WIDTH=64,
- DEFAULT_LEN=64,
- RESIZE_EVERY_BITS=4,
- MIN_ROWS=1, //otherwise clipboard wont work
- MAX_LEN=256
-
- };
-
-private:
- struct Event {
-
- uint16_t pos; //column*WIDTH+row
- uint8_t note;
- uint8_t instrument;
- uint8_t volume;
- uint8_t command;
- uint8_t parameter;
- unsigned int script_source_sign;
- bool cloned;
- };
-
- uint16_t length;
- uint32_t event_count;
- Event* events;
-
- int32_t get_event_pos(uint16_t p_target_pos);
- bool erase_event_at_pos(uint16_t p_pos);
-
- bool resize_event_list_to(uint32_t p_events);
-
- void operator=(const CPPattern& p_pattern); //no operator=
-public:
-
- bool is_empty();
- void clear();
-
- bool set_note(uint8_t p_column, uint16_t p_row,const CPNote& p_note); //true if no more memory
- CPNote get_note(uint8_t p_column,uint16_t p_row);
-
- CPNote get_transformed_script_note(uint8_t p_column, uint16_t p_row);
- int get_scripted_note_target_channel(uint8_t p_column, uint16_t p_row);
- void scripted_clone(uint8_t p_column, uint16_t p_row);
- void scripted_clone_remove(uint8_t p_column, uint16_t p_row);
- void script_transform_note(CPNote& n, const CPNote& p_note);
- bool update_scripted_clones_sourcing_channel(int channel);
-
- //void copy_to(CPPattern *p_pattern) const;
- void set_length(uint16_t p_rows);
- uint16_t get_length();
- CPPattern();
- ~CPPattern();
-
-
-};
-
-#endif
diff --git a/modules/chibi/cp_player_data.cpp b/modules/chibi/cp_player_data.cpp
deleted file mode 100644
index c8cbfbd06e..0000000000
--- a/modules/chibi/cp_player_data.cpp
+++ /dev/null
@@ -1,151 +0,0 @@
-/*************************************************************************/
-/* cp_player_data.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "cp_player_data.h"
-#include <stdio.h>
-
-
-CPPlayer::CPPlayer(CPMixer *p_mixer,CPSong *p_song){
-
- song=p_song;
- mixer=p_mixer;
- control.max_voices=p_mixer->get_total_voice_count()-1; //leave one for the sample
- control.force_no_nna=false;
- control.external_vibrato=false;
- control.filters=true;
- control.random_seed=128364; //anything
- control.play_mode=0;
- set_virtual_channels(p_mixer->get_total_voice_count());
- mixer->set_callback( &CPPlayer::callback_function, this );
-
- reset();
-}
-CPPlayer::~CPPlayer(){
-}
-
-void CPPlayer::set_virtual_channels(int p_amount) {
-
- if (p_amount<1) return;
- if (p_amount>mixer->get_total_voice_count())
- return;
-
- control.max_voices=p_amount;
-
-}
-
-
-void CPPlayer::callback_function(void *p_userdata) {
-
- CPPlayer*pd=(CPPlayer*)p_userdata;
- pd->process_tick();
-
-}
-
-void CPPlayer::process_tick() {
-
- handle_tick();
- mixer->set_callback_interval( 2500000/control.tempo );
- song_usecs+=2500000/control.tempo;
-}
-
-void CPPlayer::reset() {
-
- if ( mixer==NULL ) return ;
- if ( song==NULL ) return ;
-
- int i;
-
- for (i=0;i<control.max_voices;i++) {
-
- voice[i].reset();
- mixer->stop_voice(i);
- }
-
- for (i=0;i<CPPattern::WIDTH;i++) {
-
- control.channel[i].reset();
- control.channel[i].channel_volume=song->get_channel_volume(i);
- control.channel[i].channel_panning=((int)song->get_channel_pan( i)*PAN_RIGHT/64);
- if (song->is_channel_surround(i))
- control.channel[i].channel_panning=PAN_SURROUND;
- control.channel[i].mute=song->is_channel_mute( i );
- control.channel[i].chorus_send=song->get_channel_chorus(i)*0xFF/64;
- control.channel[i].reverb_send=song->get_channel_reverb(i)*0xFF/64;
- }
-
-
- control.speed=song->get_speed();
- control.tempo=song->get_tempo();
- control.global_volume=song->get_global_volume();
-
- control.position.current_pattern=0;
- control.position.current_row=0;
- control.position.current_order=0;
- control.position.force_next_order=-1;
- control.ticks_counter=control.speed;
- control.position.forbid_jump=false;
-
- song_usecs=0;
-
-}
-
-int64_t CPPlayer::get_channel_last_note_time_usec(int p_channel) const {
-
- CP_FAIL_INDEX_V(p_channel,64,-1);
- return control.channel[p_channel].last_event_usecs;
-
-}
-
-void CPPlayer::set_channel_global_volume(int p_channel,int p_volume) {
-
- CP_FAIL_INDEX(p_channel,64);
- control.channel[p_channel].channel_global_volume=CLAMP(p_volume,0,255);
-
-}
-
-int CPPlayer::get_channel_global_volume(int p_channel) const{
-
- CP_FAIL_INDEX_V(p_channel,64,-1);
- return control.channel[p_channel].channel_global_volume;
-
-}
-
-bool CPPlayer::reached_end_of_song() {
-
- return control.reached_end;
-
-}
-void CPPlayer::set_force_external_vibratos(bool p_force) {
-
- control.external_vibrato=p_force;
-}
-void CPPlayer::set_force_no_nna(bool p_force) {
-
- control.force_no_nna=p_force;
-}
diff --git a/modules/chibi/cp_player_data.h b/modules/chibi/cp_player_data.h
deleted file mode 100644
index 2157319855..0000000000
--- a/modules/chibi/cp_player_data.h
+++ /dev/null
@@ -1,582 +0,0 @@
-/*************************************************************************/
-/* cp_player_data.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef CP_PLAYER_DATA_H
-#define CP_PLAYER_DATA_H
-
-#include "cp_config.h"
-#include "cp_song.h"
-#include "cp_mixer.h"
-#include "cp_tables.h"
-
-/**CPPlayer Data
- *@author Juan Linietsky
- */
-
-/******************************
- player_data.h
- ------------------------
-
-The player and its data.
-I hope you dont get sick reading this
-********************************/
-
-//Default pan values
-
-
-class CPPlayer {
-
- enum {
- PAN_SURROUND=512,
- PAN_RIGHT=255,
- PAN_LEFT=0,
- PAN_CENTER=128
- };
-
-
- CPSong *song;
-
- CPMixer *mixer;
-
- struct Filter_Control {
-
- int32_t it_reso;
- int32_t it_cutoff;
- int32_t envelope_cutoff;
- int32_t final_cutoff;
-
- void process();
- void set_filter_parameters(int *p_cutoff,uint8_t *p_reso);
-
- };
-
- //tells you if a channel is doing
- //noteoff/notekill/notefade/etc
- enum {
-
- END_NOTE_NOTHING=0,
- END_NOTE_OFF=1,
- END_NOTE_FADE=2,
- END_NOTE_KILL=4
- };
-
- //Tells you what should a channel restart
- enum {
-
- KICK_NOTHING,
- KICK_NOTE,
- KICK_NOTEOFF,
- KICK_ENVELOPE
- };
-
- enum {
-
- MAX_VOICES=256
- };
-
- struct Channel_Control;
-
- struct Voice_Control {
-
- struct Envelope_Control {
-
- int pos_index;
- int status;
- int value;
- bool sustain_looping;
- bool looping;
- bool terminated;
- bool active;
- bool kill;
-
- };
-
- Filter_Control filter;
- uint16_t reverb_send;
- uint16_t chorus_send;
-
- CPInstrument* instrument_ptr;
- CPSample* sample_ptr;
-
- //Sample_Data *sample_data;
-
- int32_t period;
-
- int32_t sample_start_index; /* The starting byte index in the sample */
-
- bool has_master_channel;
- int master_channel_index;
- int instruement_index;
-
- int instrument_index;
- int sample_index;
- int8_t NNA_type;
-
- int note_end_flags;
-
- uint8_t sample; /* which instrument number */
-
- int16_t output_volume; /* output volume (vol + sampcol + instvol) */
- int8_t channel_volume; /* channel's "global" volume */
- uint16_t fadeout_volume; /* fading volume rate */
- int32_t total_volume; /* total volume of channel (before global mixings) */
- uint8_t kick; /* if true = sample has to be restarted */
-
- uint8_t note; /* the audible note (as heard, direct rep of period) */
-
- int16_t panning; /* panning position */
-
- uint8_t nna; /* New note action type + master/slave flags */
- uint8_t volflg; /* volume envelope settings */
- uint8_t panflg; /* panning envelope settings */
- uint8_t pitflg; /* pitch envelope settings */
- uint8_t keyoff; /* if true = fade out and stuff */
- int16_t handle; /* which sample-handle */
- int32_t start; /* The start byte index in the sample */
-
- /* Below here is info NOT in MP_CONTROL!! */
- //ENVPR venv;
- //ENVPR penv;
- //ENVPR cenv;
-
- Envelope_Control volume_envelope_ctrl;
- Envelope_Control panning_envelope_ctrl;
- Envelope_Control pitch_envelope_ctrl;
-
- uint16_t auto_vibrato_pos; /* autovibrato pos */
- uint16_t auto_vibrato_sweep_pos; /* autovibrato sweep pos */
-
- int16_t masterchn;
- uint16_t masterperiod;
-
- Channel_Control* master_channel; /* index of "master" effects channel */
-
- void start_envelope(CPEnvelope *p_envelope,Envelope_Control *p_envelope_ctrl,Envelope_Control *p_from_env);
- bool process_envelope(CPEnvelope *p_envelope,Envelope_Control *p_envelope_ctrl);
-
- uint16_t display_volume;
-
- Voice_Control() {
-
- reset();
- }
-
- void reset();
- void update_info_from_master_channel();
-
-
- };
-
-
- struct Channel_Control {
-
- /* NOTE info */
- uint8_t note; /* the audible note as heard, direct rep of period */
- uint8_t real_note; /* the note that indexes the audible */
- int32_t sample_start_index; /* The starting byte index in the sample */
- uint8_t old_note;
-
- uint8_t kick;
-
- Filter_Control filter;
- uint16_t reverb_send;
- uint16_t chorus_send;
-
-
- int note_end_flags;
-
- /* INSTRUMENT INFO */
-
- CPInstrument* instrument_ptr;
- CPSample* sample_ptr;
-
- uint8_t instrument_index;
- uint8_t sample_index;
- bool new_instrument;
-
- /* SAMPLE SPECIFIC INFO */
- int32_t base_speed; /* what finetune to use */
-
- /* INSTRUMENT SPECIFIC INFO */
-
- int8_t NNA_type;
- int8_t duplicate_check_type;
- int8_t duplicate_check_action;
-
- bool volume_envelope_on;
- bool panning_envelope_on;
- bool pitch_envelope_on;
-
- bool has_own_period;
-
- bool row_has_note;
-
- /* VOLUME COLUMN */
-
- int16_t volume; /* amiga volume (0 t/m 64) to play the sample at */
- int16_t aux_volume;
- bool has_own_volume;
- bool mute;
- int16_t random_volume_variation; /* 0-100 - 100 has no effect */
-
- /* VOLUME/PAN/PITCH MODIFIERS */
-
- int8_t default_volume; // CHANNEL default volume (0-64)
- int16_t channel_volume; // CHANNEL current volume //chanvol - current!
- int16_t output_volume; /* output volume (vol + sampcol + instvol) //volume */
- int16_t channel_global_volume;
-
- uint16_t fadeout_volume; /* fading volume rate */
-
- int32_t period; /* period to play the sample at */
-
- /* PAN */
-
- int16_t panning; /* panning position */
- int16_t channel_panning;
- int8_t sliding;
-
- uint16_t aux_period; /* temporary period */
-
-
-
- /* TIMING */
- uint8_t note_delay; /* (used for note delay) */
-
- /* Slave Voice Control */
-
- Voice_Control *slave_voice; /* Audio Slave of current effects control channel */
-
- struct Carry {
-
- Voice_Control::Envelope_Control vol;
- Voice_Control::Envelope_Control pan;
- Voice_Control::Envelope_Control pitch;
- bool maybe;
-
- } carry;
-
-
-
- uint8_t slave_voice_index; /* Audio Slave of current effects control channel */
-
- uint8_t* row; /* row currently playing on this channel */
-
- /* effect memory variables */
-
- uint8_t current_command;
- uint8_t current_parameter;
- uint8_t current_volume_command;
- uint8_t current_volume_parameter;
- uint8_t volcol_volume_slide;
-
- /* CPSample Offset */
-
- int32_t lo_offset;
- int32_t hi_offset;
-
- /* Panbrello waveform */
- uint8_t panbrello_type; /* current panbrello waveform */
- uint8_t panbrello_position; /* current panbrello position */
- int8_t panbrello_speed; /* "" speed */
- uint8_t panbrello_depth; /* "" depth */
- uint8_t panbrello_info;
- /* Arpegio */
-
- uint8_t arpegio_info;
- /* CPPattern Loop */
-
- int pattern_loop_position;
- int8_t pattern_loop_count;
-
- /* Vibrato */
- bool doing_vibrato;
- int8_t vibrato_position; /* current vibrato position */
- uint8_t vibrato_speed; /* "" speed */
- uint8_t vibrato_depth; /* "" depth */
- uint8_t vibrato_type;
- /* Tremor */
- int8_t tremor_position;
- uint8_t tremor_speed; /* s3m tremor ontime/offtime */
- uint8_t tremor_depth;
- uint8_t tremor_info;
-
- /* Tremolo */
- int8_t tremolo_position;
- uint8_t tremolo_speed; /* s3m tremor ontime/offtime */
- uint8_t tremolo_depth;
- uint8_t tremolo_info;
- uint8_t tremolo_type;
-
- /* Retrig */
- int8_t retrig_counter; /* retrig value (0 means don't retrig) */
- uint8_t retrig_speed; /* last used retrig speed */
- uint8_t retrig_volslide; /* last used retrig slide */
-
- /* CPSample Offset */
- int32_t sample_offset_hi; /* last used high order of sample offset */
- uint16_t sample_offset; /* last used low order of sample-offset (effect 9) */
- uint16_t sample_offset_fine; /* fine sample offset memory */
-
- /* Portamento */
- uint16_t slide_to_period; /* period to slide to (with effect 3 or 5) */
- uint8_t portamento_speed;
-
- /* Volume Slide */
-
- uint8_t volume_slide_info;
-
- /* Channel Volume Slide */
-
- uint8_t channel_volume_slide_info;
-
- /* Global Volume Slide */
-
- uint8_t global_volume_slide_info;
-
- /* Channel Pan Slide */
-
- uint8_t channel_pan_slide_info;
-
- /* Pitch Slide */
-
- uint8_t pitch_slide_info;
- /* Tempo Slide */
-
- uint8_t tempo_slide_info;
-
- /* S effects memory */
-
- uint8_t current_S_effect;
- uint8_t current_S_data;
-
- /* Volume column memory */
-
- uint8_t volume_column_effect_mem;
- uint8_t volume_column_data_mem;
-
- int64_t last_event_usecs;
- bool reserved;
-
- void reset();
-
- Channel_Control() { channel_global_volume=255; last_event_usecs=-1; }
- };
-
- struct Control_Variables { // control variables (dynamic version) of initial variables
-
- bool reached_end;
-
- char play_mode;
- bool filters;
- int global_volume;
- int speed;
- int tempo;
-
- int ticks_counter;
-
- int pattern_delay_1;
- int pattern_delay_2;
-
- Channel_Control channel[CPPattern::WIDTH];
-
- int max_voices;
-
- int voices_used; /* reference value */
-
- bool force_no_nna;
- bool external_vibrato;
-
- struct Position {
-
- int current_order;
- int current_pattern;
- int current_row;
- int force_next_order;
- bool forbid_jump;
- };
-
- int32_t random_seed;
-
- Position position;
- Position previous_position;
-
- };
-
-
- Voice_Control voice[MAX_VOICES];
-
- Control_Variables control;
-
- /* VOICE SETUP */
-
- void setup_voices();
-
- /* MIXER SETUP */
- void handle_tick();
- void update_mixer();
-
- /* NOTE / INSTRUMENT PROCESSING */
-
- void process_new_note(int p_track,uint8_t p_note);
- bool process_new_instrument(int p_track,uint8_t p_instrument);
- bool process_note_and_instrument(int p_track,int p_note,int p_instrument);
-
- /* EFFECT PROCESSING */
- void do_effect_S(int p_track);
- void do_panbrello(int p_track);
- void do_global_volume_slide(int p_track);
- void do_tremolo(int p_track);
- void do_retrig(int p_track);
- void do_pan_slide(int p_track);
- void do_channel_volume_slide(int p_track);
- void do_volume_slide(int p_track,int inf);
- void do_pitch_slide_down(int p_track,uint8_t inf);
- void do_pitch_slide_up(int p_track,uint8_t inf);
- void do_tremor(int p_track);
- void do_vibrato(int p_track,bool fine);
- void do_pitch_slide_to_note(int p_track);
- void run_effects(int p_track);
- void run_volume_column_effects(int p_track);
- void pre_process_effects();
- void do_arpegio(int p_track);
- uint64_t song_usecs;
- /* NNA */
-
- void process_NNAs();
-
-
- /* MISC UTILS */
-
-
- int find_empty_voice();
- void process_volume_column(int p_track,uint8_t p_volume);
- void process_note(int p_track,CPNote p_note);
-
- /* CPTables */
- static uint8_t auto_vibrato_table[128];
- static uint8_t vibrato_table[32];
- static int8_t panbrello_table[256];
-
- static void callback_function(void *p_userdata);
-
-public:
- //Play modes
-
- enum {
-
- PLAY_NOTHING =0,
- PLAY_PATTERN =1,
- PLAY_SONG =2
- };
-
-
- int32_t get_frequency(int32_t period);
- int32_t get_period(uint16_t note,int32_t p_c5freq);
-
-
- int get_current_tempo() { return control.tempo; };
- int get_current_speed() { return control.speed; };
-
- int get_voices_used() { return control.voices_used;};
- int get_voice_envelope_pos(int p_voice,CPEnvelope *p_envelope);
- int get_voice_amount_limit() { return control.max_voices; };
- void set_voice_amount_limit(int p_limit);
- void set_reserved_voices(int p_amount);
- int get_reserved_voices_amount();
-
- bool is_voice_active(int p_voice);
- int get_channel_voice(int p_channel);
- const char* get_voice_sample_name(int p_voice);
- const char* get_voice_instrument_name(int p_voice);
- CPEnvelope* get_voice_envelope(int p_voice,CPInstrument::EnvelopeType p_env_type);
- int get_voice_envelope_pos(int p_voice,CPInstrument::EnvelopeType p_env_type);
- int get_voice_volume(int p_voice);
-
- int get_voice_sample_index(int p_voice);
-
- void set_virtual_channels(int p_amount);
- int get_virtual_channels() { return control.max_voices; };
-
-
- /* Play Info/Position */
- bool is_playing() { return (control.play_mode>0); };
- int get_play_mode() {return (control.play_mode);};
- int get_current_order() { return control.position.current_order; };
- int get_current_row() { return control.position.current_row; };
- int get_current_pattern() { return control.position.current_pattern; };
-
- void goto_next_order();
- void goto_previous_order();
-
- void process_tick();
-
-
- CPMixer* get_mixer_ptr() {
-
- return mixer;
- }
-
-
- void reset();
-
-
-
- /* External player control - editor - */
-
- void play_start_pattern(int p_pattern);
- void play_start_song();
- void play_start_song_from_order(int p_order);
- void play_start_song_from_order_and_row(int p_order,int p_row);
- void play_start(int p_pattern, int p_order, int p_row,bool p_lock=true);
-
- void play_stop();
- void play_note(int p_channel,CPNote note,bool p_reserve=false);
-
- bool reached_end_of_song();
-
- void set_force_no_nna(bool p_force);
- void set_force_external_vibratos(bool p_force);
-
- void set_filters_enabled(bool p_enable);
- bool are_filters_enabled() { return control.filters; }
-
- void set_channel_global_volume(int p_channel,int p_volume); //0-255
- int get_channel_global_volume(int p_channel) const;
-
- int64_t get_channel_last_note_time_usec(int p_channel) const;
-
- CPSong *get_song() { return song; };
-
-
- CPPlayer(CPMixer *p_mixer,CPSong *p_song);
- ~CPPlayer();
-};
-
-#endif
diff --git a/modules/chibi/cp_player_data_control.cpp b/modules/chibi/cp_player_data_control.cpp
deleted file mode 100644
index 2ef1c1de8c..0000000000
--- a/modules/chibi/cp_player_data_control.cpp
+++ /dev/null
@@ -1,324 +0,0 @@
-/*************************************************************************/
-/* cp_player_data_control.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "cp_player_data.h"
-
-void CPPlayer::play_start_pattern(int p_pattern) {
-
- play_start(p_pattern,-1,-1);
-}
-
-void CPPlayer::play_start_song() {
-
- play_start(-1,-1,-1);
-}
-
-void CPPlayer::play_start_song_from_order(int p_order) {
-
- play_start(-1,p_order,-1);
-}
-
-void CPPlayer::play_start_song_from_order_and_row(int p_order,int p_row) {
-
- play_start(-1,p_order,p_row);
-}
-
-void CPPlayer::play_start(int p_pattern, int p_order, int p_row,bool p_lock) {
-
-
- if (control.play_mode!=PLAY_NOTHING) play_stop();
-
-
- reset();
-
- if (p_pattern!=-1) {
-
- control.play_mode=PLAY_PATTERN;
- control.position.current_pattern=p_pattern;
- control.position.current_row=(p_row!=-1)?p_row:0;
-
- } else {
-
- control.position.current_order=get_song_next_order_idx(song,(p_order==-1)?p_order:p_order-1);
- if (control.position.current_order!=-1) {
-
- control.play_mode=PLAY_SONG;
- control.position.current_pattern=song->get_order(control.position.current_order);
- control.position.current_row=(p_row!=-1)?p_row:0;
- }
- }
-
-
- control.reached_end=(control.play_mode==PLAY_NOTHING);
-
-
-}
-
-void CPPlayer::play_stop() {
-
- int i;
-
-
- control.play_mode=PLAY_NOTHING;
-
- for (i=0;i<control.max_voices;i++) {
-
- voice[i].reset();
- mixer->stop_voice(i);
- }
-
- for (i=0;i<CPPattern::WIDTH;i++) {
-
- control.channel[i].reset();
- }
-
- reset();
-
-}
-
-void CPPlayer::play_note(int p_channel,CPNote note,bool p_reserve) {
-
-
-
- if (control.play_mode==PLAY_NOTHING) {
-
- control.ticks_counter=0;
- }
-
- /*control.channel[p_channel].reset();
- control.channel[p_channel].channel_volume=song->get_channel_volume(p_channel);
- control.channel[p_channel].channel_panning=((int)song->get_channel_pan( p_channel)*255/64);*/
- if (p_reserve) {
- control.channel[p_channel].mute=false;
- control.channel[p_channel].reserved=true;
- } else {
-
- control.channel[p_channel].reserved=false;
-
- }
- process_note(p_channel,note);
-
-
-
-}
-
-
-int CPPlayer::get_voice_volume(int p_voice) {
-
- return voice[p_voice].display_volume;
-}
-
-
-int CPPlayer::get_voice_envelope_pos(int p_voice,CPEnvelope *p_envelope) {
-
- int i,tmp_index=-1;
-
- i=p_voice;
-
-
-
-
- if ((song->has_instruments()) && (voice[i].instrument_ptr!=NULL) && (voice[i].fadeout_volume>0)) {
-
- if ((p_envelope==voice[i].instrument_ptr->get_volume_envelope()) && (voice[i].instrument_ptr->get_volume_envelope()->is_enabled())) {
-
- tmp_index=voice[i].volume_envelope_ctrl.pos_index;
- }
-
- if ((p_envelope==voice[i].instrument_ptr->get_pan_envelope()) && (voice[i].instrument_ptr->get_pan_envelope()->is_enabled())) {
-
- tmp_index=voice[i].panning_envelope_ctrl.pos_index;
- }
-
- if ((p_envelope==voice[i].instrument_ptr->get_pitch_filter_envelope()) && (voice[i].instrument_ptr->get_pitch_filter_envelope()->is_enabled())) {
-
-
- tmp_index=voice[i].pitch_envelope_ctrl.pos_index;
- }
-
- }
-
-
-
- return tmp_index;
-}
-
-void CPPlayer::goto_next_order() {
-
-
- if (control.play_mode!=PLAY_SONG) return;
-
-
-
- control.position.current_row=0;
-
-
- control.position.current_order=get_song_next_order_idx(song, control.position.current_order);
-
-
-
- if (control.position.current_order==-1) {
-
- reset();
- }
-
- control.position.current_pattern=song->get_order(control.position.current_order);
-
-
-}
-void CPPlayer::goto_previous_order() {
-
- if (control.play_mode!=PLAY_SONG) return;
-
-
- int next_order,current_order;
-
- control.position.current_row=0;
-
- current_order=control.position.current_order;
-
- next_order=get_song_next_order_idx(song, current_order);
-
- while ((next_order!=control.position.current_order) && (next_order!=-1)) {
-
- current_order=next_order;
- next_order=get_song_next_order_idx(song, current_order);
- }
-
- if (next_order==-1) {
-
- reset();
- } else {
-
- control.position.current_order=current_order;
- control.position.current_pattern=song->get_order(control.position.current_order);
-
- }
-
-
-
-}
-
-int CPPlayer::get_channel_voice(int p_channel) {
-
- if (control.channel[p_channel].slave_voice==NULL) return -1;
- else return control.channel[p_channel].slave_voice_index;
-}
-
-const char* CPPlayer::get_voice_sample_name(int p_voice) {
-
- const char *name = NULL;
-
-
-
- if (!voice[p_voice].sample_ptr) name=voice[p_voice].sample_ptr->get_name();
-
-
-
- return name;
-
-}
-
-
-bool CPPlayer::is_voice_active(int p_voice) {
-
- return !( ((voice[p_voice].kick==KICK_NOTHING)||(voice[p_voice].kick==KICK_ENVELOPE))&&!mixer->is_voice_active(p_voice) );
-
-}
-
-
-
-int CPPlayer::get_voice_envelope_pos(int p_voice,CPInstrument::EnvelopeType p_env_type) {
-
- if (!is_voice_active(p_voice))
- return -1;
-
- Voice_Control::Envelope_Control *env=0;
-
- switch (p_env_type) {
-
- case CPInstrument::VOLUME_ENVELOPE: env=&voice[p_voice].volume_envelope_ctrl; break;
- case CPInstrument::PAN_ENVELOPE: env=&voice[p_voice].panning_envelope_ctrl; break;
- case CPInstrument::PITCH_ENVELOPE: env=&voice[p_voice].pitch_envelope_ctrl; break;
-
- }
-
- if (!env)
- return -1;
-
- if (!env->active || env->terminated)
- return -1;
-
- return env->pos_index;
-}
-
-
-CPEnvelope* CPPlayer::get_voice_envelope(int p_voice,CPInstrument::EnvelopeType p_env_type) {
-
- CPInstrument *ins=voice[p_voice].instrument_ptr;
-
- if (!ins)
- return 0;
-
- switch( p_env_type ) {
-
-
- case CPInstrument::VOLUME_ENVELOPE: return ins->get_volume_envelope();
- case CPInstrument::PAN_ENVELOPE: return ins->get_pan_envelope();
- case CPInstrument::PITCH_ENVELOPE: return ins->get_pitch_filter_envelope();
- };
-
- return 0;
-
-}
-
-const char * CPPlayer::get_voice_instrument_name(int p_voice) {
-
-
-
- const char *name = NULL;
-
-
-
- if (voice[p_voice].instrument_ptr!=NULL) name=voice[p_voice].instrument_ptr->get_name();
-
-
-
- return name;
-
-}
-void CPPlayer::set_filters_enabled(bool p_enable){
-
- control.filters=p_enable;
-}
-
-int CPPlayer::get_voice_sample_index(int p_voice) {
-
- return voice[p_voice].sample_index;
-}
diff --git a/modules/chibi/cp_player_data_effects.cpp b/modules/chibi/cp_player_data_effects.cpp
deleted file mode 100644
index 56fb7a2905..0000000000
--- a/modules/chibi/cp_player_data_effects.cpp
+++ /dev/null
@@ -1,1232 +0,0 @@
-/*************************************************************************/
-/* cp_player_data_effects.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "cp_player_data.h"
-
-
-
-/**********************
- complex effects
-***********************/
-#define RANDOM_MAX 2147483647
-
-static inline int32_t cp_random_generate(int32_t *seed) {
- int32_t k;
- int32_t s = (int32_t)(*seed);
- if (s == 0)
- s = 0x12345987;
- k = s / 127773;
- s = 16807 * (s - k * 127773) - 2836 * k;
- if (s < 0)
- s += 2147483647;
- (*seed) = (int32_t)s;
- return (int32_t)(s & RANDOM_MAX);
-}
-
-
-
-void CPPlayer::do_vibrato(int p_track,bool fine) {
-
- uint8_t q;
- uint16_t temp=0;
-
- if ((control.ticks_counter==0) && control.channel[p_track].row_has_note) control.channel[p_track].vibrato_position=0;
-
- q=(control.channel[p_track].vibrato_position>>2)&0x1f;
-
- switch (control.channel[p_track].vibrato_type) {
- case 0: /* sine */
- temp=vibrato_table[q];
- break;
- case 1: /* square wave */
- temp=255;
- break;
- case 2: /* ramp down */
- q<<=3;
- if (control.channel[p_track].vibrato_position<0) q=255-q;
- temp=q;
- break;
- case 3: /* random */
- temp=cp_random_generate(&control.random_seed) %256;//getrandom(256);
- break;
- }
-
- temp*=control.channel[p_track].vibrato_depth;
-
- if (song->has_old_effects()) {
-
- temp>>=7;
- } else {
-
- temp>>=8;
- }
-
- if (!fine) temp<<=2;
-
- if (control.channel[p_track].vibrato_position>=0) {
-
- control.channel[p_track].period=control.channel[p_track].aux_period+temp;
- } else {
-
- control.channel[p_track].period=control.channel[p_track].aux_period-temp;
- }
-
- if (!song->has_old_effects() || control.ticks_counter) control.channel[p_track].vibrato_position+=control.channel[p_track].vibrato_speed;
-}
-
-
-void CPPlayer::do_pitch_slide_down(int p_track,uint8_t inf) {
-
- uint8_t hi,lo;
-
- if (inf) control.channel[p_track].pitch_slide_info=inf;
- else inf=control.channel[p_track].pitch_slide_info;
-
- hi=inf>>4;
- lo=inf&0xf;
-
- if (hi==0xf) {
-
- if (!control.ticks_counter) control.channel[p_track].aux_period+=(uint16_t)lo<<2;
- } else if (hi==0xe) {
-
- if (!control.ticks_counter) control.channel[p_track].aux_period+=lo;
- } else {
-
- if (control.ticks_counter) control.channel[p_track].aux_period+=(uint16_t)inf<<2;
- }
-}
-
-void CPPlayer::do_pitch_slide_up(int p_track,uint8_t inf) {
-
- uint8_t hi,lo;
-
- if (inf) control.channel[p_track].pitch_slide_info=inf;
- else inf=control.channel[p_track].pitch_slide_info;
-
- hi=inf>>4;
- lo=inf&0xf;
-
- if (hi==0xf) {
-
- if (!control.ticks_counter) control.channel[p_track].aux_period-=(uint16_t)lo<<2;
- } else if (hi==0xe) {
-
- if (!control.ticks_counter) control.channel[p_track].aux_period-=lo;
- } else {
-
- if (control.ticks_counter) control.channel[p_track].aux_period-=(uint16_t)inf<<2;
- }
-}
-
-void CPPlayer::do_pitch_slide_to_note(int p_track) {
-
- if (control.ticks_counter) {
- int dist;
-
- /* We have to slide a->period towards a->wantedperiod, compute the
- difference between those two values */
- dist=control.channel[p_track].period-control.channel[p_track].slide_to_period;
-
- /* if they are equal or if portamentospeed is too big... */
- if ((!dist)||((control.channel[p_track].portamento_speed<<2)>cp_intabs(dist))) {
- /* ... make tmpperiod equal tperiod */
- control.channel[p_track].aux_period=control.channel[p_track].period=control.channel[p_track].slide_to_period;
- } else {
-
- if (dist>0) {
-
- control.channel[p_track].aux_period-=control.channel[p_track].portamento_speed<<2;
- control.channel[p_track].period-=control.channel[p_track].portamento_speed<<2; /* dist>0 slide up */
- } else {
- control.channel[p_track].aux_period+=control.channel[p_track].portamento_speed<<2;
- control.channel[p_track].period+=control.channel[p_track].portamento_speed<<2; /* dist<0 slide down */
- }
- }
-
- } else {
-
- control.channel[p_track].aux_period=control.channel[p_track].period;
- }
-}
-
-void CPPlayer::do_tremor(int p_track) {
-
- uint8_t on,off,inf;
-
- inf=control.channel[p_track].current_parameter;
-
- if (inf) {
- control.channel[p_track].tremor_info=inf;
- } else {
- inf= control.channel[p_track].tremor_info;
- if (!inf) return;
- }
-
- //if (!control.ticks_counter) return;
-
- on=(inf>>4);
- off=(inf&0xf);
-
- control.channel[p_track].tremor_position%=(on+off);
- control.channel[p_track].volume=(control.channel[p_track].tremor_position<on)?control.channel[p_track].aux_volume:0;
- control.channel[p_track].tremor_position++;
-}
-
-void CPPlayer::do_pan_slide(int p_track) {
-
- uint8_t lo,hi,inf;
- int16_t pan;
-
- inf=control.channel[p_track].current_parameter;
-
- if (inf) control.channel[p_track].channel_pan_slide_info=inf;
- else inf=control.channel[p_track].channel_pan_slide_info;
-
- lo=inf&0xf;
- hi=inf>>4;
-
- pan=(control.channel[p_track].panning==PAN_SURROUND)?PAN_CENTER:control.channel[p_track].panning;
-
- if (!hi)
- pan+=lo<<2;
- else
- if (!lo) {
- pan-=hi<<2;
- } else
- if (hi==0xf) {
- if (!control.ticks_counter) pan+=lo<<2;
- } else
- if (lo==0xf) {
- if (!control.ticks_counter) pan-=hi<<2;
- }
- //this sets both chan & voice paning
- control.channel[p_track].panning=(pan<PAN_LEFT)?PAN_LEFT:(pan>PAN_RIGHT?PAN_RIGHT:pan);
- control.channel[p_track].channel_panning=control.channel[p_track].panning;
-}
-
-void CPPlayer::do_volume_slide(int p_track,int inf) {
-
- uint8_t hi,lo;
-
- lo=inf&0xf;
- hi=inf>>4;
-
- if (!lo) {
-
- if ((control.ticks_counter)) control.channel[p_track].aux_volume+=hi;
-
- } else if (!hi) {
-
- if ((control.ticks_counter)) control.channel[p_track].aux_volume-=lo;
-
- } else if (lo==0xf) {
-
- if (!control.ticks_counter) control.channel[p_track].aux_volume+=(hi?hi:0xf);
- } else if (hi==0xf) {
-
- if (!control.ticks_counter) control.channel[p_track].aux_volume-=(lo?lo:0xf);
- } else return;
-
- if (control.channel[p_track].aux_volume<0) {
-
- control.channel[p_track].aux_volume=0;
- } else if (control.channel[p_track].aux_volume>64) {
-
- control.channel[p_track].aux_volume=64;
- }
-}
-
-void CPPlayer::do_channel_volume_slide(int p_track) {
-
- uint8_t lo, hi,inf;
-
- inf=control.channel[p_track].current_parameter;
-
- if (inf) control.channel[p_track].channel_volume_slide_info=inf;
- inf=control.channel[p_track].channel_volume_slide_info;
-
- lo=inf&0xf;
- hi=inf>>4;
-
- if (!hi)
- control.channel[p_track].channel_volume-=lo;
- else
- if (!lo) {
- control.channel[p_track].channel_volume+=hi;
- } else
- if (hi==0xf) {
- if (!control.ticks_counter) control.channel[p_track].channel_volume-=lo;
- } else
- if (lo==0xf) {
- if (!control.ticks_counter) control.channel[p_track].channel_volume+=hi;
- }
-
- if (control.channel[p_track].channel_volume<0) control.channel[p_track].channel_volume=0;
- if (control.channel[p_track].channel_volume>64) control.channel[p_track].channel_volume=64;
-}
-
-void CPPlayer::do_tremolo(int p_track) {
-
- uint8_t q;
- int16_t temp=0;
-
- if ((control.ticks_counter==0) && control.channel[p_track].row_has_note) control.channel[p_track].tremolo_position=0;
-
- q=(control.channel[p_track].tremolo_position>>2)&0x1f;
-
- switch (control.channel[p_track].tremolo_type) {
- case 0: /* sine */
- temp=vibrato_table[q];
- break;
- case 1: /* ramp down */
- q<<=3;
- if (control.channel[p_track].tremolo_position<0) q=255-q;
- temp=q;
- break;
- case 2: /* square wave */
- temp=255;
- break;
- case 3: /* random */
- temp=cp_random_generate(&control.random_seed) % 256;//getrandom(256);
- break;
- }
-
- temp*=control.channel[p_track].tremolo_depth;
- temp>>=7;
-
-
-
- if (control.channel[p_track].tremolo_position>=0) {
-
-
- control.channel[p_track].volume=control.channel[p_track].aux_volume+temp;
- if (control.channel[p_track].volume>64) control.channel[p_track].volume=64;
- } else {
-
- control.channel[p_track].volume=control.channel[p_track].aux_volume-temp;
- if (control.channel[p_track].volume<0) control.channel[p_track].volume=0;
- }
-
- /*if (control.ticks_counter)*/ control.channel[p_track].tremolo_position+=control.channel[p_track].tremolo_speed;
-
-}
-
-void CPPlayer::do_arpegio(int p_track) {
-
- uint8_t note,dat;
- //note=control.channel[p_track].note;
- note=0;
-
- if (control.channel[p_track].current_parameter) {
-
- control.channel[p_track].arpegio_info=control.channel[p_track].current_parameter;
- }
-
- dat=control.channel[p_track].arpegio_info;
-
- if (dat) {
-
- switch (control.ticks_counter%3) {
-
- case 1: {
-
- note+=(dat>>4);
-
- } break;
- case 2: {
-
- note+=(dat&0xf);
- } break;
- }
-
- if (song->has_linear_slides()) {
-
- control.channel[p_track].period=control.channel[p_track].aux_period-cp_intabs(get_period((uint16_t)46,0)-get_period((uint16_t)44,0))*note;
- } else if (control.channel[p_track].sample_ptr) {
-
- control.channel[p_track].period=get_period( (((uint16_t)control.channel[p_track].note)+note)<<1,CPSampleManager::get_singleton()->get_c5_freq( (control.channel[p_track].sample_ptr->get_sample_data())));
- }
-
- control.channel[p_track].has_own_period=true;
- }
-
-
-}
-
-
-void CPPlayer::do_retrig(int p_track) {
-
- uint8_t inf;
-
- inf=control.channel[p_track].current_parameter;
-
- if (inf) {
-
- control.channel[p_track].retrig_volslide=inf>>4;
- control.channel[p_track].retrig_speed=inf&0xf;
- }
-
- /* only retrigger if low nibble > 0 */
- if ( control.channel[p_track].retrig_speed>0) {
-
- if ( !control.channel[p_track].retrig_counter ) {
- /* when retrig counter reaches 0, reset counter and restart the
- sample */
- if (control.channel[p_track].kick!=KICK_NOTE) control.channel[p_track].kick=KICK_NOTEOFF;
- control.channel[p_track].retrig_counter=control.channel[p_track].retrig_speed;
-
-
- if ((control.ticks_counter)/*||(pf->flags&UF_S3MSLIDES)*/) {
- switch (control.channel[p_track].retrig_volslide) {
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- control.channel[p_track].aux_volume-=(1<<(control.channel[p_track].retrig_volslide-1));
- break;
- case 6:
- control.channel[p_track].aux_volume=(2*control.channel[p_track].aux_volume)/3;
- break;
- case 7:
- control.channel[p_track].aux_volume>>=1;
- break;
- case 9:
- case 0xa:
- case 0xb:
- case 0xc:
- case 0xd:
- control.channel[p_track].aux_volume+=(1<<(control.channel[p_track].retrig_volslide-9));
- break;
- case 0xe:
- control.channel[p_track].aux_volume=(3*control.channel[p_track].aux_volume)>>1;
- break;
- case 0xf:
- control.channel[p_track].aux_volume=control.channel[p_track].aux_volume<<1;
- break;
- }
- if (control.channel[p_track].aux_volume<0) control.channel[p_track].aux_volume=0;
- else if (control.channel[p_track].aux_volume>64) control.channel[p_track].aux_volume=64;
- }
- }
- control.channel[p_track].retrig_counter--; /* countdown */
- }
-}
-
-void CPPlayer::do_global_volume_slide(int p_track) {
-
- uint8_t lo,hi,inf;
-
- inf=control.channel[p_track].current_parameter;
-
- if (inf) control.channel[p_track].global_volume_slide_info=inf;
- inf=control.channel[p_track].global_volume_slide_info;
-
- lo=inf&0xf;
- hi=inf>>4;
-
- if (!lo) {
- if (control.ticks_counter) control.global_volume+=hi;
- } else
- if (!hi) {
- if (control.ticks_counter) control.global_volume-=lo;
- } else
- if (lo==0xf) {
- if (!control.ticks_counter) control.global_volume+=hi;
- } else
- if (hi==0xf) {
- if (!control.ticks_counter) control.global_volume-=lo;
- }
-
- if (control.global_volume<0) control.global_volume=0;
- if (control.global_volume>128) control.global_volume=128;
-}
-
-void CPPlayer::do_panbrello(int p_track) {
-
- uint8_t q;
- int32_t temp=0;
-
- q=control.channel[p_track].panbrello_position;
-
- switch (control.channel[p_track].panbrello_type) {
- case 0: {/* sine */
- temp=panbrello_table[q];
- } break;
- case 1: {/* square wave */
- temp=(q<0x80)?64:0;
- } break;
- case 2: {/* ramp down */
- q<<=3;
- temp=q;
- } break;
- case 3: {/* random */
- if (control.channel[p_track].panbrello_position>=control.channel[p_track].panbrello_speed) {
- control.channel[p_track].panbrello_position=0;
- temp=cp_random_generate(&control.random_seed)%256;//getrandom(256);
- }
- } break;
- }
-
-
-
- temp=temp*(int)control.channel[p_track].panbrello_depth/0xF;
- temp<<=1;
- if (control.channel[p_track].channel_panning!=PAN_SURROUND)
- temp+=control.channel[p_track].channel_panning;
-
- control.channel[p_track].panning=(temp<PAN_LEFT)?PAN_LEFT:(temp>PAN_RIGHT?PAN_RIGHT:temp);
- control.channel[p_track].panbrello_position+=control.channel[p_track].panbrello_speed;
-}
-
-/******************
- S effect
-*******************/
-
-
-void CPPlayer::do_effect_S(int p_track) {
-
- uint8_t inf,c,dat;
-
- dat=control.channel[p_track].current_parameter;
-
- inf=dat&0xf;
- c=dat>>4;
-
- if (!dat) {
- c=control.channel[p_track].current_S_effect;
- inf=control.channel[p_track].current_S_data;
- } else {
- control.channel[p_track].current_S_effect=c;
- control.channel[p_track].current_S_data=inf;
- }
-
- switch (c) {
- case 1: {/* S1x set glissando voice */
- // this is unsupported in IT!
-
- control.channel[p_track].chorus_send=inf*0xFF/0xF;
-
- }break;
- case 2: /* S2x set finetune */
- //Also not supported!
- break;
- case 3: /* S3x set vibrato waveform */
- if (inf<4) control.channel[p_track].vibrato_type=inf;
- break;
- case 4: /* S4x set tremolo waveform */
- if (inf<4) control.channel[p_track].tremolo_type=inf;
- break;
- case 5: /* S5x panbrello */
- if (inf<4) control.channel[p_track].panbrello_type=inf;
- break;
- case 6: {/* S6x delay x number of frames (patdly) */
-
- if (control.ticks_counter) break;
- if (!control.pattern_delay_2) control.pattern_delay_1=inf+1; /* only once, when vbtick=0 */
-
- } break;
- case 7: /* S7x instrument / NNA commands */
-
- if (!song->has_instruments())
- break;
- switch(inf) {
-
- case 0x3: {
-
- control.channel[p_track].NNA_type=CPInstrument::NNA_NOTE_CUT;
- } break;
- case 0x4: {
-
- control.channel[p_track].NNA_type=CPInstrument::NNA_NOTE_CONTINUE;
- } break;
- case 0x5: {
-
- control.channel[p_track].NNA_type=CPInstrument::NNA_NOTE_OFF;
- } break;
- case 0x6: {
-
- control.channel[p_track].NNA_type=CPInstrument::NNA_NOTE_FADE;
- } break;
- case 0x7: {
-
- if (control.channel[p_track].slave_voice)
- control.channel[p_track].slave_voice->volume_envelope_ctrl.active=false;
- } break;
- case 0x8: {
-
- if (control.channel[p_track].slave_voice)
- control.channel[p_track].slave_voice->volume_envelope_ctrl.active=true;
-
- } break;
- case 0x9: {
-
- if (control.channel[p_track].slave_voice)
- control.channel[p_track].slave_voice->panning_envelope_ctrl.active=false;
-
- } break;
- case 0xA: {
-
- if (control.channel[p_track].slave_voice)
- control.channel[p_track].slave_voice->panning_envelope_ctrl.active=true;
-
- } break;
- case 0xB: {
- if (control.channel[p_track].slave_voice)
- control.channel[p_track].slave_voice->pitch_envelope_ctrl.active=false;
-
- } break;
- case 0xC: {
-
- if (control.channel[p_track].slave_voice)
- control.channel[p_track].slave_voice->pitch_envelope_ctrl.active=true;
-
- } break;
-
- } break;
-
- break;
- case 8: {/* S8x set panning position */
-
- //if (pf->panflag) {
- if (inf<=8) inf<<=4;
- else inf*=17;
- control.channel[p_track].panning=control.channel[p_track].channel_panning=inf;
-// }
- } break;
-
- case 9: { /* S9x set surround sound */
- //if (pf->panflag)
- control.channel[p_track].panning=control.channel[p_track].channel_panning=PAN_SURROUND;
- } break;
- case 0xA:{ /* SAy set high order sample offset yxx00h */
-
- if (control.channel[p_track].current_parameter) control.channel[p_track].hi_offset=(int32_t)inf<<16;
- control.channel[p_track].sample_start_index=control.channel[p_track].hi_offset|control.channel[p_track].lo_offset;
- } break;
- case 0xB: { /* SBx pattern loop */
- if (control.ticks_counter) break;
-
- if (inf) { /* set reppos or repcnt ? */
- /* set repcnt, so check if repcnt already is set, which means we
- are already looping */
- if (control.channel[p_track].pattern_loop_count>0)
- control.channel[p_track].pattern_loop_count--; /* already looping, decrease counter */
- else {
- control.channel[p_track].pattern_loop_count=inf; /* not yet looping, so set repcnt */
- }
-
- if (control.channel[p_track].pattern_loop_count>0) { /* jump to reppos if repcnt>0 */
-
- control.position=control.previous_position; // This will also anulate any Cxx or break..
-
- control.position.current_row=control.channel[p_track].pattern_loop_position;
- control.position.forbid_jump=true;
- }
-
- } else {
-
-
- control.channel[p_track].pattern_loop_position=control.position.current_row-1;
- }
-
- } break;
- case 0xC: { /* SCx notecut */
-
- if (control.ticks_counter>=inf) {
-
- control.channel[p_track].aux_volume=0;
- control.channel[p_track].note_end_flags|=END_NOTE_OFF;
- control.channel[p_track].note_end_flags|=END_NOTE_KILL;
- }
- } break;
- case 0xD: {/* SDx notedelay */
-
- if (!control.ticks_counter) {
-
- control.channel[p_track].note_delay=inf;
-
- } else if (control.channel[p_track].note_delay) {
-
- control.channel[p_track].note_delay--;
- }
-
- } break;
- case 0xF: {/* SEx patterndelay */
-
- if (control.ticks_counter) break;
- if (!control.pattern_delay_2) control.pattern_delay_1=inf+1; /* only once, when vbtick=0 */
-
- } break;
- }
-}
-
-
-
-
-
-
-
-
-/*********************
- volume effects
-**********************/
-
-void CPPlayer::run_volume_column_effects(int p_track) {
-
- uint8_t param=control.channel[p_track].current_volume_parameter;
-
-
- switch ('A'+control.channel[p_track].current_volume_command) {
-
- case 'A': {
-
- if (param>0) control.channel[p_track].volcol_volume_slide=param;
- else param=control.channel[p_track].volcol_volume_slide;
-
- do_volume_slide(p_track,param*0x10+0xF);
-
- } break;
- case 'B': {
-
- if (param>0) control.channel[p_track].volcol_volume_slide=param;
- else param=control.channel[p_track].volcol_volume_slide;
-
- do_volume_slide(p_track,0xF0+param);
-
- } break;
- case 'C': {
-
- if (param>0) control.channel[p_track].volcol_volume_slide=param;
- else param=control.channel[p_track].volcol_volume_slide;
-
- do_volume_slide(p_track,param*0x10);
- } break;
- case 'D': {
-
- if (param>0) control.channel[p_track].volcol_volume_slide=param;
- else param=control.channel[p_track].volcol_volume_slide;
- do_volume_slide(p_track,param);
-
- } break;
- case 'E': {
-
- do_pitch_slide_down(p_track,param<<2);
- } break;
- case 'F': {
-
- do_pitch_slide_up(p_track,param<<2);
- } break;
- case 'G': {
-
- const uint8_t slide_table[]={0,1,4,8,16,32,64,96,128,255};
- if (param) {
-
- control.channel[p_track].portamento_speed=slide_table[param];
- }
-
- if (control.channel[p_track].period && (control.channel[p_track].old_note<=120)) {
-
- if ( (!control.ticks_counter) && (control.channel[p_track].new_instrument) ){
-
- //control.channel[p_track].kick=KICK_NOTE;
- //control.channel[p_track].sample_start_index=0; // < am i stupid?
- } else {
-
- control.channel[p_track].kick=(control.channel[p_track].kick==KICK_NOTE)?KICK_ENVELOPE:KICK_NOTHING;
- do_pitch_slide_to_note(p_track);
- control.channel[p_track].has_own_period=true;
- }
-
- }
- } break;
- case 'H': {
-
-
- if (!control.ticks_counter) {
- if (param&0x0f) control.channel[p_track].vibrato_depth=param;
- }
- control.channel[p_track].doing_vibrato=true;
- if (control.external_vibrato) break;
- if (control.channel[p_track].period) {
-
- do_vibrato(p_track,false);
- control.channel[p_track].has_own_period=true;
- }
-
- } break;
- }
-}
-/*********************
- table
-**********************/
-
-
-void CPPlayer::run_effects(int p_track) {
-
- switch ('A'+control.channel[p_track].current_command) {
-
- case 'A': {
-
- if ((control.ticks_counter>0) || (control.pattern_delay_2>0)) break;
-
- int new_speed;
-
- new_speed=control.channel[p_track].current_parameter % 128;
-
- if (new_speed>0) {
- control.speed=new_speed;
- control.ticks_counter=0;
- }
- } break;
- case 'B': {
-
- int next_order;
-
- if (control.ticks_counter || control.position.forbid_jump) break;
-
- control.position.current_row=0;
-
- if (control.play_mode==PLAY_PATTERN) break;
-
- next_order=get_song_next_order_idx(song, (int)control.channel[p_track].current_parameter-1);
-
- if (next_order!=-1) {
- // Do we have a "next order?"
- control.position.current_pattern=song->get_order(next_order);
- control.position.force_next_order=next_order;
-
- } else {
- // no, probably the user deleted the orderlist.
- control.play_mode=PLAY_NOTHING;
- reset();
- }
- } break;
- case 'C': {
-
- int next_order;
-
- if (control.ticks_counter || control.position.forbid_jump) break;
-
- control.position.current_row=control.channel[p_track].current_parameter;
-
- if (control.play_mode==PLAY_PATTERN) {
-
- if (control.position.current_row>=song->get_pattern(control.position.current_pattern)->get_length()) {
-
- control.position.current_row=0;
- }
-
- break;
- }
-
- next_order=get_song_next_order_idx(song, (int)control.position.current_order);
-
- if (next_order!=-1) {
- // Do we have a "next order?"
- control.position.current_pattern=song->get_order(next_order);
-
- if (control.position.current_row>=song->get_pattern(song->get_order(next_order))->get_length()) {
-
- control.position.current_row=0;
- }
-
- control.position.force_next_order=next_order;
-
- } else {
- // no, probably the user deleted the orderlist.
- control.play_mode=PLAY_NOTHING;
- reset();
- }
-
- } break;
- case 'D': {
-
- uint8_t inf ;
- //explicitslides=1;
- inf=control.channel[p_track].current_parameter;
-
- if (inf) control.channel[p_track].volume_slide_info=inf;
- else inf=control.channel[p_track].volume_slide_info;
-
- do_volume_slide(p_track,inf);
-
- } break;
- case 'E': {
-
- uint8_t inf;
-
- inf=control.channel[p_track].current_parameter;
- do_pitch_slide_down(p_track,inf);
-
- } break;
- case 'F': {
-
- uint8_t inf;
-
- inf=control.channel[p_track].current_parameter;
- do_pitch_slide_up(p_track,inf);
-
- } break;
- case 'G': {
-
- if (control.channel[p_track].current_parameter) {
-
- control.channel[p_track].portamento_speed=control.channel[p_track].current_parameter;
- }
-
- if (control.channel[p_track].period && (control.channel[p_track].old_note<=120)) {
-
- if ( (!control.ticks_counter) && (control.channel[p_track].new_instrument) ){
-
-
- control.channel[p_track].kick=KICK_NOTE;
- control.channel[p_track].sample_start_index=0;
-
- } else {
-
- control.channel[p_track].kick=(control.channel[p_track].kick==KICK_NOTE)?KICK_ENVELOPE:KICK_NOTHING;
- }
-
- do_pitch_slide_to_note(p_track);
- control.channel[p_track].has_own_period=true;
- }
-
- } break;
- case 'H': {
-
- uint8_t dat;
-
- control.channel[p_track].doing_vibrato=true;
-
- dat=control.channel[p_track].current_parameter;
-
- if (!control.ticks_counter) {
- if (dat&0x0f) control.channel[p_track].vibrato_depth=dat&0xf;
- if (dat&0xf0) control.channel[p_track].vibrato_speed=(dat&0xf0)>>2;
- }
-
- if (control.external_vibrato) break;
-
- if (control.channel[p_track].period) {
-
- do_vibrato(p_track,false);
- control.channel[p_track].has_own_period=true;
- }
-
- } break;
- case 'I': {
-
- do_tremor(p_track);
- control.channel[p_track].has_own_volume=true;
- } break;
- case 'J': {
-
- do_arpegio(p_track);
- } break;
- case 'K': {
-
- uint8_t inf ;
- //explicitslides=1;
- inf=control.channel[p_track].current_parameter;
-
- control.channel[p_track].doing_vibrato=true;
-
-
- if (inf) control.channel[p_track].volume_slide_info=inf;
- else inf=control.channel[p_track].volume_slide_info;
-
- do_volume_slide(p_track,inf);
-
- if (control.external_vibrato) break;
-
- if (control.channel[p_track].period) {
-
- do_vibrato(p_track,false);
- control.channel[p_track].has_own_period=true;
- }
-
- } break;
- case 'L': {
- uint8_t inf ;
- //explicitslides=1;
- inf=control.channel[p_track].current_parameter;
-
- if (inf) control.channel[p_track].volume_slide_info=inf;
- else inf=control.channel[p_track].volume_slide_info;
-
- do_volume_slide(p_track,inf);
-
- if (control.channel[p_track].period && (control.channel[p_track].old_note<=120)) {
- if ( (!control.ticks_counter) && (control.channel[p_track].new_instrument) ){
-
- control.channel[p_track].kick=KICK_NOTE;
- control.channel[p_track].sample_start_index=0;
-
- } else {
-
- control.channel[p_track].kick=(control.channel[p_track].kick==KICK_NOTE)?KICK_ENVELOPE:KICK_NOTHING;
- }
-
- do_pitch_slide_to_note(p_track);
- control.channel[p_track].has_own_period=true;
- }
- } break;
- case 'M': {
- control.channel[p_track].channel_volume=control.channel[p_track].current_parameter;
- if (control.channel[p_track].channel_volume>64) control.channel[p_track].channel_volume=64;
- else if (control.channel[p_track].channel_volume<0) control.channel[p_track].channel_volume=0;
- } break;
- case 'N': {
-
- do_channel_volume_slide(p_track);
- }
- case 'O': {
-
- if (!control.ticks_counter) {
-
- if (control.channel[p_track].current_parameter) control.channel[p_track].lo_offset=(uint16_t)control.channel[p_track].current_parameter<<8;
- control.channel[p_track].sample_start_index=control.channel[p_track].hi_offset|control.channel[p_track].lo_offset;
-
- //if ((control.channel[p_track].sample_ptr!=NULL)&&(control.channel[p_track].sample_start_index>control.channel[p_track].sample_ptr->data.size)) {
- //TODO, O effect
- //a->start=a->s->flags&(SF_LOOP|SF_BIDI)?a->s->loopstart:a->s->length;
- //}
- }
- } break;
- case 'P': {
-
- do_pan_slide(p_track);
- } break;
- case 'Q': {
- do_retrig(p_track);
-
- } break;
- case 'R': {
-
-
- uint8_t dat;
-
- if (control.channel[p_track].current_parameter) {
-
- control.channel[p_track].tremolo_info=control.channel[p_track].current_parameter;
- }
-
- dat=control.channel[p_track].tremolo_info;
-
- if (!control.ticks_counter && dat) {
-
- if (dat&0x0f) control.channel[p_track].tremolo_depth=dat&0xf;
- if (dat&0xf0) control.channel[p_track].tremolo_speed=(dat&0xf0)>>2;
- }
-
- do_tremolo(p_track);
- control.channel[p_track].has_own_volume=true;
-
- } break;
- case 'S': {
-
- do_effect_S(p_track);
- } break;
- case 'T': {
- uint8_t dat;
- int16_t temp=control.tempo;
-
- if (control.pattern_delay_2) return;
-
- if (control.channel[p_track].current_parameter) {
-
- control.channel[p_track].tempo_slide_info=control.channel[p_track].current_parameter;
- }
-
- dat=control.channel[p_track].tempo_slide_info;
-
- if (dat>=0x20) {
-
- if (control.ticks_counter) break;
- control.tempo=dat;
- } else {
-
- if (!control.ticks_counter) break;
-
- if (dat&0x10) {
-
- temp+=(dat&0x0f);
- } else {
-
- temp-=dat;
- }
- control.tempo=(temp>255)?255:(temp<0x20?0x20:temp);
- }
-
- } break;
- case 'U': {
-
- uint8_t dat;
-
- dat=control.channel[p_track].current_parameter;
- control.channel[p_track].doing_vibrato=true;
- if (!control.ticks_counter) {
- if (dat&0x0f) control.channel[p_track].vibrato_depth=dat&0xf;
- if (dat&0xf0) control.channel[p_track].vibrato_speed=(dat&0xf0)>>2;
- }
-
- if (control.external_vibrato) break;
-
- if (control.channel[p_track].period) {
-
- do_vibrato(p_track,true);
- control.channel[p_track].has_own_period=true;
- }
- } break;
- case 'V': {
-
- control.global_volume=control.channel[p_track].current_parameter;
- if (control.global_volume>128) control.global_volume=128;
- } break;
- case 'W': {
- do_global_volume_slide(p_track);
- } break;
- case 'X': {
- //sets both channel and current
- control.channel[p_track].channel_panning=control.channel[p_track].current_parameter;
- control.channel[p_track].panning=control.channel[p_track].current_parameter;
- } break;
- case 'Y': {
-
- uint8_t dat;
-
- if (control.channel[p_track].current_parameter) {
-
- control.channel[p_track].panbrello_info=control.channel[p_track].current_parameter;
- }
-
- dat=control.channel[p_track].panbrello_info;
-
- if (!control.ticks_counter) {
-
- if (dat&0x0f) control.channel[p_track].panbrello_depth=(dat&0xf);
- if (dat&0xf0) control.channel[p_track].panbrello_speed=(dat&0xf0)>>4;
- }
-
- //if (pf->panflag)
- if (control.channel[p_track].panning!=PAN_SURROUND)do_panbrello(p_track);
-
- } break;
- case 'Z': {
- //I DO! cuttoff!
- uint16_t dat=control.channel[p_track].current_parameter;
-
- if (dat<0x80) {
-
- control.channel[p_track].filter.it_cutoff=dat*2;
- if (control.channel[p_track].filter.it_cutoff>0x80)
- control.channel[p_track].filter.it_cutoff++;
- } else if (dat<0x90) {
-
- control.channel[p_track].filter.it_reso=(dat-0x80)*0x10;
- } else {
-
- control.channel[p_track].reverb_send=(dat-0x90)*255/0x6F;
- }
-
- } break;
-
- }
-
-}
-
-void CPPlayer::pre_process_effects() {
-
-// MP_VOICE *aout;
- int i;
-
- for (i=0;i<CPPattern::WIDTH;i++) {
-
- //a=&pf->control[mp_channel];
-
- // if ((aout=a->slave)) {
- // a->fadevol=aout->fadevol;
- // a->period=aout->period;
- // if (a->kick==KICK_KEYOFF) a->keyoff=aout->keyoff;
- //}
-
- //if (!a->row) continue;
- //UniSetRow(a->row);
- control.channel[i].has_own_period=false;
- control.channel[i].has_own_volume=false;
- control.channel[i].doing_vibrato=false;
- //explicitslides=0;
- //pt_playeffects();
- if (control.ticks_counter<control.speed) {
-
- run_effects(i);
- run_volume_column_effects(i);
- }
-
- /* continue volume slide if necessary for XM and IT */
- //if (pf->flags&UF_BGSLIDES) {
- // if (!explicitslides && a->sliding)
- // DoS3MVolSlide(0);
- // else if (a->tmpvolume) a->sliding=explicitslides;
- //}
-
- if (!control.channel[i].has_own_period) control.channel[i].period=control.channel[i].aux_period;
- if (!control.channel[i].has_own_volume) control.channel[i].volume=control.channel[i].aux_volume;
-
- if ((control.channel[i].sample_ptr!=NULL) && !(song->has_instruments() && (control.channel[i].instrument_ptr==NULL))) {
-
- if (song->has_instruments()) {
-
- control.channel[i].output_volume=
- (control.channel[i].volume*control.channel[i].sample_ptr->get_global_volume()*control.channel[i].instrument_ptr->get_volume_global_amount())/2048;
- control.channel[i].output_volume=control.channel[i].output_volume*control.channel[i].random_volume_variation/100;
-
- } else {
-
- control.channel[i].output_volume=
- (control.channel[i].volume*control.channel[i].sample_ptr->get_global_volume())>>4;
-
- }
-
- if (control.channel[i].output_volume>256) {
-
- control.channel[i].output_volume=256;
-
- } else if (control.channel[i].output_volume<0) {
-
- control.channel[i].output_volume=0;
- }
-
-
- }
- }
-
-}
diff --git a/modules/chibi/cp_player_data_envelopes.cpp b/modules/chibi/cp_player_data_envelopes.cpp
deleted file mode 100644
index a720eaf734..0000000000
--- a/modules/chibi/cp_player_data_envelopes.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-/*************************************************************************/
-/* cp_player_data_envelopes.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "cp_player_data.h"
-
-
-void CPPlayer::Voice_Control::start_envelope(CPEnvelope *p_envelope,Envelope_Control *p_envelope_ctrl,Envelope_Control *p_from_env) {
-
-
- if (p_from_env && p_envelope->is_carry_enabled() && !p_from_env->terminated) {
-
-
- *p_envelope_ctrl=*p_from_env;
- } else {
- p_envelope_ctrl->pos_index=0;
- p_envelope_ctrl->status=1;
- p_envelope_ctrl->sustain_looping=p_envelope->is_sustain_loop_enabled();
- p_envelope_ctrl->looping=p_envelope->is_loop_enabled();
- p_envelope_ctrl->terminated=false;
- p_envelope_ctrl->kill=false;
- p_envelope_ctrl->value=p_envelope->get_height_at_pos(p_envelope_ctrl->pos_index);
- }
-}
-
-bool CPPlayer::Voice_Control::process_envelope(CPEnvelope *p_envelope,Envelope_Control *p_envelope_ctrl) {
-
- if (!p_envelope_ctrl->active)
- return false;
-
- if (note_end_flags&END_NOTE_OFF) p_envelope_ctrl->sustain_looping=false;
-
- p_envelope_ctrl->value=p_envelope->get_height_at_pos(p_envelope_ctrl->pos_index);
- if (p_envelope_ctrl->value==CPEnvelope::NO_POINT)
- return false;
-
-
- p_envelope_ctrl->pos_index++;
-
- if (p_envelope_ctrl->sustain_looping) {
-
- if (p_envelope_ctrl->pos_index>p_envelope->get_node(p_envelope->get_sustain_loop_end()).tick_offset) {
-
- p_envelope_ctrl->pos_index=p_envelope->get_node(p_envelope->get_sustain_loop_begin()).tick_offset;
- }
-
- } else if (p_envelope_ctrl->looping) {
-
- if (p_envelope_ctrl->pos_index>p_envelope->get_node(p_envelope->get_loop_end()).tick_offset) {
-
- p_envelope_ctrl->pos_index=p_envelope->get_node(p_envelope->get_loop_begin()).tick_offset;
- }
-
- }
-
- if (p_envelope_ctrl->pos_index>p_envelope->get_node(p_envelope->get_node_count()-1).tick_offset) {
-
- p_envelope_ctrl->terminated=true;
- p_envelope_ctrl->pos_index=p_envelope->get_node(p_envelope->get_node_count()-1).tick_offset;
- if (p_envelope->get_node(p_envelope->get_node_count()-1).value==0) p_envelope_ctrl->kill=true;
- }
-
- return true;
-}
diff --git a/modules/chibi/cp_player_data_events.cpp b/modules/chibi/cp_player_data_events.cpp
deleted file mode 100644
index 94a048ab2f..0000000000
--- a/modules/chibi/cp_player_data_events.cpp
+++ /dev/null
@@ -1,681 +0,0 @@
-/*************************************************************************/
-/* cp_player_data_events.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "cp_player_data.h"
-#include "cp_sample_manager.h"
-#include "stdio.h"
-/*
- setup_voices():
-
-This will go throught all the REAL channels, if it finds a channel
-that needs to be restarted or assigned a new VIRTUAL channel, then it
-will just find one and do it.
-
-*/
-
-
-#define C5FREQ 261.6255653006
-static const int32_t C5FREQ_MIXER = ((int32_t)(C5FREQ*(float)(1<<CPMixer::FREQUENCY_BITS)));
-
-
-void CPPlayer::setup_voices() {
-
- int i,voice_index;
-
-
-
-
- for (i=0;i<CPPattern::WIDTH;i++) {
-
- voice_index=-1;
-
- if (control.channel[i].note_delay) continue;
-
-
- // check if we need a new empty voice
- if (control.channel[i].kick==KICK_NOTE) {
-
- /* if no channel was cut above, find an empty or quiet channel
- here */
- if ( song->has_instruments() && !control.force_no_nna) {
-
- if (control.channel[i].slave_voice==NULL) { // no slave??
-
- int newchn;
- if ((newchn=find_empty_voice())!=-1) {
-
- control.channel[i].slave_voice_index=newchn;
- control.channel[i].slave_voice=&voice[newchn];
- }
- }
-
- } else {
- if (i<control.max_voices) {
-
- control.channel[i].slave_voice_index=i;
- control.channel[i].slave_voice=&voice[i];
- } else {
- //This is a _DIRTY_ hack, but i cant think a better way.
- control.channel[i].slave_voice_index=control.max_voices-1;
- control.channel[i].slave_voice=&voice[control.max_voices-1];
- }
-
- }
-
-
- /* assign parts of MP_VOICE only done for a KICK_NOTE */
- if ( ( control.channel[i].slave_voice!=NULL ) ) {
-
- voice_index=control.channel[i].slave_voice_index;
- Voice_Control &v=voice[voice_index];
-
- if (v.has_master_channel && (v.master_channel!=NULL) ) {
- // If this voice already has a master channel, make sure to remove the reference to it.
- v.master_channel->slave_voice=NULL;
-
- }
- //notify the voice that the current channel is the master
- v.master_channel=&control.channel[i];
- //set the voice as slave of the current channel
- control.channel[i].slave_voice=&v;
- //master channel index of the voice
- v.master_channel_index=i;
- v.has_master_channel=true;
- }
-
- } else {
- // nope..
- // so if we DO have a slave voice then use it.
- if ( control.channel[i].slave_voice!=NULL ) {
-
- voice_index=control.channel[i].slave_voice_index;
- }
- }
- //assuming this channel has a slave voice..
- if (voice_index>=0) {
-
- // IMPROVE: Code a method for this:
- voice[voice_index].update_info_from_master_channel();
- }
-
- control.channel[i].kick=KICK_NOTHING;
- }
-}
-void CPPlayer::Voice_Control::reset() {
-
- cp_memzero(this,sizeof(*this));
-
- instrument_ptr=NULL;
- sample_ptr=NULL;
- has_master_channel=false;
- instrument_index=-1;
- reverb_send=0;
- chorus_send=0;
- filter.it_cutoff=255;
- filter.it_reso=0;
- display_volume=0;
-
-
-}
-
-void CPPlayer::Channel_Control::reset() {
-
- int prev_gv =channel_global_volume;
- cp_memzero(this,sizeof(*this));
-
- slave_voice=NULL;
- slave_voice_index=255;
-
- mute=false;
- old_note=255;
- real_note=255;
- instrument_index=255;
- filter.it_cutoff=255;
- filter.it_reso=0;
- reverb_send=0;
- chorus_send=0;
- reserved=false;
- carry.maybe=false;
- last_event_usecs=-1;
- channel_global_volume=prev_gv;
-}
-
-void CPPlayer::Voice_Control::update_info_from_master_channel() {
-
- instrument_ptr=master_channel->instrument_ptr;
- sample_ptr=master_channel->sample_ptr;
-
- instrument_index=master_channel->instrument_index;
- sample_index=master_channel->sample_index;
-
- note=master_channel->note;
- output_volume=master_channel->output_volume;
-
- channel_volume=master_channel->channel_volume;
-
- panning=master_channel->panning;
-
- kick=master_channel->kick;
- note_end_flags=master_channel->note_end_flags;
- period=master_channel->period;
-
- volume_envelope_ctrl.active=master_channel->volume_envelope_on;
- panning_envelope_ctrl.active=master_channel->panning_envelope_on;
- pitch_envelope_ctrl.active=master_channel->pitch_envelope_on;
-
-
- NNA_type=master_channel->NNA_type;
- reverb_send=master_channel->reverb_send;
- chorus_send=master_channel->chorus_send;
-
- //last_note_type=master_channel->last_note_type;
-
- sample_start_index=master_channel->sample_start_index;
- filter=master_channel->filter;
-
-}
-
-
-void CPPlayer::update_mixer() {
-
- int tmp_mixer_period;
- int32_t tmp_vibrato_value,tmp_vibrato_depth,tmp_volenv_value;
- uint64_t tmpvol; // 64bits should be the only way to avoid getting notes raped out
- int i;
-
-
- control.voices_used=0;
-
- for (i=0;i<control.max_voices;i++) {
-
-
- int filter_env=-1;
- Voice_Control &v=voice[i];
-
- if ( !((v.kick==KICK_NOTE)||(v.kick==KICK_NOTEOFF)) && !is_voice_active(i))
- continue;
-
- //if voice doesnt have a sample set or size is 0.. forget it
- if ( v.sample_ptr==NULL) continue;
-
-
- //TODO set limits somewhere else
-
- if (v.period<40) {
-
- v.period=40;
-
- } else if (v.period>50000) {
-
- v.period=50000;
- }
-
-
- if ((v.kick==KICK_NOTE)||(v.kick==KICK_NOTEOFF)) {
-
- int real_start_index;
-
- if (v.sample_start_index==-1) {
-
- real_start_index=0;
-
- } else {
-
- real_start_index=v.sample_start_index;
- }
-
- mixer->setup_voice(i,v.sample_ptr->get_sample_data(),real_start_index);
- v.fadeout_volume=1024; //IT Docs it is 1024 internally
- v.auto_vibrato_sweep_pos=0;
-
-
-
- }
-
-
- /* Start Envelopes */
- if ( song->has_instruments() && ((v.kick==KICK_NOTE)||(v.kick==KICK_ENVELOPE))) {
-
- //Voice_Control *carry=0;
-
-
- if (v.has_master_channel && v.master_channel->carry.maybe) {
-
- v.start_envelope(v.instrument_ptr->get_volume_envelope(),&v.volume_envelope_ctrl,&v.master_channel->carry.vol);
- v.start_envelope(v.instrument_ptr->get_pan_envelope(),&v.panning_envelope_ctrl,&v.master_channel->carry.pan);
- v.start_envelope(v.instrument_ptr->get_pitch_filter_envelope(),&v.pitch_envelope_ctrl,&v.master_channel->carry.pitch);
-
- } else {
-
- v.start_envelope(v.instrument_ptr->get_volume_envelope(),&v.volume_envelope_ctrl,NULL);
- v.start_envelope(v.instrument_ptr->get_pan_envelope(),&v.panning_envelope_ctrl,NULL);
- v.start_envelope(v.instrument_ptr->get_pitch_filter_envelope(),&v.pitch_envelope_ctrl,NULL);
-
- }
-
-
- }
-
- v.kick=KICK_NOTHING;
-
- if (song->has_instruments()) {
-
- if (!v.process_envelope(v.instrument_ptr->get_volume_envelope(),&v.volume_envelope_ctrl))
- v.volume_envelope_ctrl.value=64;
-
- if (!v.process_envelope(v.instrument_ptr->get_pan_envelope(),&v.panning_envelope_ctrl))
- v.panning_envelope_ctrl.value=0;
-
- if (!v.process_envelope(v.instrument_ptr->get_pitch_filter_envelope(),&v.pitch_envelope_ctrl))
- v.pitch_envelope_ctrl.value=0;
-
-
- if (v.volume_envelope_ctrl.terminated) {
-
- if (v.volume_envelope_ctrl.kill) {
-
- v.fadeout_volume=0;
- } else {
-
- v.note_end_flags|=END_NOTE_FADE;
- }
- }
-
- }
-
- if (song->has_instruments()) {
-
- tmp_volenv_value=v.volume_envelope_ctrl.value;
- } else {
-
- tmp_volenv_value=64;
-
- }
-
- /*printf("fadeout %i\n",(int)v.fadeout_volume);
- printf("channel %i\n",(int)v.channel_volume);
- printf("output %i\n",(int)v.output_volume);
- printf("env %i\n",(int)tmp_volenv_value);
- printf("cgb %i\n",(int)v.master_channel->channel_global_volume);
-*/
-
-
- tmpvol=(uint64_t)v.fadeout_volume; /* max 1024 - 10 bits */
- tmpvol*=(uint64_t)v.channel_volume; /* * max 64 - 6 bits */
- tmpvol*=(uint64_t)v.output_volume; /* * max 256 - 8 bits */
- tmpvol*=(uint64_t)tmp_volenv_value; /* max 64 - 6 bits*/
- tmpvol*=(uint64_t)v.master_channel->channel_global_volume;
- v.display_volume=tmpvol>>22; //volume used for display purposes , 0 -- 256
-
- tmpvol*=(uint64_t)song->get_mixing_volume(); /* max 128 - 7 bits */
- tmpvol*=(uint64_t)control.global_volume; /* max 128 - 7 bits*/
- /* total 10+6+8+6+7+7=44 bits */
-
- tmpvol>>=43; /* Move back to 8 bits range , 44-19+8=43*/
-
- if (tmpvol>CP_VOL_MAX)
- tmpvol=CP_VOL_MAX;
-
- //printf("volume check - fade %i, channel %i, output %i, env %i, mix %i, global %i -- final %i\n",v.fadeout_volume, v.channel_volume,v.output_volume,tmp_volenv_value, song->get_mixing_volume(),control.global_volume,tmpvol);
-
- v.total_volume=tmpvol;
-
-
- if ((v.master_channel!=NULL) && song->is_channel_mute( v.master_channel_index ) && !v.master_channel->reserved) {
-
- mixer->set_voice_volume(i,0);
- } else {
- mixer->set_voice_volume(i,tmpvol);
- if (v.fadeout_volume>0) control.voices_used++;
- }
-
-
- if (!song->is_stereo()) {
-
- mixer->set_voice_panning(i,PAN_CENTER);
-
- } else if (v.panning==PAN_SURROUND) {
-
- mixer->set_voice_panning(i,PAN_SURROUND);
- } else if (song->has_instruments()) {
-
- int newpan,real_modifier;
-
-
- real_modifier=(v.panning_envelope_ctrl.value*(PAN_CENTER-cp_intabs(v.panning-PAN_CENTER)))/32;
-
- newpan=v.panning+real_modifier;
-
- newpan=(newpan<PAN_LEFT)?PAN_LEFT:(newpan>PAN_RIGHT)?PAN_RIGHT:newpan;
- //printf("panenv val: %i, finalpan val %i\n",v.panning_envelope_ctrl.value,newpan);
-
- mixer->set_voice_panning(i,newpan);
- } else {
- mixer->set_voice_panning(i,v.panning);
- }
-
-
-
- /* VIBRATO */
-
- if ( (v.period>0) && (v.sample_ptr->get_vibrato_depth()>0) ) {
-
- switch (v.sample_ptr->get_vibrato_type()) {
- case CPSample::VIBRATO_SINE:
- tmp_vibrato_value=auto_vibrato_table[v.auto_vibrato_pos&127];
- if (v.auto_vibrato_pos & 0x80) tmp_vibrato_value=-tmp_vibrato_value;
- break;
- case CPSample::VIBRATO_SQUARE:
- tmp_vibrato_value=64;
- if (v.auto_vibrato_pos & 0x80) tmp_vibrato_value=-tmp_vibrato_value;
- break;
- case CPSample::VIBRATO_SAW:
- tmp_vibrato_value=63-(((v.auto_vibrato_pos+128)&255)>>1);
- break;
- default:
- tmp_vibrato_value=(((v.auto_vibrato_pos+128)&255)>>1)-64;
- break;
- }
- } else {
-
- tmp_vibrato_value=0;
- }
-
- if ((v.auto_vibrato_sweep_pos>>8)<v.sample_ptr->get_vibrato_depth()) {
-
- v.auto_vibrato_sweep_pos+=v.sample_ptr->get_vibrato_speed(); //FIXME - speed? i think so
- tmp_vibrato_depth=v.auto_vibrato_sweep_pos;
-
- } else {
-
- tmp_vibrato_depth=v.sample_ptr->get_vibrato_depth()<<8;
- }
-
- tmp_vibrato_value=(tmp_vibrato_value*tmp_vibrato_depth)>>16;
- if (song->has_linear_slides())
- tmp_vibrato_value>>=1;
- v.period-=tmp_vibrato_value;
-
-
- /* update vibrato position */
- v.auto_vibrato_pos=(v.auto_vibrato_pos+v.sample_ptr->get_vibrato_rate())&0xff;
-
-
- /* process pitch envelope */
- tmp_mixer_period=v.period;
-
- if (v.pitch_envelope_ctrl.active) {
-
- long aux_pitch_diff;
- int pe_value=v.pitch_envelope_ctrl.value;
-
- if (!v.instrument_ptr->is_pitch_use_as_filter()) {
-
-
- if (((uint16_t)v.note<<1)+pe_value<=0)
- pe_value=-(v.note<<1);
-
- int smp_c5=CPSampleManager::get_singleton()->get_c5_freq( v.sample_ptr->get_sample_data());
-
- int base=get_period(((uint16_t)v.note<<1),smp_c5);
- int env=get_period(((uint16_t)v.note<<1)+pe_value,smp_c5);
- /*
- int env_next=(pe_value<0)?get_period(((uint16_t)(v.note-1)<<1)+pe_value,smp_c5):get_period(((uint16_t)(v.note+1)<<1)+pe_value,smp_c5);
-
- env=env+(abs(v.pitch_envelope_ctrl.value)&((1<<CPEnvelope::FX_HEIGHT_BITS)-1))*(env_next-env)/(1<<CPEnvelope::FX_HEIGHT_BITS);
-
- printf("env %i\n",env);
- */
- aux_pitch_diff=env-base;
-
-
- if ( ((int)tmp_mixer_period-aux_pitch_diff)<0 ) aux_pitch_diff=0;
-
- tmp_mixer_period+=aux_pitch_diff;
-
- } else {
-
- filter_env=pe_value+32; //max 64
- //printf("pitch envelope at %i",filter_env);
-
- }
- }
-
- if (v.fadeout_volume==0 || (v.note_end_flags & END_NOTE_KILL)) { /* check for a dead note (fadevol=0) */
-
- mixer->stop_voice(i);
-
- } else {
-
-
- int32_t freq=get_frequency(tmp_mixer_period);
- int32_t tracker_c5=get_frequency(get_period(60<<1,CPSampleManager::get_singleton()->get_c5_freq( v.sample_ptr->get_sample_data())));
-
- freq=(int32_t)((uint64_t)freq*(uint64_t)C5FREQ_MIXER/(uint64_t)tracker_c5); //numbers may become very high
- mixer->set_voice_frequency(i,freq);
-
- /* if keyfade, start substracting fadeoutspeed from fadevol: */
- if ((song->has_instruments())&&(v.note_end_flags & END_NOTE_FADE)) {
-
- if (v.fadeout_volume>=(v.instrument_ptr->get_volume_fadeout())) {
-
- v.fadeout_volume-=(v.instrument_ptr->get_volume_fadeout());
- } else {
-
- v.fadeout_volume=0;
- }
- }
-
- /*FILTARSSSSSSSS*/
-
-
-
- v.filter.envelope_cutoff=filter_env;
- v.filter.process();
-
- if ((v.filter.final_cutoff<0xFF) && (control.filters)) {
-
- //int final_cutoff;
- //uint8_t final_reso;
-
- //v.filter.set_filter_parameters( &final_cutoff, &final_reso );
-
- mixer->set_voice_filter(i,true,v.filter.final_cutoff,v.filter.it_reso);
- } else {
-
-
- mixer->set_voice_filter(i,false,0,0);
- }
-
- /* RAIVERV */
-
- mixer->set_voice_reverb_send(i,v.reverb_send);
-
- /* CHAURUZ */
-
- mixer->set_voice_chorus_send(i,v.chorus_send);
-
- }
- }
-
-
- switch(song->get_reverb_mode()) {
-
- case CPSong::REVERB_MODE_ROOM: {
-
- mixer->set_reverb_mode( CPMixer::REVERB_MODE_ROOM );
- } break;
- case CPSong::REVERB_MODE_STUDIO_SMALL: {
-
- mixer->set_reverb_mode( CPMixer::REVERB_MODE_STUDIO_SMALL );
-
- } break;
- case CPSong::REVERB_MODE_STUDIO_MEDIUM: {
-
- mixer->set_reverb_mode( CPMixer::REVERB_MODE_STUDIO_MEDIUM );
-
- } break;
- case CPSong::REVERB_MODE_STUDIO_LARGE: {
-
- mixer->set_reverb_mode( CPMixer::REVERB_MODE_STUDIO_LARGE );
-
- } break;
- case CPSong::REVERB_MODE_HALL: {
-
- mixer->set_reverb_mode( CPMixer::REVERB_MODE_HALL );
-
- } break;
- case CPSong::REVERB_MODE_SPACE_ECHO: {
-
- mixer->set_reverb_mode( CPMixer::REVERB_MODE_SPACE_ECHO );
-
- } break;
- case CPSong::REVERB_MODE_ECHO: {
-
- mixer->set_reverb_mode( CPMixer::REVERB_MODE_ECHO );
-
- } break;
- case CPSong::REVERB_MODE_DELAY: {
-
- mixer->set_reverb_mode( CPMixer::REVERB_MODE_DELAY );
-
- } break;
- case CPSong::REVERB_MODE_HALF_ECHO: {
-
- mixer->set_reverb_mode( CPMixer::REVERB_MODE_HALF_ECHO );
-
- } break;
-
- }
-
- mixer->set_chorus_params(song->get_chorus_delay_ms(),song->get_chorus_separation_ms(),song->get_chorus_depth_ms10(),song->get_chorus_speed_hz10() );
-
-
-}
-
-
-
-
-
-
-
-
-void CPPlayer::handle_tick() {
-
- int i;
-
-
- if ( mixer==NULL ) return;
- if ( song==NULL ) return;
-
-
- /* update time counter (sngtime is in milliseconds (in fact 2^-10)) */
-
- if (control.ticks_counter>=control.speed) { // time to process... ***THE ROW***!
-
- /* process pattern-delay. pf->patdly2 is the counter and pf->patdly is
- the command memory. */
-
- /*
- if (control.pattern_delay_1) {
-
- control.pattern_delay_2=control.pattern_delay_1;
- control.pattern_delay_1=0;
- }
- if (control.pattern_delay_2) {
- patterndelay active
- if (--control.pattern_delay_2)
- // so turn back pf->patpos by 1
- if (pf->patpos) pf->patpos--;
- }
- */
-
- if (control.play_mode!=PLAY_NOTHING) {
-
- control.ticks_counter=0;
-
-
- if (control.position.force_next_order>=0) {
-
- control.position.current_order=control.position.force_next_order;
- }
-
- control.position.force_next_order=-1;
-
- control.previous_position=control.position; // for those special cases...
- control.position.forbid_jump=false;
-
- for (i=0;i<CPPattern::WIDTH;i++) {
-
- process_note(i,song->get_pattern(control.position.current_pattern)->get_note(i,control.position.current_row));
- }
-
- control.position.current_row++;
-
- if ( control.position.current_row>=song->get_pattern(control.position.current_pattern)->get_length() ) {
-
- if (control.play_mode==PLAY_SONG) {
-
- int next_order;
-
- next_order=get_song_next_order_idx(song,control.position.current_order);
-
- if (next_order!=-1) {
- // Do we have a "next order?"
- control.position.current_pattern=song->get_order(next_order);
- if (next_order<=control.position.current_order)
- control.reached_end=true;
- control.position.current_order=next_order;
-
- } else {
- // no, probably the user deleted the orderlist.
- control.play_mode=PLAY_NOTHING;
- reset();
- control.reached_end=true;
- }
- }
- control.position.current_row=0;
- }
-
- }
-
-
- }
-
-
-
- pre_process_effects();
- process_NNAs();
- setup_voices();
-
- /* now set up the actual hardware channel playback information */
- update_mixer();
-
- control.ticks_counter++;
-}
diff --git a/modules/chibi/cp_player_data_filter.cpp b/modules/chibi/cp_player_data_filter.cpp
deleted file mode 100644
index e04ae126fd..0000000000
--- a/modules/chibi/cp_player_data_filter.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-/*************************************************************************/
-/* cp_player_data_filter.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-
-#include "cp_player_data.h"
-
-static float filter_cutoff[256] = {
- 130, 132, 134, 136, 138, 140, 142, 144,
- 146, 148, 151, 153, 155, 157, 160, 162,
- 164, 167, 169, 172, 174, 177, 179, 182,
- 184, 187, 190, 193, 195, 198, 201, 204,
- 207, 210, 213, 216, 220, 223, 226, 229,
- 233, 236, 239, 243, 246, 250, 254, 257,
- 261, 265, 269, 273, 277, 281, 285, 289,
- 293, 297, 302, 306, 311, 315, 320, 324,
- 329, 334, 339, 344, 349, 354, 359, 364,
- 369, 375, 380, 386, 391, 397, 403, 409,
- 415, 421, 427, 433, 440, 446, 452, 459,
- 466, 472, 479, 486, 493, 501, 508, 515,
- 523, 530, 538, 546, 554, 562, 570, 578,
- 587, 595, 604, 613, 622, 631, 640, 649,
- 659, 668, 678, 688, 698, 708, 718, 729,
- 739, 750, 761, 772, 783, 795, 806, 818,
- 830, 842, 854, 867, 880, 892, 905, 918,
- 932, 945, 959, 973, 987, 1002, 1016, 1031,
- 1046, 1061, 1077, 1092, 1108, 1124, 1141, 1157,
- 1174, 1191, 1209, 1226, 1244, 1262, 1280, 1299,
- 1318, 1337, 1357, 1376, 1396, 1417, 1437, 1458,
- 1479, 1501, 1523, 1545, 1567, 1590, 1613, 1637,
- 1661, 1685, 1709, 1734, 1760, 1785, 1811, 1837,
- 1864, 1891, 1919, 1947, 1975, 2004, 2033, 2062,
- 2093, 2123, 2154, 2185, 2217, 2249, 2282, 2315,
- 2349, 2383, 2418, 2453, 2489, 2525, 2561, 2599,
- 2637, 2675, 2714, 2753, 2793, 2834, 2875, 2917,
- 2959, 3003, 3046, 3091, 3135, 3181, 3227, 3274,
- 3322, 3370, 3419, 3469, 3520, 3571, 3623, 3675,
- 3729, 3783, 3838, 3894, 3951, 4008, 4066, 4125,
- 4186, 4246, 4308, 4371, 4434, 4499, 4564, 4631,
- 4698, 4766, 4836, 4906, 4978, 5050, 5123, 5198
-};
-
-
-void CPPlayer::Filter_Control::process() {
-
-
- final_cutoff=it_cutoff;
- if (envelope_cutoff>=0) {
-
- envelope_cutoff=envelope_cutoff*255/64;
- final_cutoff=final_cutoff*envelope_cutoff/255;
- if (final_cutoff>=0xFF) final_cutoff=0xFE;
-
- }
-
-}
-
-void CPPlayer::Filter_Control::set_filter_parameters(int *p_cutoff,uint8_t *p_reso) {
-
-
-
- *p_cutoff=filter_cutoff[final_cutoff];
- *p_reso=it_reso;
-}
diff --git a/modules/chibi/cp_player_data_nna.cpp b/modules/chibi/cp_player_data_nna.cpp
deleted file mode 100644
index 3c50bfb01f..0000000000
--- a/modules/chibi/cp_player_data_nna.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-/*************************************************************************/
-/* cp_player_data_nna.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "cp_player_data.h"
-
-void CPPlayer::process_NNAs() {
-
- int i;
-
- if (!song->has_instruments()) return;
-
- for (i=0;i<CPPattern::WIDTH;i++) {
-
- Channel_Control *aux_chn_ctrl = &control.channel[i];
-
- if (aux_chn_ctrl->kick==KICK_NOTE) {
-
- bool k=false;
-
- if (aux_chn_ctrl->slave_voice!=NULL) {
-
- Voice_Control *aux_voc_ctrl;
-
- aux_voc_ctrl=aux_chn_ctrl->slave_voice;
-
- if (aux_chn_ctrl->instrument_index==aux_chn_ctrl->slave_voice->instrument_index) { //maybe carry
-
- aux_chn_ctrl->carry.pan=aux_chn_ctrl->slave_voice->panning_envelope_ctrl;
- aux_chn_ctrl->carry.vol=aux_chn_ctrl->slave_voice->volume_envelope_ctrl;
- aux_chn_ctrl->carry.pitch=aux_chn_ctrl->slave_voice->pitch_envelope_ctrl;
- aux_chn_ctrl->carry.maybe=true;
- } else
- aux_chn_ctrl->carry.maybe=false;
-
- if (aux_voc_ctrl->NNA_type != CPInstrument::NNA_NOTE_CUT) {
- /* Make sure the old MP_VOICE channel knows it has no
- master now ! */
-
-
-
- aux_chn_ctrl->slave_voice=NULL;
- /* assume the channel is taken by NNA */
- aux_voc_ctrl->has_master_channel=false;
-
- switch (aux_voc_ctrl->NNA_type) {
- case CPInstrument::NNA_NOTE_CONTINUE: {
-
- } break;
- case CPInstrument::NNA_NOTE_OFF: {
-
-
- aux_voc_ctrl->note_end_flags|=END_NOTE_OFF;
-
- if (!aux_voc_ctrl->volume_envelope_ctrl.active || aux_voc_ctrl->instrument_ptr->get_volume_envelope()->is_loop_enabled()) {
- aux_voc_ctrl->note_end_flags|=END_NOTE_FADE;
- }
- } break;
- case CPInstrument::NNA_NOTE_FADE: {
-
- aux_voc_ctrl->note_end_flags|=END_NOTE_FADE;
- } break;
- }
- }
- }
-
- if (aux_chn_ctrl->duplicate_check_type!=CPInstrument::DCT_DISABLED) {
- int i;
-
- for (i=0;i<control.max_voices;i++) {
- if (!mixer->is_voice_active(i)||
- (voice[i].master_channel!=aux_chn_ctrl) ||
- (aux_chn_ctrl->instrument_index!=voice[i].instrument_index))
- continue;
-
- Voice_Control *aux_voc_ctrl;
-
- aux_voc_ctrl=&voice[i];
-
- k=false;
- switch (aux_chn_ctrl->duplicate_check_type) {
- case CPInstrument::DCT_NOTE:
- if (aux_chn_ctrl->note==aux_voc_ctrl->note)
- k=true;
- break;
- case CPInstrument::DCT_SAMPLE:
- if (aux_chn_ctrl->sample_ptr==aux_voc_ctrl->sample_ptr)
- k=true;
- break;
- case CPInstrument::DCT_INSTRUMENT:
- k=true;
- break;
- }
- if (k) {
- switch (aux_chn_ctrl->duplicate_check_action) {
- case CPInstrument::DCA_NOTE_CUT: {
- aux_voc_ctrl->fadeout_volume=0;
- } break;
- case CPInstrument::DCA_NOTE_OFF: {
-
- aux_voc_ctrl->note_end_flags|=END_NOTE_OFF;
-
- if (!aux_voc_ctrl->volume_envelope_ctrl.active || aux_chn_ctrl->instrument_ptr->get_volume_envelope()->is_loop_enabled()) {
-
- aux_voc_ctrl->note_end_flags|=END_NOTE_FADE;
- }
-
- } break;
- case CPInstrument::DCA_NOTE_FADE: {
- aux_voc_ctrl->note_end_flags|=END_NOTE_FADE;
- } break;
- }
- }
- }
-
- }
- } /* if (aux_chn_ctrl->kick==KICK_NOTE) */
- }
-}
diff --git a/modules/chibi/cp_player_data_notes.cpp b/modules/chibi/cp_player_data_notes.cpp
deleted file mode 100644
index 189403343c..0000000000
--- a/modules/chibi/cp_player_data_notes.cpp
+++ /dev/null
@@ -1,345 +0,0 @@
-/*************************************************************************/
-/* cp_player_data_notes.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "cp_player_data.h"
-#include "cp_sample_manager.h"
-
-#define RANDOM_MAX 2147483647
-
-static inline int32_t cp_random_generate(int32_t *seed) {
- int32_t k;
- int32_t s = (int32_t)(*seed);
- if (s == 0)
- s = 0x12345987;
- k = s / 127773;
- s = 16807 * (s - k * 127773) - 2836 * k;
- if (s < 0)
- s += 2147483647;
- (*seed) = (int32_t)s;
- return (int32_t)(s & RANDOM_MAX);
-}
-
-
-void CPPlayer::process_new_note(int p_track,uint8_t p_note) { // if there's really a new note....
-
- if (control.channel[p_track].real_note!=255) {
- control.channel[p_track].old_note=control.channel[p_track].real_note;
-
- }
-
- control.channel[p_track].real_note=p_note;
-
- control.channel[p_track].kick=KICK_NOTE;
-
- control.channel[p_track].sample_start_index=-1;
- control.channel[p_track].sliding=0;
- control.channel[p_track].row_has_note=true;
- control.channel[p_track].last_event_usecs=song_usecs;
-
- if (control.channel[p_track].panbrello_type) control.channel[p_track].panbrello_position=0;
-}
-
-bool CPPlayer::process_new_instrument(int p_track,uint8_t p_instrument) {
-
- //bool different_instrument=false;
- ERR_FAIL_INDEX_V(p_instrument,CPSong::MAX_INSTRUMENTS,false);
-
- if ( song->has_instruments() ) {
-
-
- control.channel[p_track].instrument_ptr=song->get_instrument(p_instrument);
- } else {
-
- control.channel[p_track].instrument_ptr=NULL;
- }
-
- control.channel[p_track].retrig_counter=0;
- control.channel[p_track].tremor_position=0;
- control.channel[p_track].sample_offset_fine=0;
- int old_instr_index=control.channel[p_track].instrument_index;
- control.channel[p_track].instrument_index=p_instrument;
-
- return (old_instr_index!=p_instrument);
-
-
-}
-
-
- // returns if it was able to process
-bool CPPlayer::process_note_and_instrument(int p_track,int p_note,int p_instrument) {
-
- bool aux_result;
- aux_result=false;
- CPSample *aux_sample=0; // current sample
- int dest_sample_index;
- bool new_instrument=false;
-
- control.channel[p_track].row_has_note=false; // wise man says.. "we dont have a note... until we really know we have a note".
- control.channel[p_track].new_instrument=false;
-
- if ( (p_note<0) && (p_instrument<0) ) return aux_result; // nothing to do here
- if ( (p_note==255) && (p_instrument==255) ) return aux_result;
-
- if ( (p_note>=0) && (p_note<120) ) {
-
- process_new_note(p_track,p_note);
-
- } else if (p_note==CPNote::CUT) {
-
- control.channel[p_track].aux_volume=0;
- control.channel[p_track].note_end_flags|=END_NOTE_OFF;
- control.channel[p_track].note_end_flags|=END_NOTE_KILL;
- return aux_result;
-
- } else if ((p_note==CPNote::OFF) && (song->has_instruments())) {
-
- if (control.channel[p_track].instrument_ptr!=NULL) {
-
- control.channel[p_track].note_end_flags|=END_NOTE_OFF;
-
- if (!control.channel[p_track].instrument_ptr->get_volume_envelope()->is_enabled() || control.channel[p_track].instrument_ptr->get_volume_envelope()->is_loop_enabled()) {
-
- control.channel[p_track].note_end_flags|=END_NOTE_FADE;
- }
- }
-
- return aux_result;
- } else return aux_result; // invalid note!
-
-
- if ( (p_instrument>=0) && (p_instrument<CPSong::MAX_INSTRUMENTS)) {
- new_instrument=process_new_instrument(p_track,p_instrument);
-
- if ( song->has_instruments() ) {
- // If we're in instrument mode...
- if ( control.channel[p_track].instrument_ptr->get_sample_number(control.channel[p_track].real_note) >= CPSong::MAX_SAMPLES) {
-
- control.channel[p_track].kick=KICK_NOTHING;
- return aux_result;
-
- } else {
- dest_sample_index=control.channel[p_track].instrument_ptr->get_sample_number(control.channel[p_track].real_note);
- control.channel[p_track].note=control.channel[p_track].instrument_ptr->get_note_number(control.channel[p_track].real_note);
- }
-
- } else {
- // If we're in sample mode...
- dest_sample_index=control.channel[p_track].instrument_index;
- control.channel[p_track].note=control.channel[p_track].real_note;
- }
-
- control.channel[p_track].sample_index=dest_sample_index;
- aux_sample=song->get_sample(dest_sample_index);
-
- if (!CPSampleManager::get_singleton()->check( aux_sample->get_sample_data() )) {
- /* INVALID SAMPLE */
- control.channel[p_track].kick=KICK_NOTHING;
- return aux_result;
-
- }
-
- aux_sample=song->get_sample(dest_sample_index);
- } else {
-
-
- if (!control.channel[p_track].sample_ptr)
- return aux_result;
-
- if (song->has_instruments()) {
-
- if (!control.channel[p_track].instrument_ptr)
- return aux_result;
-
- control.channel[p_track].note=control.channel[p_track].instrument_ptr->get_note_number(control.channel[p_track].real_note);
-
- } else {
-
- control.channel[p_track].note=control.channel[p_track].real_note;
-
- }
-
- aux_sample=control.channel[p_track].sample_ptr;
-
- }
-
-
-
- if (p_instrument>=CPSong::MAX_INSTRUMENTS && control.channel[p_track].sample_ptr!=aux_sample) {
-
- control.channel[p_track].new_instrument=(control.channel[p_track].period>0);
- }
-
- control.channel[p_track].sample_ptr=aux_sample;
-
- /* channel or instrument determined panning ? */
-
- control.channel[p_track].panning=control.channel[p_track].channel_panning;
-
- /* set filter,if any ? */
-
-
- if (aux_sample->is_pan_enabled()) {
-
- control.channel[p_track].panning=(int)aux_sample->get_pan()*255/64;
-
- } else if ( song->has_instruments() && (control.channel[p_track].instrument_ptr->is_pan_default_enabled()) ) {
-
- control.channel[p_track].panning=(int)control.channel[p_track].instrument_ptr->get_pan_default_amount()*255/64;
- }
-
-
- if (song->has_instruments()) {
-
-
- /* Pitch-Pan Separation */
- if ((control.channel[p_track].instrument_ptr->get_pan_pitch_separation()!=0) && (control.channel[p_track].channel_panning!=PAN_SURROUND)){
-
- control.channel[p_track].panning+=((control.channel[p_track].real_note-control.channel[p_track].instrument_ptr->get_pan_pitch_center())*control.channel[p_track].instrument_ptr->get_pan_pitch_separation())/8;
-
- if (control.channel[p_track].panning<PAN_LEFT) control.channel[p_track].panning=PAN_LEFT;
- if (control.channel[p_track].panning>PAN_RIGHT) control.channel[p_track].panning=PAN_RIGHT;
- }
-
- /* Random Volume Variation */
- if (control.channel[p_track].instrument_ptr->get_volume_random_variation()>0) {
-
- control.channel[p_track].random_volume_variation=100-(cp_random_generate(&control.random_seed) % control.channel[p_track].instrument_ptr->get_volume_random_variation());
-
- } else {
-
- control.channel[p_track].random_volume_variation=100;
- }
-
-
- /* Random Pan Variation */
- if ((control.channel[p_track].instrument_ptr->get_pan_random_variation()>0) && (control.channel[p_track].panning!=PAN_SURROUND)){
-
- int aux_pan_modifier;
-
- aux_pan_modifier=(cp_random_generate(&control.random_seed) % (control.channel[p_track].instrument_ptr->get_pan_random_variation() << 2));
- if ((cp_random_generate(&control.random_seed) % 2)==1) aux_pan_modifier=0-aux_pan_modifier; /* it's 5am, let me sleep :) */
-
- control.channel[p_track].panning+=aux_pan_modifier;
-
- if (control.channel[p_track].panning<PAN_LEFT) control.channel[p_track].panning=PAN_LEFT;
- if (control.channel[p_track].panning>PAN_RIGHT) control.channel[p_track].panning=PAN_RIGHT;
-
-
- }
-
- /*filter*/
-
- if (control.channel[p_track].instrument_ptr->filter_use_default_cutoff()) {
-
- control.channel[p_track].filter.it_cutoff=control.channel[p_track].instrument_ptr->get_filter_default_cutoff()*2;
-
- }
-
- if (control.channel[p_track].instrument_ptr->filter_use_default_resonance()) {
-
- control.channel[p_track].filter.it_reso=control.channel[p_track].instrument_ptr->get_filter_default_resonance()*2;
-
- }
-
- /*envelopes*/
-
-
- control.channel[p_track].volume_envelope_on=control.channel[p_track].instrument_ptr->get_volume_envelope()->is_enabled();
- control.channel[p_track].panning_envelope_on=control.channel[p_track].instrument_ptr->get_pan_envelope()->is_enabled();
- control.channel[p_track].pitch_envelope_on=control.channel[p_track].instrument_ptr->get_pitch_filter_envelope()->is_enabled();
- control.channel[p_track].NNA_type=control.channel[p_track].instrument_ptr->get_NNA_type();
- control.channel[p_track].duplicate_check_type=control.channel[p_track].instrument_ptr->get_DC_type();
- control.channel[p_track].duplicate_check_action=control.channel[p_track].instrument_ptr->get_DC_action();
-
-
- } else {
-
- control.channel[p_track].NNA_type=CPInstrument::NNA_NOTE_CUT;
- control.channel[p_track].duplicate_check_type=CPInstrument::DCT_DISABLED;
- control.channel[p_track].duplicate_check_action=CPInstrument::DCA_NOTE_CUT;
- }
-
-
- if (p_instrument<CPSong::MAX_INSTRUMENTS) { // instrument change
-
- control.channel[p_track].volume=control.channel[p_track].aux_volume=aux_sample->get_default_volume();
-
- }
-
-
- control.channel[p_track].slide_to_period=control.channel[p_track].aux_period=get_period((uint16_t)(control.channel[p_track].note)<<1,CPSampleManager::get_singleton()->get_c5_freq( (aux_sample->get_sample_data())));
-
- control.channel[p_track].note_end_flags=END_NOTE_NOTHING; /* clears flags */
-
- return true;
-}
-
-void CPPlayer::process_volume_column(int p_track,uint8_t p_volume) {
-
- control.channel[p_track].current_volume_command=CPNote::EMPTY;
- control.channel[p_track].current_volume_parameter=CPNote::EMPTY;
-
- if (p_volume<65) { // VOLUME
-
- control.channel[p_track].aux_volume=p_volume;
- } else if (p_volume<125) { // Volume Command
-
-
- control.channel[p_track].current_volume_command=(p_volume-65) / 10;
- control.channel[p_track].current_volume_parameter=(p_volume-65) % 10;
- } else if (p_volume<193) { // PAN
-
- control.channel[p_track].channel_panning=(p_volume-128)*PAN_RIGHT/64;
- control.channel[p_track].panning=control.channel[p_track].channel_panning;
-
- } else if (p_volume<213) { //More volume Commands
-
- control.channel[p_track].current_volume_command=((p_volume-193) / 10)+6;
- control.channel[p_track].current_volume_parameter=(p_volume-193) % 10;
- }
-}
-
-
-void CPPlayer::process_note(int p_track,CPNote p_note) {
-
- if ( p_note.note!=CPNote::SCRIPT ) {
-
- process_note_and_instrument(p_track,p_note.note,p_note.instrument);
- process_volume_column(p_track,p_note.volume);
- control.channel[p_track].current_command=p_note.command;
- control.channel[p_track].current_parameter=p_note.parameter;
-
- } else {
-
- CPNote n = song->get_pattern( control.position.current_pattern )->get_transformed_script_note( p_track, control.position.current_row );
- process_note( p_track, n );
-
- song->get_pattern( control.position.current_pattern )->scripted_clone( p_track, control.position.current_row );
- }
-}
diff --git a/modules/chibi/cp_player_data_utils.cpp b/modules/chibi/cp_player_data_utils.cpp
deleted file mode 100644
index b99dbfcb99..0000000000
--- a/modules/chibi/cp_player_data_utils.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-/*************************************************************************/
-/* cp_player_data_utils.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "cp_player_data.h"
-uint8_t CPPlayer::vibrato_table[32]={
- 0, 24, 49, 74, 97,120,141,161,180,197,212,224,235,244,250,253,
- 255,253,250,244,235,224,212,197,180,161,141,120, 97, 74, 49, 24
-};
-
-uint8_t CPPlayer::auto_vibrato_table[128]={
- 0, 1, 3, 4, 6, 7, 9,10,12,14,15,17,18,20,21,23,
- 24,25,27,28,30,31,32,34,35,36,38,39,40,41,42,44,
- 45,46,47,48,49,50,51,52,53,54,54,55,56,57,57,58,
- 59,59,60,60,61,61,62,62,62,63,63,63,63,63,63,63,
- 64,63,63,63,63,63,63,63,62,62,62,61,61,60,60,59,
- 59,58,57,57,56,55,54,54,53,52,51,50,49,48,47,46,
- 45,44,42,41,40,39,38,36,35,34,32,31,30,28,27,25,
- 24,23,21,20,18,17,15,14,12,10, 9, 7, 6, 4, 3, 1
-};
-
-
-int8_t CPPlayer::panbrello_table[256]={
- 0, 2, 3, 5, 6, 8, 9, 11, 12, 14, 16, 17, 19, 20, 22, 23,
- 24, 26, 27, 29, 30, 32, 33, 34, 36, 37, 38, 39, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 56, 57, 58, 59,
- 59, 60, 60, 61, 61, 62, 62, 62, 63, 63, 63, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 63, 63, 63, 62, 62, 62, 61, 61, 60, 60,
- 59, 59, 58, 57, 56, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46,
- 45, 44, 43, 42, 41, 39, 38, 37, 36, 34, 33, 32, 30, 29, 27, 26,
- 24, 23, 22, 20, 19, 17, 16, 14, 12, 11, 9, 8, 6, 5, 3, 2,
- 0,- 2,- 3,- 5,- 6,- 8,- 9,-11,-12,-14,-16,-17,-19,-20,-22,-23,
- -24,-26,-27,-29,-30,-32,-33,-34,-36,-37,-38,-39,-41,-42,-43,-44,
- -45,-46,-47,-48,-49,-50,-51,-52,-53,-54,-55,-56,-56,-57,-58,-59,
- -59,-60,-60,-61,-61,-62,-62,-62,-63,-63,-63,-64,-64,-64,-64,-64,
- -64,-64,-64,-64,-64,-64,-63,-63,-63,-62,-62,-62,-61,-61,-60,-60,
- -59,-59,-58,-57,-56,-56,-55,-54,-53,-52,-51,-50,-49,-48,-47,-46,
- -45,-44,-43,-42,-41,-39,-38,-37,-36,-34,-33,-32,-30,-29,-27,-26,
- -24,-23,-22,-20,-19,-17,-16,-14,-12,-11,- 9,- 8,- 6,- 5,- 3,- 2
-};
-
-
-
-
-
-
-int32_t CPPlayer::get_period(uint16_t p_note,int32_t p_c5speed) {
-
- if (song->has_linear_slides()) {
-
- return CPTables::get_linear_period(p_note,0);
- } else {
-
-
- return CPTables::get_log_period(p_note>>1,p_c5speed >>1);
- }
-}
-
-
-int32_t CPPlayer::get_frequency(int32_t period) {
-
- if (song->has_linear_slides()) {
-
- return CPTables::get_linear_frequency(period);
- } else {
-
- return CPTables::get_old_frequency(period);
- }
-}
-
-int CPPlayer::find_empty_voice() {
-
- int i;
- int min_priority,min_priority_chan=0,priority;
-
- for (i=0;i<control.max_voices;i++) {
-
- if ( ((voice[i].kick==KICK_NOTHING)||(voice[i].kick==KICK_ENVELOPE))&&!mixer->is_voice_active(i) ) {
-
- return i;
-
- }
- }
-
- // todo more
-
- for (i=0;i<control.max_voices;i++) {
- /* allow us to take over a nonexisting sample */
- /*
- if ((voice[i].s==NULL)
- return k;
- */
-
- if ((voice[i].kick==KICK_NOTHING)||(voice[i].kick==KICK_ENVELOPE)) {
-
- priority=voice[i].total_volume<<((CPSampleManager::get_singleton()->get_loop_type( voice[i].sample_ptr->get_sample_data())!=CP_LOOP_NONE)?1:0);
-
- if ((voice[i].has_master_channel)&&(&voice[i]==voice[i].master_channel->slave_voice)) {
-
- priority<<=2;
-
- }
-
- if ((i==0) || (priority<min_priority)) {
- min_priority=priority;
- min_priority_chan=i;
- }
- }
- }
-
- if (min_priority>8000*7) return -1; /* what the fuck is this? */
-
- return min_priority_chan;
-}
-
diff --git a/modules/chibi/cp_sample.cpp b/modules/chibi/cp_sample.cpp
deleted file mode 100644
index bea8835548..0000000000
--- a/modules/chibi/cp_sample.cpp
+++ /dev/null
@@ -1,203 +0,0 @@
-/*************************************************************************/
-/* cp_sample.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "cp_sample.h"
-
-const char * CPSample::get_name() const {
-
- return name;
-}
-void CPSample::set_name(const char *p_name) {
-
- if (p_name==NULL) {
- name[0]=0;
- return;
- }
-
-
- bool done=false;
- for (int i=0;i<NAME_MAX_LEN;i++) {
-
-
- name[i]=done?0:p_name[i];
- if (!done && p_name[i]==0)
- done=true;
- }
-
- name[NAME_MAX_LEN-1]=0; /* just in case */
-
-}
-
-void CPSample::set_default_volume(uint8_t p_vol) {
-
- default_volume=p_vol;
-}
-uint8_t CPSample::get_default_volume() const{
-
- return default_volume;
-}
-
-void CPSample::set_global_volume(uint8_t p_vol) {
-
- global_volume=p_vol;
-}
-uint8_t CPSample::get_global_volume() const{
-
- return global_volume;
-}
-
-void CPSample::set_pan_enabled(bool p_vol) {
-
- pan_enabled=p_vol;
-}
-bool CPSample::is_pan_enabled() const{
-
- return pan_enabled;
-}
-
-void CPSample::set_pan(uint8_t p_pan) {
-
- pan=p_pan;
-
-}
-uint8_t CPSample::get_pan() const{
-
- return pan;
-}
-
-
-void CPSample::set_vibrato_type(VibratoType p_vibrato_type) {
-
- vibrato_type=p_vibrato_type;
-}
-CPSample::VibratoType CPSample::get_vibrato_type() const{
-
- return vibrato_type;
-}
-
-void CPSample::set_vibrato_speed(uint8_t p_vibrato_speed) {
-
- vibrato_speed=p_vibrato_speed;
-}
-uint8_t CPSample::get_vibrato_speed() const {
-
- return vibrato_speed;
-}
-
-void CPSample::set_vibrato_depth(uint8_t p_vibrato_depth) {
-
- vibrato_depth=p_vibrato_depth;
-}
-uint8_t CPSample::get_vibrato_depth() const{
-
- return vibrato_depth;
-}
-
-void CPSample::set_vibrato_rate(uint8_t p_vibrato_rate) {
-
- vibrato_rate=p_vibrato_rate;
-}
-uint8_t CPSample::get_vibrato_rate() const{
-
- return vibrato_rate;
-}
-
-void CPSample::set_sample_data(CPSample_ID p_ID) {
-
- id=p_ID;
-}
-CPSample_ID CPSample::get_sample_data() const{
-
- return id;
-}
-
-void CPSample::operator=(const CPSample &p_sample) {
-
- copy_from(p_sample);
-}
-void CPSample::copy_from(const CPSample &p_sample) {
-
- reset();
- set_name(p_sample.get_name());
-
- default_volume=p_sample.default_volume;
- global_volume=p_sample.global_volume;
-
- pan_enabled=p_sample.pan_enabled;
- pan=p_sample.pan;
-
- vibrato_type=p_sample.vibrato_type;
- vibrato_speed=p_sample.vibrato_speed;
- vibrato_depth=p_sample.vibrato_depth;
- vibrato_rate=p_sample.vibrato_rate;
-
- if (CPSampleManager::get_singleton() && !p_sample.id.is_null())
- CPSampleManager::get_singleton()->copy_to( p_sample.id, id );
-}
-
-
-
-
-
-void CPSample::reset() {
-
-
- name[0]=0;
-
- default_volume=64;
- global_volume=64;
-
- pan_enabled=false;
- pan=32;
-
- vibrato_type=VIBRATO_SINE;
- vibrato_speed=0;
- vibrato_depth=0;
- vibrato_rate=0;
-
- if (!id.is_null() && CPSampleManager::get_singleton())
- CPSampleManager::get_singleton()->destroy( id );
-
- id=CPSample_ID();
-
-}
-
-CPSample::CPSample(const CPSample&p_from) {
-
- reset();
- copy_from(p_from);
-}
-CPSample::CPSample() {
-
- reset();
-}
-
-CPSample::~CPSample() {
-
- reset();
-}
diff --git a/modules/chibi/cp_sample.h b/modules/chibi/cp_sample.h
deleted file mode 100644
index c02b220c84..0000000000
--- a/modules/chibi/cp_sample.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*************************************************************************/
-/* cp_sample.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef CPSAMPLE_H
-#define CPSAMPLE_H
-
-
-#include "cp_config.h"
-#include "cp_sample_manager.h"
-class CPSample {
-
-public:
- enum VibratoType {
- VIBRATO_SINE,
- VIBRATO_SAW,
- VIBRATO_SQUARE,
- VIBRATO_RANDOM
-
- };
-
-private:
-
- enum { NAME_MAX_LEN=26 };
-
- char name[NAME_MAX_LEN];
-
- uint8_t default_volume; /* 0.. 64 */
- uint8_t global_volume; /* 0.. 64 */
-
- bool pan_enabled;
- uint8_t pan; /* 0.. 64 */
-
- VibratoType vibrato_type;
- uint8_t vibrato_speed; /* 0.. 64 */
- uint8_t vibrato_depth; /* 0.. 64 */
- uint8_t vibrato_rate; /* 0.. 64 */
-
- CPSample_ID id;
-
- void copy_from(const CPSample &p_sample);
-public:
-
-
- void operator=(const CPSample &p_sample);
-
- const char * get_name() const;
- void set_name(const char *p_name);
-
- void set_default_volume(uint8_t p_vol);
- uint8_t get_default_volume() const;
-
- void set_global_volume(uint8_t p_vol);
- uint8_t get_global_volume() const;
-
- void set_pan_enabled(bool p_vol);
- bool is_pan_enabled() const;
-
- void set_pan(uint8_t p_pan);
- uint8_t get_pan() const;
-
- void set_vibrato_type(VibratoType p_vibrato_type);
- VibratoType get_vibrato_type() const;
-
- void set_vibrato_speed(uint8_t p_vibrato_speed) ;
- uint8_t get_vibrato_speed() const;
-
- void set_vibrato_depth(uint8_t p_vibrato_depth);
- uint8_t get_vibrato_depth() const;
-
- void set_vibrato_rate(uint8_t p_vibrato_rate);
- uint8_t get_vibrato_rate() const;
-
- void set_sample_data(CPSample_ID);
- CPSample_ID get_sample_data() const;
-
- void reset();
-
- CPSample(const CPSample&p_from);
- CPSample();
- ~CPSample();
-
-};
-
-
-
-
-#endif
diff --git a/modules/chibi/cp_sample_defs.h b/modules/chibi/cp_sample_defs.h
deleted file mode 100644
index 5ae57aed82..0000000000
--- a/modules/chibi/cp_sample_defs.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*************************************************************************/
-/* cp_sample_defs.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef CP_SAMPLE_DEFS_H
-#define CP_SAMPLE_DEFS_H
-
-#include "cp_config.h"
-
-enum CPSample_Loop_Type {
-
- CP_LOOP_NONE,
- CP_LOOP_FORWARD,
- CP_LOOP_BIDI
-};
-
-//#define INVALID_SAMPLE_ID -1
-
-#define CP_MIXING_FRAC_BITS_MACRO 13
-#define CP_MIXING_FRAC_BITS_TEXT "13"
-// 1<<9 - 1
-#define CP_MIXING_FRAC_BITS_MASK_TEXT "8191"
-
-enum CPMixConstants {
- CP_MIXING_FRAC_BITS=CP_MIXING_FRAC_BITS_MACRO,
- CP_MIXING_FRAC_LENGTH=(1<<CP_MIXING_FRAC_BITS),
- CP_MIXING_FRAC_MASK=CP_MIXING_FRAC_LENGTH-1,
- CP_MIXING_VOL_FRAC_BITS=8,
- CP_MIXING_FREQ_FRAC_BITS=8
-};
-
-enum CPFilterConstants {
- CP_FILTER_SHIFT=16,
- CP_FILTER_LENGTH=(1<<CP_FILTER_SHIFT)
-};
-
-
-enum CPInterpolationType {
- CP_INTERPOLATION_RAW,
- CP_INTERPOLATION_LINEAR,
- CP_INTERPOLATION_CUBIC
-};
-
-enum CPPanConstants {
-
- CP_PAN_BITS=8, // 0 .. 256
- CP_PAN_LEFT=0,
- CP_PAN_RIGHT=((1<<CP_PAN_BITS)-1), // 255
- CP_PAN_CENTER=CP_PAN_RIGHT/2, // 128
- CP_PAN_SURROUND=512
-};
-
-enum CPMixerVolConstants {
- CP_VOL_MAX=512,
- CP_VOL_RAMP_BITS=9,
- CP_VOL_SHIFT=2
-
-
-};
-
-enum CPStereoCannels {
- CP_CHAN_LEFT,
- CP_CHAN_RIGHT
-};
-
-#define CP_FIRST_SAMPLE_DECLICK_THRESHOLD 1000
-#define CP_FIRST_SAMPLE_RAMP_LEN 32
-
-typedef signed char CPFrame8;
-typedef signed short CPFrame16;
-
-
-#endif
diff --git a/modules/chibi/cp_sample_manager.cpp b/modules/chibi/cp_sample_manager.cpp
deleted file mode 100644
index 2ad0a720b4..0000000000
--- a/modules/chibi/cp_sample_manager.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/*************************************************************************/
-/* cp_sample_manager.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "cp_sample_manager.h"
-
-
-CPSampleManager * CPSampleManager::singleton=NULL;
-
-
-void CPSampleManager::copy_to(CPSample_ID p_from,CPSample_ID &p_to) {
-
- ERR_FAIL_COND(!check( p_from ));
-
-
- if (p_to.is_null()) {
-
- p_to=create( is_16bits( p_from), is_stereo( p_from), get_size(p_from));
- } else {
-
- recreate( p_to, is_16bits( p_from), is_stereo( p_from), get_size(p_from));
-
- }
-
- int len=get_size( p_from );
- int ch=is_stereo( p_from ) ? 2 : 1;
-
- for (int c=0;c<ch;c++) {
-
- for (int i=0;i<len;i++) {
-
- int16_t s=get_data( p_from, i, c );
- set_data( p_to, i, s, c );
- }
- }
-
- set_loop_type( p_to, get_loop_type( p_from ) );
- set_loop_begin( p_to, get_loop_begin( p_from ) );
- set_loop_end( p_to, get_loop_end( p_from ) );
- set_c5_freq( p_to, get_c5_freq( p_from ) );
-
-
-
-}
-
-CPSampleManager::CPSampleManager() {
-
- singleton=this;
-}
-
-CPSampleManager *CPSampleManager::get_singleton() {
-
- return singleton;
-}
diff --git a/modules/chibi/cp_sample_manager.h b/modules/chibi/cp_sample_manager.h
deleted file mode 100644
index b6d47a3013..0000000000
--- a/modules/chibi/cp_sample_manager.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*************************************************************************/
-/* cp_sample_manager.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef CP_SAMPLE_MANAGER_H
-#define CP_SAMPLE_MANAGER_H
-
-#include "cp_config.h"
-#include "cp_sample_defs.h"
-
-
-
-/**
-@author Juan Linietsky
-*/
-
-
-/* abstract base CPSample_ID class */
-
-struct CPSample_ID {
-
- void *_private;
-
- bool operator==(const CPSample_ID&p_other) const { return _private==p_other._private; }
- bool operator!=(const CPSample_ID&p_other) const { return _private!=p_other._private; }
- bool is_null() const { return _private==0; }
- CPSample_ID(void *p_private=0) { _private=p_private; };
-};
-
-
-class CPSampleManager {
-
- static CPSampleManager * singleton;
-
-public:
-
- /* get the singleton instance */
- static CPSampleManager *get_singleton();
-
- virtual void copy_to(CPSample_ID p_from,CPSample_ID &p_to); ///< if p_to is null, it gets created
-
- virtual CPSample_ID create(bool p_16bits,bool p_stereo,int32_t p_len)=0;
- virtual void recreate(CPSample_ID p_id,bool p_16bits,bool p_stereo,int32_t p_len)=0;
- virtual void destroy(CPSample_ID p_id)=0;
- virtual bool check(CPSample_ID p_id)=0; // return false if invalid
-
- virtual void set_c5_freq(CPSample_ID p_id,int32_t p_freq)=0;
- virtual void set_loop_begin(CPSample_ID p_id,int32_t p_begin)=0;
- virtual void set_loop_end(CPSample_ID p_id,int32_t p_end)=0;
- virtual void set_loop_type(CPSample_ID p_id,CPSample_Loop_Type p_type)=0;
- virtual void set_chunk(CPSample_ID p_id,int32_t p_index,void *p_data,int p_data_len)=0;
-
-
- virtual int32_t get_loop_begin(CPSample_ID p_id)=0;
- virtual int32_t get_loop_end(CPSample_ID p_id)=0;
- virtual CPSample_Loop_Type get_loop_type(CPSample_ID p_id)=0;
- virtual int32_t get_c5_freq(CPSample_ID p_id)=0;
- virtual int32_t get_size(CPSample_ID p_id)=0;
- virtual bool is_16bits(CPSample_ID p_id)=0;
- virtual bool is_stereo(CPSample_ID p_id)=0;
- virtual bool lock_data(CPSample_ID p_id)=0;
- virtual void *get_data(CPSample_ID p_id)=0; /* WARNING: Not all sample managers
-may be able to implement this, it depends on the mixer in use! */
- virtual int16_t get_data(CPSample_ID p_id, int p_sample, int p_channel=0)=0; /// Does not need locking
- virtual void set_data(CPSample_ID p_id, int p_sample, int16_t p_data,int p_channel=0)=0; /// Does not need locking
- virtual void unlock_data(CPSample_ID p_id)=0;
-
- virtual void get_chunk(CPSample_ID p_id,int32_t p_index,void *p_data,int p_data_len)=0;
-
- CPSampleManager();
- virtual ~CPSampleManager(){}
-
-};
-
-#endif
diff --git a/modules/chibi/cp_song.cpp b/modules/chibi/cp_song.cpp
deleted file mode 100644
index 197e44f69d..0000000000
--- a/modules/chibi/cp_song.cpp
+++ /dev/null
@@ -1,957 +0,0 @@
-/*************************************************************************/
-/* cp_song.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "cp_song.h"
-
-void CPSong::set_name(const char *p_name) {
-
- if (p_name==NULL) {
- variables.name[0]=0;
- return;
- }
-
-
- bool done=false;
- for (int i=0;i<MAX_SONG_NAME;i++) {
-
-
- variables.name[i]=done?0:p_name[i];
- if (!done && p_name[i]==0)
- done=true;
- }
-
- variables.name[MAX_SONG_NAME-1]=0; /* just in case */
-}
-
-const char * CPSong::get_name() {
-
- return variables.name;
-
-}
-
-void CPSong::set_message(const char *p_message) {
-
- if (p_message==NULL) {
- variables.message[0]=0;
- return;
- }
-
- bool done=false;
- for (int i=0;i<MAX_MESSAGE_LEN;i++) {
-
-
- variables.message[i]=done?0:p_message[i];
- if (!done && p_message[i]==0)
- done=true;
- }
-
- variables.message[MAX_MESSAGE_LEN-1]=0; /* just in case */
-}
-
-const char * CPSong::get_message() {
-
- return variables.message;
-
-}
-
-void CPSong::set_row_highlight_minor(int p_hl_minor) {
-
- variables.row_highlight_minor=p_hl_minor;
-}
-int CPSong::get_row_highlight_minor() {
-
- return variables.row_highlight_minor;
-}
-
-void CPSong::set_row_highlight_major(int p_hl_major) {
-
- variables.row_highlight_major=p_hl_major;
-
-
-} /* 0 .. 256 */
-int CPSong::get_row_highlight_major() {
-
- return variables.row_highlight_major;
-
-
-} /* 0 .. 256 */
-
-void CPSong::set_mixing_volume(int p_mix_volume) {
-
-
- variables.mixing_volume=p_mix_volume;
-} /* 0 .. 128 */
-int CPSong::get_mixing_volume() {
-
- return variables.mixing_volume;
-
-} /* 0 .. 128 */
-
-void CPSong::set_global_volume(int p_global_volume) {
-
-
- initial_variables.global_volume=p_global_volume;
-
-} /* 0 .. 128 */
-int CPSong::get_global_volume() {
-
- return initial_variables.global_volume;
-
-} /* 0 .. 128 */
-
-void CPSong::set_stereo_separation(int p_separation) {
-
- variables.stereo_separation=p_separation;
-
-} /* 0 .. 128 */
-int CPSong::get_stereo_separation() {
-
- return variables.stereo_separation;
-} /* 0 .. 128 */
-
-void CPSong::set_stereo(bool p_stereo) {
-
- variables.use_stereo=p_stereo;
-
-}
-bool CPSong::is_stereo() {
-
- return variables.use_stereo;
-}
-
-void CPSong::set_instruments(bool p_instruments) {
-
- variables.use_instruments=p_instruments;
-
-
-}
-bool CPSong::has_instruments() {
-
-
- return variables.use_instruments;
-
-}
-
-void CPSong::set_linear_slides(bool p_linear_slides) {
-
- variables.use_linear_slides=p_linear_slides;
-
-
-}
-bool CPSong::has_linear_slides() {
-
- return variables.use_linear_slides;
-
-
-}
-
-void CPSong::set_old_effects(bool p_old_effects) {
-
- variables.old_effects=p_old_effects;
-
-
-}
-bool CPSong::has_old_effects() {
-
- return variables.old_effects;
-}
-
-void CPSong::set_compatible_gxx(bool p_compatible_gxx) {
-
-
- variables.compatible_gxx=p_compatible_gxx;
-}
-bool CPSong::has_compatible_gxx() {
-
- return variables.compatible_gxx;
-
-}
-
-void CPSong::set_speed(int p_speed) {
-
- CP_ERR_COND(p_speed<MIN_SPEED);
- CP_ERR_COND(p_speed>MAX_SPEED);
-
- initial_variables.speed=p_speed;
-
-} /* 1 .. 255 */
-int CPSong::get_speed() {
-
- return initial_variables.speed;
-
-} /* 1 .. 255 */
-
-void CPSong::set_tempo(int p_tempo) {
-
- CP_ERR_COND( p_tempo<MIN_TEMPO );
- CP_ERR_COND( p_tempo>MAX_TEMPO );
-
- initial_variables.tempo=p_tempo;
-
-} /* MIN_TEMPO .. MAX_TEMPO */
-int CPSong::get_tempo() {
-
- return initial_variables.tempo;
-
-
-} /* MIN_TEMPO .. MAX_TEMPO */
-
-void CPSong::set_channel_pan(int p_channel,int p_pan) {
-
- CP_FAIL_INDEX(p_channel,CPPattern::WIDTH);
- CP_FAIL_INDEX(p_pan,CHANNEL_MAX_PAN+1);
-
- initial_variables.channel[p_channel].pan=p_pan;
-
-} /* 0 .. CHANNEL_MAX_PAN */
-int CPSong::get_channel_pan(int p_channel) {
-
- CP_FAIL_INDEX_V(p_channel,CPPattern::WIDTH,-1);
-
- return initial_variables.channel[p_channel].pan;
-}
-
-void CPSong::set_channel_volume(int p_channel,int p_volume) {
-
- CP_FAIL_INDEX(p_channel,CPPattern::WIDTH);
- CP_FAIL_INDEX(p_volume,CHANNEL_MAX_VOLUME+1);
-
-
- initial_variables.channel[p_channel].volume=p_volume;
-
-
-} /* 0 .. CHANNEL_MAX_VOLUME */
-
-
-int CPSong::get_channel_volume(int p_channel) {
-
- CP_FAIL_INDEX_V(p_channel,CPPattern::WIDTH,-1);
-
- return initial_variables.channel[p_channel].volume;
-
-}
-
-void CPSong::set_channel_chorus(int p_channel,int p_chorus) {
-
- CP_FAIL_INDEX(p_channel,CPPattern::WIDTH);
- CP_FAIL_INDEX(p_chorus,CHANNEL_MAX_CHORUS+1);
-
-
- initial_variables.channel[p_channel].chorus=p_chorus;
-
-
-} /* 0 .. CHANNEL_MAX_CHORUS */
-
-
-int CPSong::get_channel_chorus(int p_channel) {
-
- CP_FAIL_INDEX_V(p_channel,CPPattern::WIDTH,-1);
-
- return initial_variables.channel[p_channel].chorus;
-
-}
-
-void CPSong::set_channel_reverb(int p_channel,int p_reverb) {
-
- CP_FAIL_INDEX(p_channel,CPPattern::WIDTH);
- CP_FAIL_INDEX(p_reverb,CHANNEL_MAX_REVERB+1);
-
-
- initial_variables.channel[p_channel].reverb=p_reverb;
-
-
-} /* 0 .. CHANNEL_MAX_CHORUS */
-
-
-int CPSong::get_channel_reverb(int p_channel) {
-
- CP_FAIL_INDEX_V(p_channel,CPPattern::WIDTH,-1);
-
- return initial_variables.channel[p_channel].reverb;
-
-}
-
-void CPSong::set_channel_surround(int p_channel,bool p_surround) {
-
- CP_FAIL_INDEX(p_channel,CPPattern::WIDTH);
- initial_variables.channel[p_channel].surround=p_surround;
-
-}
-bool CPSong::is_channel_surround(int p_channel) {
-
- CP_FAIL_INDEX_V(p_channel,CPPattern::WIDTH,false);
-
- return initial_variables.channel[p_channel].surround;
-
-
-}
-
-void CPSong::set_channel_mute(int p_channel,bool p_mute) {
-
- CP_FAIL_INDEX(p_channel,CPPattern::WIDTH);
-
- initial_variables.channel[p_channel].mute=p_mute;
-
-}
-bool CPSong::is_channel_mute(int p_channel) {
-
- CP_FAIL_INDEX_V(p_channel,CPPattern::WIDTH,false);
-
- return initial_variables.channel[p_channel].mute;
-
-}
-
-/* arrays of stuff */
-
-CPPattern* CPSong::get_pattern(int p_pattern) {
-
- CP_FAIL_INDEX_V(p_pattern,MAX_PATTERNS, NULL);
-
- return &pattern[p_pattern];
-
-}
-CPSample* CPSong::get_sample(int p_sample) {
-
- CP_FAIL_INDEX_V(p_sample,MAX_SAMPLES,NULL);
-
- return &sample[p_sample];
-
-
-}
-CPInstrument* CPSong::get_instrument(int p_instrument) {
-
-
- CP_FAIL_INDEX_V(p_instrument,MAX_INSTRUMENTS,NULL);
-
- return &instrument[p_instrument];
-
-}
-
-int CPSong::get_order(int p_order) {
-
- CP_FAIL_INDEX_V(p_order,MAX_ORDERS,CP_ORDER_NONE);
-
-
- return order[p_order];
-
-}
-void CPSong::set_order(int p_order,int p_pattern) {
-
- CP_FAIL_INDEX(p_order,MAX_ORDERS);
-
- order[p_order]=p_pattern;
-
-}
-
-
-void CPSong::clear_instrument_with_samples(int p_instrument) {
-
- CPInstrument *ins = get_instrument( p_instrument );
- if (!ins)
- return;
-
- for (int i=0;i<CPNote::NOTES;i++) {
-
- CPSample *s=get_sample( ins->get_sample_number( i ) );
-
- if (!s)
- continue;
-
- if (s->get_sample_data().is_null())
- continue;
-
- s->reset();
- }
- ins->reset();
-}
-
-void CPSong::make_instrument_from_sample(int p_sample) {
-
- if (!has_instruments())
- return;
- CP_ERR_COND(!get_sample( p_sample ));
-
- for (int i=0;i<MAX_INSTRUMENTS;i++) {
-
-
- CPInstrument *ins=get_instrument(i);
-
- bool empty_slot=true;
- for (int n=0;n<CPNote::NOTES;n++) {
-
- if (ins->get_sample_number(n)<MAX_SAMPLES) {
-
- empty_slot=false;
- break;
- }
- }
-
- if (!empty_slot)
- continue;
-
- for (int n=0;n<CPNote::NOTES;n++) {
-
- ins->set_sample_number(n,p_sample);
- ins->set_note_number(n,n);
- }
-
- ins->set_name( get_sample( p_sample )->get_name() );
- break;
- }
-
-}
-
-void CPSong::make_instruments_from_samples() {
-
- for (int i=0;i<MAX_SAMPLES;i++) {
-
- CPInstrument *ins=get_instrument( i );
-
- if (!ins)
- continue;
-
- ins->reset();
-
- CPSample *s=get_sample( i );
-
- if (!s)
- continue;
-
- ins->set_name( s->get_name() );
-
- if (s->get_sample_data().is_null())
- continue;
-
-
-
-
- for(int j=0;j<CPNote::NOTES;j++)
- ins->set_sample_number( j, i );
-
-
-
- }
-}
-
-void CPSong::reset(bool p_clear_patterns,bool p_clear_samples,bool p_clear_instruments,bool p_clear_variables) {
-
- if (p_clear_variables) {
- variables.name[0]=0;
- variables.message[0]=0;
- variables.row_highlight_major=16;
- variables.row_highlight_minor=4;
- variables.mixing_volume=48;
- variables.old_effects=false;
- if (p_clear_instruments) //should not be cleared, if not clearing instruments!!
- variables.use_instruments=false;
- variables.stereo_separation=128;
- variables.use_linear_slides=true;
- variables.use_stereo=true;
-
- initial_variables.global_volume=128;
- initial_variables.speed=6;
- initial_variables.tempo=125;
-
- for (int i=0;i<CPPattern::WIDTH;i++) {
-
- initial_variables.channel[i].pan=32;
- initial_variables.channel[i].volume=CHANNEL_MAX_VOLUME;
- initial_variables.channel[i].mute=false;
- initial_variables.channel[i].surround=false;
- initial_variables.channel[i].chorus=0;
- initial_variables.channel[i].reverb=0;
-
- }
-
- effects.chorus.delay_ms=6;
- effects.chorus.separation_ms=3;
- effects.chorus.depth_ms10=6,
- effects.chorus.speed_hz10=5;
- effects.reverb_mode=REVERB_MODE_ROOM;
- }
-
- if (p_clear_samples) {
- for (int i=0;i<MAX_SAMPLES;i++)
- get_sample(i)->reset();
- }
-
- if (p_clear_instruments) {
- for (int i=0;i<MAX_INSTRUMENTS;i++)
- get_instrument(i)->reset();
- }
-
- if (p_clear_patterns) {
- for (int i=0;i<MAX_PATTERNS;i++)
- get_pattern(i)->clear();
-
- for (int i=0;i<MAX_ORDERS;i++)
- set_order( i, CP_ORDER_NONE );
- }
-
-
-}
-
-
-CPSong::ReverbMode CPSong::get_reverb_mode() {
-
- return effects.reverb_mode;
-}
-void CPSong::set_reverb_mode(ReverbMode p_mode) {
-
- effects.reverb_mode=p_mode;
-}
-
-void CPSong::set_chorus_delay_ms(int p_amount) {
-
- effects.chorus.delay_ms=p_amount;
-}
-void CPSong::set_chorus_separation_ms(int p_amount) {
-
- effects.chorus.separation_ms=p_amount;
-
-}
-void CPSong::set_chorus_depth_ms10(int p_amount) {
-
- effects.chorus.depth_ms10=p_amount;
-
-}
-void CPSong::set_chorus_speed_hz10(int p_amount) {
-
- effects.chorus.speed_hz10=p_amount;
-
-}
-
-int CPSong::get_chorus_delay_ms() {
-
- return effects.chorus.delay_ms;
-
-}
-int CPSong::get_chorus_separation_ms() {
-
- return effects.chorus.separation_ms;
-}
-int CPSong::get_chorus_depth_ms10() {
-
- return effects.chorus.depth_ms10;
-
-}
-int CPSong::get_chorus_speed_hz10() {
-
- return effects.chorus.speed_hz10;
-
-}
-
-void CPSong::cleanup_unused_patterns() {
-
- for (int i=0;i<MAX_PATTERNS;i++) {
-
- bool used=false;
- if (get_pattern(i)->is_empty())
- continue;
-
- for (int j=0;j<MAX_ORDERS;j++) {
-
- if (get_order(j)==i) {
- used=true;
-
- }
- }
-
- if (!used)
- get_pattern(i)->clear();
- }
-
-}
-void CPSong::cleanup_unused_instruments(){
-
- if (!has_instruments())
- return;
-
- bool instr_found[MAX_INSTRUMENTS];
- for (int i=0;i<MAX_INSTRUMENTS;i++)
- instr_found[i]=false;
-
- for (int i=0;i<MAX_PATTERNS;i++) {
-
- if (get_pattern(i)->is_empty())
- continue;
-
- for (int row=0;row<get_pattern(i)->get_length();row++) {
-
-
- for (int col=0;col<CPPattern::WIDTH;col++) {
-
- CPNote n;
- n=get_pattern(i)->get_note( col,row );
-
- if (n.instrument<MAX_INSTRUMENTS)
- instr_found[n.instrument]=true;
-
- }
-
- }
-
- }
-
- for (int i=0;i<MAX_INSTRUMENTS;i++)
- if (!instr_found[i])
- get_instrument(i)->reset();
-
-
-}
-void CPSong::cleanup_unused_samples(){
-
- if (!has_instruments())
- return;
-
- bool sample_found[MAX_SAMPLES];
- for (int i=0;i<MAX_INSTRUMENTS;i++)
- sample_found[i]=false;
-
- for (int i=0;i<MAX_PATTERNS;i++) {
-
- if (get_pattern(i)->is_empty())
- continue;
-
-
- for (int row=0;row<get_pattern(i)->get_length();row++) {
-
-
- for (int col=0;col<CPPattern::WIDTH;col++) {
-
- CPNote n;
- n=get_pattern(i)->get_note( col,row );
-
- if (n.instrument>=MAX_SAMPLES)
- continue;
-
- if (has_instruments()) {
-
- for (int nt=0;nt<CPNote::NOTES;nt++) {
-
- int smp=get_instrument(n.instrument)->get_sample_number(nt);
- if (smp<MAX_SAMPLES)
- sample_found[smp]=true;
- }
-
- } else {
- if (n.instrument<MAX_SAMPLES)
- sample_found[n.instrument]=true;
- }
-
- }
-
- }
-
- }
-
- for (int i=0;i<MAX_SAMPLES;i++)
- if (!sample_found[i])
- get_sample(i)->reset();
-
-}
-void CPSong::cleanup_unused_orders(){
-
- bool finito=false;
- for (int j=0;j<MAX_ORDERS;j++) {
-
-
- if (get_order(j)==CP_ORDER_NONE)
- finito=true;
- if (finito)
- set_order(j,CP_ORDER_NONE);
-
- }
-
-}
-
-void CPSong::clear_all_default_pan() {
-
- for (int i=0;i<MAX_INSTRUMENTS;i++)
- get_instrument(i)->set_pan_default_enabled( false ); //die!
-
- for (int i=0;i<MAX_SAMPLES;i++)
- get_sample(i)->set_pan_enabled( false ); //die!
-
-}
-
-
-void CPSong::clear_all_default_vol(){
-
- for (int i=0;i<MAX_SAMPLES;i++)
- get_sample(i)->set_default_volume( 64 ); //die!
- for (int i=0;i<MAX_INSTRUMENTS;i++)
- get_instrument(i)->set_volume_global_amount( CPInstrument::MAX_VOLUME );
-
-}
-
-
-int CPSong::get_order_in_use_count() {
-
-
- int order_count = 0;
-
- for (int i=(MAX_ORDERS-1);i>=0;i--) {
-
-
- if (get_order(i)!=CP_ORDER_NONE) {
- order_count=i+1;
- break;
- }
- }
-
- return order_count;
-}
-int CPSong::get_pattern_in_use_count() {
-
-
- int pattern_count=0;
-
- for (int i=(CPSong::MAX_PATTERNS-1);i>=0;i--) {
-
-
- if (!get_pattern(i)->is_empty()) {
- pattern_count=i+1;
- break;
- }
- }
-
- return pattern_count;
-}
-
-int CPSong::get_instrument_in_use_count() {
-
- int instrument_count=0;
-
- for (int i=(CPSong::MAX_INSTRUMENTS-1);i>=0;i--) {
-
- CPInstrument *ins = get_instrument(i);
- bool in_use=false;
-
- for (int s = 0 ; s < CPNote::NOTES ; s++ ) {
-
- int smp_idx = ins->get_sample_number(s);
- if (smp_idx<0 || smp_idx>=CPSong::MAX_SAMPLES)
- continue;
-
- if (!get_sample(smp_idx)->get_sample_data().is_null()) {
- in_use=true;
- break;
- }
-
- }
-
- if (in_use) {
- instrument_count=i+1;
- break;
- }
- }
-
- return instrument_count;
-}
-#include <stdio.h>
-int CPSong::get_channels_in_use() {
-
- int max=0;
-
- for (int p=0;p<CPSong::MAX_PATTERNS;p++) {
-
- CPPattern *pat = get_pattern(p);
- if (pat->is_empty())
- continue;
-
-
- for (int c=(CPPattern::WIDTH-1);c>=0;c--) {
-
- if (c<max)
- break;
-
- bool has_note=false;
- for (int r=0;r<pat->get_length();r++) {
-
- CPNote n = pat->get_note( c, r );
- if (!n.is_empty()) {
- has_note=true;
- break;
- }
- }
-
- if (has_note) {
-
- max=c+1;
- }
- }
- }
-
- return max;
-}
-
-
-void CPSong::separate_in_one_sample_instruments(int p_instrument) {
-
- CP_ERR_COND( !variables.use_instruments );
- CP_FAIL_INDEX( p_instrument, MAX_INSTRUMENTS );
-
- int remapped_count=0;
-
- signed char remap[MAX_SAMPLES];
-
- for (int i=0;i<MAX_SAMPLES;i++) {
-
- remap[i]=-1;
- }
-
- /* Find remaps */
- CPInstrument *ins=get_instrument(p_instrument);
- for (int i=0;i<CPNote::NOTES;i++) {
-
- int sn = ins->get_sample_number(i);
-
- // check for unusable sample
- if (sn<0 || sn>=MAX_SAMPLES || get_sample(sn)->get_sample_data().is_null())
- continue;
- printf("sample %i\n",sn);
- if ( remap[sn] !=-1 ) {
- printf("already mapped to %i\n",remap[sn]);
- continue;
- }
-
- printf("isn't remapped\n");
-
- // find remap
-
- for (int j=0;j<MAX_INSTRUMENTS;j++) {
-
- if (!get_instrument(j)->is_empty())
- continue;
-
- printf("map to %i\n",j);
-
- //copy
- *get_instrument(j)=*ins;
-
- // assign samples
- for (int k=0;k<CPNote::NOTES;k++) {
-
- get_instrument(j)->set_note_number(k,k);
- get_instrument(j)->set_sample_number(k,sn);
- }
- remap[sn]=j;
- remapped_count++;
- break;
- }
-
- CP_ERR_COND(remap[sn]==-1); // no more free instruments
- }
-
- printf("remapped %i\n",remapped_count);
-
- if (remapped_count<2) {
- //undo if only one is remapped
- for (int i=0;i<MAX_SAMPLES;i++) {
-
- if (remap[i]!=-1) {
-
- get_instrument(remap[i])->reset();
- }
- }
- return;
- }
-
- /* remap all song */
-
- for (int p=0;p<CPSong::MAX_PATTERNS;p++) {
-
- CPPattern *pat = get_pattern(p);
- if (pat->is_empty())
- continue;
-
-
- for (int c=0;c<CPPattern::WIDTH;c++) {
-
- for (int r=0;r<pat->get_length();r++) {
-
- CPNote n = pat->get_note(c,r);
- if (n.note<CPNote::NOTES && n.instrument==p_instrument) {
-
- int sn = ins->get_sample_number(n.note);
- if (remap[sn]==-1)
- pat->set_note(c,r,CPNote());
- else {
-
- n.instrument=remap[sn];
- pat->set_note(c,r,n);
- }
- }
- }
- }
- }
-
- ins->reset();
-
-}
-
-
-CPSong::CPSong() {
-
- reset();
-}
-CPSong::~CPSong() {
-
-}
-
-
-
-
-int get_song_next_order_idx(CPSong *p_song, int p_order_idx) {
-
- int baseorder,order_counter;
-
- order_counter=-1;
-
- baseorder=p_order_idx;
-
- do {
-
- baseorder++;
- if ( baseorder>(CPSong::MAX_ORDERS-1) ) baseorder=0;
- order_counter++;
-
- } while ( (p_song->get_order(baseorder)>=(CPSong::MAX_PATTERNS) ) && (order_counter<CPSong::MAX_ORDERS) );
-
-
- if (order_counter==CPSong::MAX_ORDERS) {
-
- return -1;
-
- } else {
-
- return baseorder;
- }
-
-}
diff --git a/modules/chibi/cp_song.h b/modules/chibi/cp_song.h
deleted file mode 100644
index ba0fa3e80a..0000000000
--- a/modules/chibi/cp_song.h
+++ /dev/null
@@ -1,261 +0,0 @@
-/*************************************************************************/
-/* cp_song.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef CPSONG_H
-#define CPSONG_H
-
-
-/**CPSong Class
- *@author Juan Linietsky
- */
-
-#include "cp_order.h"
-#include "cp_pattern.h"
-#include "cp_sample.h"
-#include "cp_instrument.h"
-
-class CPSong {
-public:
- enum {
- MAX_SONG_NAME=26,
- MAX_ORDERS=200,
- MAX_PATTERNS=200,
- MAX_SAMPLES=99,
- MAX_INSTRUMENTS=99,
-
- CHANNEL_MAX_PAN=64,
- CHANNEL_MAX_VOLUME=64,
- CHANNEL_MAX_CHORUS=64,
- CHANNEL_MAX_REVERB=64,
-
- MIN_TEMPO=31,
- MAX_TEMPO=255,
- MIN_SPEED=1,
- MAX_SPEED=255,
- MAX_MESSAGE_LEN=8000,
-
-
-
- };
-
- enum ReverbMode {
- REVERB_MODE_ROOM,
- REVERB_MODE_STUDIO_SMALL,
- REVERB_MODE_STUDIO_MEDIUM,
- REVERB_MODE_STUDIO_LARGE,
- REVERB_MODE_HALL,
- REVERB_MODE_SPACE_ECHO,
- REVERB_MODE_ECHO,
- REVERB_MODE_DELAY,
- REVERB_MODE_HALF_ECHO
- };
-
-private:
- CPOrder order[MAX_ORDERS];
- CPPattern pattern[MAX_PATTERNS];
- CPSample sample[MAX_SAMPLES];
- CPInstrument instrument[MAX_INSTRUMENTS];
-
-
-
- struct Song_Variables { // variables that wont change in playback
-
- char name[MAX_SONG_NAME];
- char message[MAX_MESSAGE_LEN];
- /* string message; */
-
- int row_highlight_minor;
- int row_highlight_major;
-
- int mixing_volume;
- int stereo_separation;
-
- bool use_stereo;
- bool use_instruments;
- bool use_linear_slides;
-
- bool old_effects;
- bool compatible_gxx;
-
- } variables;
-
- struct Initial_Variables { // Initial values used for playback
-
- struct Channel_State {
-
- int pan,volume; // 0-- CHANNEL_MAX_PAN, CHANNEL_MAX_VOLUME
- bool surround;
- bool mute;
- int chorus; //0 - 64
- int reverb; //0 - 64
- };
-
- int global_volume;
- int speed;
- int tempo;
-
- Channel_State channel[CPPattern::WIDTH];
- } initial_variables;
-
- struct Effects {
-
- ReverbMode reverb_mode;
-
- struct Chorus {
-
- int delay_ms;
- int separation_ms;
- int depth_ms10;
- int speed_hz10;
- } chorus;
-
- } effects;
-
-public:
-
- /* Properties */
-
- const char *get_name();
- void set_name(const char *p_name);
-
- const char *get_message();
- void set_message(const char *p_message);
-
- void set_row_highlight_minor(int p_hl_minor); /* 0 .. 256 */
- int get_row_highlight_minor(); /* 0 .. 256 */
-
- void set_row_highlight_major(int p_hl_major); /* 0 .. 256 */
- int get_row_highlight_major(); /* 0 .. 256 */
-
- void set_mixing_volume(int p_mix_volume); /* 0 .. 128 */
- int get_mixing_volume(); /* 0 .. 128 */
-
- void set_global_volume(int p_global_volume); /* 0 .. 128 */
- int get_global_volume(); /* 0 .. 128 */
-
- void set_stereo_separation(int p_separation); /* 0 .. 128 */
- int get_stereo_separation(); /* 0 .. 128 */
-
- void set_stereo(bool p_stereo);
- bool is_stereo();
-
- void set_instruments(bool p_instruments);
- bool has_instruments();
-
- void set_linear_slides(bool p_linear_slides);
- bool has_linear_slides();
-
- void set_old_effects(bool p_old_effects);
- bool has_old_effects();
-
- void set_compatible_gxx(bool p_compatible_gxx);
- bool has_compatible_gxx();
-
- void set_speed(int p_speed); /* 1 .. 255 */
- int get_speed(); /* 1 .. 255 */
-
- void set_tempo(int p_tempo); /* 31 .. 255 */
- int get_tempo(); /* 31 .. 255 */
-
- void set_channel_pan(int p_channel,int p_pan); /* 0 .. 64 */
- int get_channel_pan(int p_channel);
-
- void set_channel_volume(int p_channel,int p_volume); /* 0 .. 64 */
- int get_channel_volume(int p_channel);
-
- void set_channel_surround(int p_channel,bool p_surround);
- bool is_channel_surround(int p_channel);
-
- void set_channel_mute(int p_channel,bool p_mute);
- bool is_channel_mute(int p_channel);
-
- void set_channel_chorus(int p_channel,int p_chorus); /* 0 .. 64 */
- int get_channel_chorus(int p_channel);
-
- void set_channel_reverb(int p_channel,int p_reverb); /* 0 .. 64 */
- int get_channel_reverb(int p_channel);
-
- /* arrays of stuff */
-
- CPPattern* get_pattern(int p_pattern);
- CPSample* get_sample(int p_sample);
- CPInstrument* get_instrument(int p_instrument);
-
- int get_order(int p_position);
- void set_order(int p_position,int p_order);
-
-
- /* Effects */
-
- ReverbMode get_reverb_mode();
- void set_reverb_mode(ReverbMode p_mode);
-
- void set_chorus_delay_ms(int p_amount);
- void set_chorus_separation_ms(int p_amount);
- void set_chorus_depth_ms10(int p_amount);
- void set_chorus_speed_hz10(int p_amount);
-
- int get_chorus_delay_ms();
- int get_chorus_separation_ms();
- int get_chorus_depth_ms10();
- int get_chorus_speed_hz10();
-
- /* utils */
-
- void reset(bool p_clear_patterns=true,bool p_clear_samples=true,bool p_clear_instruments=true,bool p_clear_variables=true);
-
- void cleanup_unused_patterns();
- void cleanup_unused_instruments();
- void cleanup_unused_samples();
- void cleanup_unused_orders();
- void clear_all_default_pan();
- void clear_all_default_vol();
-
- void clear_instrument_with_samples(int p_instrument);
-
- void make_instruments_from_samples();
- void make_instrument_from_sample(int p_sample);
-
- void separate_in_one_sample_instruments(int p_instrument);
-
- int get_order_in_use_count();
- int get_pattern_in_use_count();
- int get_instrument_in_use_count();
- int get_channels_in_use();
-
- CPSong();
- ~CPSong();
-
-};
-
-
-/* Some helper for something used a lot */
-
-int get_song_next_order_idx(CPSong *p_song, int p_order_idx);
-
-#endif
diff --git a/modules/chibi/cp_tables.cpp b/modules/chibi/cp_tables.cpp
deleted file mode 100644
index a7ed34ff31..0000000000
--- a/modules/chibi/cp_tables.cpp
+++ /dev/null
@@ -1,254 +0,0 @@
-/*************************************************************************/
-/* cp_tables.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "cp_tables.h"
-
-int32_t CPTables::linear_period_to_freq_tab[768]={
-
- 535232,534749,534266,533784,533303,532822,532341,531861,
- 531381,530902,530423,529944,529466,528988,528511,528034,
- 527558,527082,526607,526131,525657,525183,524709,524236,
- 523763,523290,522818,522346,521875,521404,520934,520464,
- 519994,519525,519057,518588,518121,517653,517186,516720,
- 516253,515788,515322,514858,514393,513929,513465,513002,
- 512539,512077,511615,511154,510692,510232,509771,509312,
- 508852,508393,507934,507476,507018,506561,506104,505647,
- 505191,504735,504280,503825,503371,502917,502463,502010,
- 501557,501104,500652,500201,499749,499298,498848,498398,
- 497948,497499,497050,496602,496154,495706,495259,494812,
- 494366,493920,493474,493029,492585,492140,491696,491253,
- 490809,490367,489924,489482,489041,488600,488159,487718,
- 487278,486839,486400,485961,485522,485084,484647,484210,
- 483773,483336,482900,482465,482029,481595,481160,480726,
- 480292,479859,479426,478994,478562,478130,477699,477268,
- 476837,476407,475977,475548,475119,474690,474262,473834,
- 473407,472979,472553,472126,471701,471275,470850,470425,
- 470001,469577,469153,468730,468307,467884,467462,467041,
- 466619,466198,465778,465358,464938,464518,464099,463681,
- 463262,462844,462427,462010,461593,461177,460760,460345,
- 459930,459515,459100,458686,458272,457859,457446,457033,
- 456621,456209,455797,455386,454975,454565,454155,453745,
- 453336,452927,452518,452110,451702,451294,450887,450481,
- 450074,449668,449262,448857,448452,448048,447644,447240,
- 446836,446433,446030,445628,445226,444824,444423,444022,
- 443622,443221,442821,442422,442023,441624,441226,440828,
- 440430,440033,439636,439239,438843,438447,438051,437656,
- 437261,436867,436473,436079,435686,435293,434900,434508,
- 434116,433724,433333,432942,432551,432161,431771,431382,
- 430992,430604,430215,429827,429439,429052,428665,428278,
- 427892,427506,427120,426735,426350,425965,425581,425197,
- 424813,424430,424047,423665,423283,422901,422519,422138,
- 421757,421377,420997,420617,420237,419858,419479,419101,
- 418723,418345,417968,417591,417214,416838,416462,416086,
- 415711,415336,414961,414586,414212,413839,413465,413092,
- 412720,412347,411975,411604,411232,410862,410491,410121,
- 409751,409381,409012,408643,408274,407906,407538,407170,
- 406803,406436,406069,405703,405337,404971,404606,404241,
- 403876,403512,403148,402784,402421,402058,401695,401333,
- 400970,400609,400247,399886,399525,399165,398805,398445,
- 398086,397727,397368,397009,396651,396293,395936,395579,
- 395222,394865,394509,394153,393798,393442,393087,392733,
- 392378,392024,391671,391317,390964,390612,390259,389907,
- 389556,389204,388853,388502,388152,387802,387452,387102,
- 386753,386404,386056,385707,385359,385012,384664,384317,
- 383971,383624,383278,382932,382587,382242,381897,381552,
- 381208,380864,380521,380177,379834,379492,379149,378807,
- 378466,378124,377783,377442,377102,376762,376422,376082,
- 375743,375404,375065,374727,374389,374051,373714,373377,
- 373040,372703,372367,372031,371695,371360,371025,370690,
- 370356,370022,369688,369355,369021,368688,368356,368023,
- 367691,367360,367028,366697,366366,366036,365706,365376,
- 365046,364717,364388,364059,363731,363403,363075,362747,
- 362420,362093,361766,361440,361114,360788,360463,360137,
- 359813,359488,359164,358840,358516,358193,357869,357547,
- 357224,356902,356580,356258,355937,355616,355295,354974,
- 354654,354334,354014,353695,353376,353057,352739,352420,
- 352103,351785,351468,351150,350834,350517,350201,349885,
- 349569,349254,348939,348624,348310,347995,347682,347368,
- 347055,346741,346429,346116,345804,345492,345180,344869,
- 344558,344247,343936,343626,343316,343006,342697,342388,
- 342079,341770,341462,341154,340846,340539,340231,339924,
- 339618,339311,339005,338700,338394,338089,337784,337479,
- 337175,336870,336566,336263,335959,335656,335354,335051,
- 334749,334447,334145,333844,333542,333242,332941,332641,
- 332341,332041,331741,331442,331143,330844,330546,330247,
- 329950,329652,329355,329057,328761,328464,328168,327872,
- 327576,327280,326985,326690,326395,326101,325807,325513,
- 325219,324926,324633,324340,324047,323755,323463,323171,
- 322879,322588,322297,322006,321716,321426,321136,320846,
- 320557,320267,319978,319690,319401,319113,318825,318538,
- 318250,317963,317676,317390,317103,316817,316532,316246,
- 315961,315676,315391,315106,314822,314538,314254,313971,
- 313688,313405,313122,312839,312557,312275,311994,311712,
- 311431,311150,310869,310589,310309,310029,309749,309470,
- 309190,308911,308633,308354,308076,307798,307521,307243,
- 306966,306689,306412,306136,305860,305584,305308,305033,
- 304758,304483,304208,303934,303659,303385,303112,302838,
- 302565,302292,302019,301747,301475,301203,300931,300660,
- 300388,300117,299847,299576,299306,299036,298766,298497,
- 298227,297958,297689,297421,297153,296884,296617,296349,
- 296082,295815,295548,295281,295015,294749,294483,294217,
- 293952,293686,293421,293157,292892,292628,292364,292100,
- 291837,291574,291311,291048,290785,290523,290261,289999,
- 289737,289476,289215,288954,288693,288433,288173,287913,
- 287653,287393,287134,286875,286616,286358,286099,285841,
- 285583,285326,285068,284811,284554,284298,284041,283785,
- 283529,283273,283017,282762,282507,282252,281998,281743,
- 281489,281235,280981,280728,280475,280222,279969,279716,
- 279464,279212,278960,278708,278457,278206,277955,277704,
- 277453,277203,276953,276703,276453,276204,275955,275706,
- 275457,275209,274960,274712,274465,274217,273970,273722,
- 273476,273229,272982,272736,272490,272244,271999,271753,
- 271508,271263,271018,270774,270530,270286,270042,269798,
- 269555,269312,269069,268826,268583,268341,268099,267857
-};
-
-uint16_t CPTables::old_period_table[OCTAVE*2]={
-
- 0x6b00, 0x6800, 0x6500, 0x6220, 0x5f50, 0x5c80,
- 0x5a00, 0x5740, 0x54d0, 0x5260, 0x5010, 0x4dc0,
- 0x4b90, 0x4960, 0x4750, 0x4540, 0x4350, 0x4160,
- 0x3f90, 0x3dc0, 0x3c10, 0x3a40, 0x38b0, 0x3700
-};
-
-#define LOGFAC 2*16
-
-uint16_t CPTables::log_table[104]= {
- LOGFAC*907,LOGFAC*900,LOGFAC*894,LOGFAC*887,
- LOGFAC*881,LOGFAC*875,LOGFAC*868,LOGFAC*862,
- LOGFAC*856,LOGFAC*850,LOGFAC*844,LOGFAC*838,
- LOGFAC*832,LOGFAC*826,LOGFAC*820,LOGFAC*814,
- LOGFAC*808,LOGFAC*802,LOGFAC*796,LOGFAC*791,
- LOGFAC*785,LOGFAC*779,LOGFAC*774,LOGFAC*768,
- LOGFAC*762,LOGFAC*757,LOGFAC*752,LOGFAC*746,
- LOGFAC*741,LOGFAC*736,LOGFAC*730,LOGFAC*725,
- LOGFAC*720,LOGFAC*715,LOGFAC*709,LOGFAC*704,
- LOGFAC*699,LOGFAC*694,LOGFAC*689,LOGFAC*684,
- LOGFAC*678,LOGFAC*675,LOGFAC*670,LOGFAC*665,
- LOGFAC*660,LOGFAC*655,LOGFAC*651,LOGFAC*646,
- LOGFAC*640,LOGFAC*636,LOGFAC*632,LOGFAC*628,
- LOGFAC*623,LOGFAC*619,LOGFAC*614,LOGFAC*610,
- LOGFAC*604,LOGFAC*601,LOGFAC*597,LOGFAC*592,
- LOGFAC*588,LOGFAC*584,LOGFAC*580,LOGFAC*575,
- LOGFAC*570,LOGFAC*567,LOGFAC*563,LOGFAC*559,
- LOGFAC*555,LOGFAC*551,LOGFAC*547,LOGFAC*543,
- LOGFAC*538,LOGFAC*535,LOGFAC*532,LOGFAC*528,
- LOGFAC*524,LOGFAC*520,LOGFAC*516,LOGFAC*513,
- LOGFAC*508,LOGFAC*505,LOGFAC*502,LOGFAC*498,
- LOGFAC*494,LOGFAC*491,LOGFAC*487,LOGFAC*484,
- LOGFAC*480,LOGFAC*477,LOGFAC*474,LOGFAC*470,
- LOGFAC*467,LOGFAC*463,LOGFAC*460,LOGFAC*457,
- LOGFAC*453,LOGFAC*450,LOGFAC*447,LOGFAC*443,
- LOGFAC*440,LOGFAC*437,LOGFAC*434,LOGFAC*431
-};
-
-
-
-int32_t CPTables::get_linear_period(uint16_t note,int32_t fine) {
-
- int32_t t;
-
- t=(24L*OCTAVE-(int32_t)note)*32L-(fine>>1);
- return t;
-}
-
-static int s3m_period_table[12]={1712,1616,1524,1440,1356,1280,1208,1140,1076,1016,960,907};
-
-
-int32_t CPTables::get_log_period(uint16_t note,int32_t p_c5freq) {
-
- return (8363L * 16 * s3m_period_table[note%12] >> (note/12)) / p_c5freq;
-
-}
-
-/*
-int32_t CPTables::get_log_period(uint16_t note,int32_t p_c5freq)
-{
- uint16_t n,o;
- uint16_t p1,p2;
- int32_t i;
-
- n=note%(2*OCTAVE);
- o=note/(2*OCTAVE);
- i=(n<<2); // n*8 + fine/16
-
- if (i<0)
- i=0;
-
- if (i>102)
- i=102;
-
-
- p1=log_table[i];
- p2=log_table[i+1];
-
-
- return (Interpolate(fine>>4,0,15,p1,p2)>>o);
-
-} */
-
-int32_t CPTables::get_old_period(uint16_t note,int32_t speed) {
-
- uint16_t n,o,res;
-
-// if (!speed) {
-
- // return 4242; /* <- prevent divide overflow */
- // }
-
- n=note%(2*OCTAVE);
- o=note/(2*OCTAVE);
-
- res=((8363L*(int32_t)old_period_table[n])>>o)/((old_period_table[17]>>1)+(speed<<2)); /*/(128-speed)*/;
-
- return res;
-}
-
-int32_t CPTables::get_linear_frequency(int32_t period) {
-
- int32_t shift_value=(((int32_t)period/768)-2);
- if (shift_value>0) {
-
- return linear_period_to_freq_tab[period%768]>>shift_value;
- } else {
- shift_value=0-shift_value;
- return linear_period_to_freq_tab[period%768]<<shift_value;
- }
-}
-
-int32_t CPTables::get_old_frequency(int32_t period) {
-
- return (8363L*1712L)/(period?period:1);
-
-}
-
-CPTables::CPTables(){
-}
-CPTables::~CPTables(){
-}
diff --git a/modules/chibi/cp_tables.h b/modules/chibi/cp_tables.h
deleted file mode 100644
index 4baa1c6488..0000000000
--- a/modules/chibi/cp_tables.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*************************************************************************/
-/* cp_tables.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef CPTABLES_H
-#define CPTABLES_H
-
-#include "cp_config.h"
-
-/**conversion CPTables/functions
- *@author Juan Linietsky
- */
-
-/******************************
- CPTables.h
- --------
-
-CPTables methods for miscelaneous
-conversion utilities
-********************************/
-
-class CPTables {
-public:
-
- enum { OCTAVE=12 };
-
- static uint16_t old_period_table[OCTAVE*2];
- static uint16_t log_table[104];
- static int32_t linear_period_to_freq_tab[768];
-
- static int32_t get_old_period(uint16_t note,int32_t speed);
- static int32_t get_amiga_period(uint16_t note,int32_t fine);
- static int32_t get_linear_period(uint16_t note,int32_t fine);
- static int32_t get_linear_frequency(int32_t period);
- static int32_t get_old_frequency(int32_t period);
- static int32_t get_log_period(uint16_t note,int32_t p_c5freq);
-
- CPTables();
- ~CPTables();
-};
-
-#endif
diff --git a/modules/chibi/event_stream_chibi.cpp b/modules/chibi/event_stream_chibi.cpp
deleted file mode 100644
index ab34080525..0000000000
--- a/modules/chibi/event_stream_chibi.cpp
+++ /dev/null
@@ -1,872 +0,0 @@
-/*************************************************************************/
-/* event_stream_chibi.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "event_stream_chibi.h"
-#include "cp_loader_it.h"
-#include "cp_loader_xm.h"
-#include "cp_loader_s3m.h"
-#include "cp_loader_mod.h"
-
-static CPSampleManagerImpl *sample_manager;
-static ResourceFormatLoaderChibi *resource_loader;
-
-CPSample_ID CPSampleManagerImpl::create(bool p_16bits,bool p_stereo,int32_t p_len) {
-
- AudioServer::SampleFormat sf=p_16bits?AudioServer::SAMPLE_FORMAT_PCM16:AudioServer::SAMPLE_FORMAT_PCM8;
-
- SampleData *sd = memnew( SampleData );
- sd->rid = AudioServer::get_singleton()->sample_create(sf,p_stereo,p_len);
- sd->stereo=p_stereo;
- sd->len=p_len;
- sd->is16=p_16bits;
- sd->mixfreq=44100;
- sd->loop_begin=0;
- sd->loop_end=0;
- sd->loop_type=CP_LOOP_NONE;
- sd->locks=0;
-#ifdef DEBUG_ENABLED
- valid.insert(sd);
-#endif
- CPSample_ID sid;
- sid._private=sd;
- return sid;
-}
-
-void CPSampleManagerImpl::recreate(CPSample_ID p_id,bool p_16bits,bool p_stereo,int32_t p_len){
-
- AudioServer::SampleFormat sf=p_16bits?AudioServer::SAMPLE_FORMAT_PCM16:AudioServer::SAMPLE_FORMAT_PCM8;
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND(!valid.has(sd));
-#endif
- AudioServer::get_singleton()->free(sd->rid);
- sd->rid = AudioServer::get_singleton()->sample_create(sf,p_stereo,p_len);
- sd->stereo=p_stereo;
- sd->len=p_len;
- sd->is16=p_16bits;
- sd->mixfreq=44100;
- sd->loop_begin=0;
- sd->loop_end=0;
- sd->loop_type=CP_LOOP_NONE;
-}
-void CPSampleManagerImpl::destroy(CPSample_ID p_id){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND(!valid.has(sd));
- valid.erase(sd);
-#endif
- AudioServer::get_singleton()->free(sd->rid);
-
- memdelete(sd);
-}
-bool CPSampleManagerImpl::check(CPSample_ID p_id){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- return valid.has(sd);
-#else
- return _getsd(p_id)!=NULL;
-#endif
-}
-
-void CPSampleManagerImpl::set_c5_freq(CPSample_ID p_id,int32_t p_freq){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND(!valid.has(sd));
-#endif
- sd->mixfreq=p_freq;
- AudioServer::get_singleton()->sample_set_mix_rate(sd->rid,p_freq);
-
-}
-void CPSampleManagerImpl::set_loop_begin(CPSample_ID p_id,int32_t p_begin){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND(!valid.has(sd));
-#endif
- sd->loop_begin=p_begin;
- AudioServer::get_singleton()->sample_set_loop_begin(sd->rid,p_begin);
-
-}
-void CPSampleManagerImpl::set_loop_end(CPSample_ID p_id,int32_t p_end){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND(!valid.has(sd));
-#endif
- sd->loop_end=p_end;
- AudioServer::get_singleton()->sample_set_loop_end(sd->rid,p_end);
-
-}
-void CPSampleManagerImpl::set_loop_type(CPSample_ID p_id,CPSample_Loop_Type p_type){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND(!valid.has(sd));
-#endif
-
- sd->loop_type=p_type;
- AudioServer::get_singleton()->sample_set_loop_format(sd->rid,AudioServer::SampleLoopFormat(p_type));
-
-
-}
-void CPSampleManagerImpl::set_chunk(CPSample_ID p_id,int32_t p_index,void *p_data,int p_data_len){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND(!valid.has(sd));
-#endif
-
- ERR_FAIL();
-}
-
-
-int32_t CPSampleManagerImpl::get_loop_begin(CPSample_ID p_id){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND_V(!valid.has(sd),0);
-#endif
-
- return sd->loop_begin;
-
-}
-int32_t CPSampleManagerImpl::get_loop_end(CPSample_ID p_id){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND_V(!valid.has(sd),0);
-#endif
-
- return sd->loop_end;
-}
-CPSample_Loop_Type CPSampleManagerImpl::get_loop_type(CPSample_ID p_id){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND_V(!valid.has(sd),CP_LOOP_NONE);
-#endif
-
- return sd->loop_type;
-}
-int32_t CPSampleManagerImpl::get_c5_freq(CPSample_ID p_id){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND_V(!valid.has(sd),0);
-#endif
-
- return sd->mixfreq;
-}
-int32_t CPSampleManagerImpl::get_size(CPSample_ID p_id){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND_V(!valid.has(sd),0);
-#endif
-
- return sd->len;
-
-}
-bool CPSampleManagerImpl::is_16bits(CPSample_ID p_id){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND_V(!valid.has(sd),false);
-#endif
-
- return sd->is16;
-
-}
-bool CPSampleManagerImpl::is_stereo(CPSample_ID p_id){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND_V(!valid.has(sd),false);
-#endif
- return sd->stereo;
-
-
-}
-bool CPSampleManagerImpl::lock_data(CPSample_ID p_id){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND_V(!valid.has(sd),0);
-#endif
-
- sd->locks++;
- if (sd->locks==1) {
- sd->lock=AudioServer::get_singleton()->sample_get_data(sd->rid);
- sd->w=sd->lock.write();
- }
-
- return true;
-}
-void *CPSampleManagerImpl::get_data(CPSample_ID p_id){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND_V(!valid.has(sd),0);
-#endif
-
- ERR_FAIL_COND_V(sd->locks==0,0);
- return sd->w.ptr();
-}
-
-int16_t CPSampleManagerImpl::get_data(CPSample_ID p_id, int p_sample, int p_channel){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND_V(!valid.has(sd),0);
-#endif
-
- ERR_FAIL_V(0);
- lock_data(p_id);
-
- int sofs = sd->stereo ? 2:1;
- uint16_t v=0;
- if (sd->is16) {
- int16_t *p=(int16_t*)sd->w.ptr();
- v=p[p_sample*sofs+p_channel];
- } else {
- int8_t *p=(int8_t*)sd->w.ptr();
- v=p[p_sample*sofs+p_channel];
- }
-
- unlock_data(p_id);
-
- return v;
-}
-void CPSampleManagerImpl::set_data(CPSample_ID p_id, int p_sample, int16_t p_data,int p_channel){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND(!valid.has(sd));
-#endif
-
- ERR_FAIL();
- lock_data(p_id);
-
- int sofs = sd->stereo ? 2:1;
- if (sd->is16) {
- int16_t *p=(int16_t*)sd->w.ptr();
- p[p_sample*sofs+p_channel]=p_data;
- } else {
- int8_t *p=(int8_t*)sd->w.ptr();
- p[p_sample*sofs+p_channel]=p_data;
- }
-
- unlock_data(p_id);
-
-}
-void CPSampleManagerImpl::unlock_data(CPSample_ID p_id){
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND(!valid.has(sd));
-#endif
-
- ERR_FAIL_COND(sd->locks==0);
-
- sd->locks--;
- if (sd->locks==0) {
- sd->w=PoolVector<uint8_t>::Write();
- AudioServer::get_singleton()->sample_set_data(sd->rid,sd->lock);
- sd->lock=PoolVector<uint8_t>();
- }
-}
-
-void CPSampleManagerImpl::get_chunk(CPSample_ID p_id,int32_t p_index,void *p_data,int p_data_len) {
-
- SampleData *sd=_getsd(p_id);
-#ifdef DEBUG_ENABLED
- ERR_FAIL_COND(!valid.has(sd));
-#endif
-
- ERR_FAIL();
-}
-
-
-/** MIXER **/
-
-void CPMixerImpl::set_callback_interval(int p_interval_us) {
-
- callback_interval=p_interval_us;
-}
-
-void CPMixerImpl::set_callback(void (*p_callback)(void*),void *p_userdata) {
-
- callback=p_callback;
- userdata=p_userdata;
-}
-
-void CPMixerImpl::setup_voice(int p_voice_index,CPSample_ID p_sample_id,int32_t p_start_index) {
-
- Voice &v=voices[p_voice_index];
- if (v.channel!=AudioMixer::INVALID_CHANNEL) {
- mixer->channel_free(v.channel);
- }
- v.channel=mixer->channel_alloc(sample_manager->get_rid(p_sample_id));
- v.freq_mult = sample_manager->get_c5_freq(p_sample_id)/261.6255653006;
- v.sample = p_sample_id;
-}
-
-void CPMixerImpl::stop_voice(int p_voice_index) {
-
- Voice &v=voices[p_voice_index];
- if (v.channel==AudioMixer::INVALID_CHANNEL)
- return;
-
- mixer->channel_free(v.channel);
- v.channel=AudioMixer::INVALID_CHANNEL;
-
-}
-
-void CPMixerImpl::set_voice_frequency(int p_voice_index,int32_t p_freq) {
-
- Voice &v=voices[p_voice_index];
- ERR_FAIL_COND(v.channel==AudioMixer::INVALID_CHANNEL);
- float f = p_freq / 256.0;
- f*=pitch_scale;
- mixer->channel_set_mix_rate(v.channel,f * v.freq_mult );
-}
-
-void CPMixerImpl::set_voice_panning(int p_voice_index,int p_pan) {
-
- Voice &v=voices[p_voice_index];
- ERR_FAIL_COND(v.channel==AudioMixer::INVALID_CHANNEL);
- if (p_pan==CP_PAN_SURROUND)
- p_pan=CP_PAN_CENTER;
- float p = p_pan / 256.0;
- mixer->channel_set_pan(v.channel,p);
-
-}
-
-void CPMixerImpl::set_voice_volume(int p_voice_index,int p_vol) {
-
-
- Voice &v=voices[p_voice_index];
- ERR_FAIL_COND(v.channel==AudioMixer::INVALID_CHANNEL);
- float vol = p_vol/512.0;
- vol*=voice_scale;
- mixer->channel_set_volume(v.channel,vol);
- mixer->channel_set_reverb(v.channel,reverb_type,vol*v.reverb);
-}
-
-void CPMixerImpl::set_voice_filter(int p_voice_index,bool p_enabled,uint8_t p_cutoff, uint8_t p_resonance ){
-
- Voice &v=voices[p_voice_index];
- ERR_FAIL_COND(v.channel==AudioMixer::INVALID_CHANNEL);
-
-}
-
-void CPMixerImpl::set_voice_reverb_send(int p_voice_index,int p_reverb){
-
- Voice &v=voices[p_voice_index];
- ERR_FAIL_COND(v.channel==AudioMixer::INVALID_CHANNEL);
- v.reverb=p_reverb/255.0;
- //mixer->channel_set_reverb(v.channel,reverb_type,p_reverb/255.0);
-
-}
-
-void CPMixerImpl::set_voice_chorus_send(int p_voice_index,int p_chorus){
-
- Voice &v=voices[p_voice_index];
- ERR_FAIL_COND(v.channel==AudioMixer::INVALID_CHANNEL);
- mixer->channel_set_chorus(v.channel,p_chorus/255.0);
-
-}
-
-
-void CPMixerImpl::set_reverb_mode(ReverbMode p_mode){
-
- //Voice &v=voices[p_voice_index];
- //ERR_FAIL_COND(v.channel==AudioMixer::INVALID_CHANNEL);
- switch(p_mode) {
- case CPMixer::REVERB_MODE_STUDIO_SMALL: reverb_type=AudioMixer::REVERB_SMALL; break;
- case CPMixer::REVERB_MODE_STUDIO_MEDIUM: reverb_type=AudioMixer::REVERB_MEDIUM; break;
- case CPMixer::REVERB_MODE_STUDIO_LARGE: reverb_type=AudioMixer::REVERB_LARGE; break;
- case CPMixer::REVERB_MODE_HALL: reverb_type=AudioMixer::REVERB_HALL; break;
- default: reverb_type=AudioMixer::REVERB_SMALL; break;
- }
-
-}
-
-void CPMixerImpl::set_chorus_params(unsigned int p_delay_ms,unsigned int p_separation_ms,unsigned int p_depth_ms10,unsigned int p_speed_hz10){
-
- //Voice &v=voices[p_voice_index];
- //ERR_FAIL_COND(v.channel==AudioMixer::INVALID_CHANNEL);
-
-}
-
-
-
-/* Info retrieving */
-
-int32_t CPMixerImpl::get_voice_sample_pos_index(int p_voice_index) {
-
- Voice &v=voices[p_voice_index];
- ERR_FAIL_COND_V(v.channel==AudioMixer::INVALID_CHANNEL,0);
- return 0;
-
-}
-
-int CPMixerImpl::get_voice_panning(int p_voice_index) {
-
- Voice &v=voices[p_voice_index];
- ERR_FAIL_COND_V(!is_voice_active(p_voice_index),0);
- return mixer->channel_get_pan(v.channel)*CP_PAN_RIGHT;
-
-}
-
-int CPMixerImpl::get_voice_volume(int p_voice_index) {
-
- Voice &v=voices[p_voice_index];
- ERR_FAIL_COND_V(!is_voice_active(p_voice_index),0);
- return mixer->channel_get_volume(v.channel);
-
-
-}
-
-CPSample_ID CPMixerImpl::get_voice_sample_id(int p_voice_index) {
-
- Voice &v=voices[p_voice_index];
- ERR_FAIL_COND_V(v.channel==AudioMixer::INVALID_CHANNEL,CPSample_ID());
- return v.sample;
-
-
-}
-
-bool CPMixerImpl::is_voice_active(int p_voice_index){
-
- Voice &v=voices[p_voice_index];
- if (v.channel==AudioMixer::INVALID_CHANNEL)
- return false;
- if (!mixer->channel_is_valid(v.channel))
- v.channel=AudioMixer::INVALID_CHANNEL;
-
- return v.channel!=AudioMixer::INVALID_CHANNEL;
-}
-
-void CPMixerImpl::process_usecs(int p_usec,float p_volume,float p_pitch_scale,float p_tempo_scale) {
-
- ERR_FAIL_COND(callback_interval==0);
- //update this somewhere
- pitch_scale=p_pitch_scale;
- tempo_scale=p_tempo_scale;
- voice_scale = AudioServer::get_singleton()->get_event_voice_global_volume_scale()*p_volume;
- while(p_usec) {
-
- if (p_usec>=callback_timeout) {
-
- p_usec-=callback_timeout;
- callback_timeout=0;
- if (callback) {
- callback(userdata);
- }
- callback_timeout=callback_interval*(1.0/p_tempo_scale);
-
- } else {
-
- callback_timeout-=p_usec;
- p_usec=0;
- }
- }
-}
-
-
-CPMixerImpl::CPMixerImpl(AudioMixer *p_mixer) {
-
- callback_interval=1;
- callback_timeout=0;
- userdata=0;
- callback=0;
- tempo_scale=1.0;
- pitch_scale=1.0;
- mixer=p_mixer;
- voice_scale = AudioServer::get_singleton()->get_event_voice_global_volume_scale();
- reverb_type = AudioMixer::REVERB_SMALL;
-
-}
-
-/** FILE ACCESS WRAPPER **/
-
-
-CPFileAccessWrapperImpl::Error CPFileAccessWrapperImpl::open(const char *p_filename, int p_mode_flags) {
-
- ERR_FAIL_COND_V(p_mode_flags&WRITE,ERROR_WRITING_FILE);
- close();
- f = FileAccess::open(String::utf8(p_filename),p_mode_flags);
- if (!f)
- return ERROR_FILE_NOT_FOUND;
- return OK;
-}
-
-void CPFileAccessWrapperImpl::close(){
-
- if (f)
- memdelete(f);
- f=NULL;
-
-
-}
-
-void CPFileAccessWrapperImpl::seek(uint32_t p_position){
-
- f->seek(p_position);
-}
-void CPFileAccessWrapperImpl::seek_end(){
-
- f->seek_end();
-}
-uint32_t CPFileAccessWrapperImpl::get_pos(){
-
- return f->get_pos();
-}
-
-bool CPFileAccessWrapperImpl::eof_reached(){
-
- return f->eof_reached();
-}
-
-uint8_t CPFileAccessWrapperImpl::get_byte(){
-
- return f->get_8();
-}
-void CPFileAccessWrapperImpl::get_byte_array(uint8_t *p_dest,int p_elements){
-
- f->get_buffer(p_dest,p_elements);
-}
-void CPFileAccessWrapperImpl::get_word_array(uint16_t *p_dest,int p_elements){
-
- for(int i=0;i<p_elements;i++) {
- p_dest[i]=f->get_16();
- }
-
-}
-
-uint16_t CPFileAccessWrapperImpl::get_word(){
-
- return f->get_16();
-}
-uint32_t CPFileAccessWrapperImpl::get_dword(){
-
- return f->get_32();
-}
-
-void CPFileAccessWrapperImpl::set_endian_conversion(bool p_swap){
-
- f->set_endian_swap(p_swap);
-}
-bool CPFileAccessWrapperImpl::is_open(){
-
- return f!=NULL;
-}
-
-CPFileAccessWrapperImpl::Error CPFileAccessWrapperImpl::get_error(){
-
- return (f->get_error()!=::OK)?ERROR_READING_FILE:OK;
-}
-
-void CPFileAccessWrapperImpl::store_byte(uint8_t p_dest){
-
-}
-void CPFileAccessWrapperImpl::store_byte_array(const uint8_t *p_dest,int p_elements){
-
-}
-
-void CPFileAccessWrapperImpl::store_word(uint16_t p_dest){
-
-}
-void CPFileAccessWrapperImpl::store_dword(uint32_t p_dest){
-
-}
-
-////////////////////////////////////////////////
-
-
-Error EventStreamPlaybackChibi::_play() {
-
- last_order=0;
- loops=0;
- player->play_start_song();
- total_usec=0;
-
- return OK;
-}
-
-bool EventStreamPlaybackChibi::_update(AudioMixer* p_mixer, uint64_t p_usec){
-
- total_usec+=p_usec;
- mixer.process_usecs(p_usec,volume,pitch_scale,tempo_scale);
- int order=player->get_current_order();
- if (order<last_order) {
- if (!loop) {
- stop();
- } else {
- loops++;
- }
- }
- last_order=order;
- return false;
-}
-void EventStreamPlaybackChibi::_stop(){
-
- player->play_stop();
-}
-
-void EventStreamPlaybackChibi::set_paused(bool p_paused){
-
-}
-bool EventStreamPlaybackChibi::is_paused() const{
-
- return false;
-}
-void EventStreamPlaybackChibi::set_loop(bool p_loop){
-
- loop=p_loop;
-
-}
-bool EventStreamPlaybackChibi::is_loop_enabled() const{
-
- return loop;
-}
-
-int EventStreamPlaybackChibi::get_loop_count() const{
-
- //return player->is
- return loops;
-}
-
-float EventStreamPlaybackChibi::get_pos() const{
-
- return double(total_usec)/1000000.0;
-}
-void EventStreamPlaybackChibi::seek_pos(float p_time){
-
- WARN_PRINT("seek_pos unimplemented.");
-}
-
-void EventStreamPlaybackChibi::set_volume(float p_volume) {
-
- volume=p_volume;
-}
-
-float EventStreamPlaybackChibi::get_volume() const{
-
- return volume;
-}
-
-void EventStreamPlaybackChibi::set_pitch_scale(float p_pitch_scale) {
-
- pitch_scale=p_pitch_scale;
-}
-
-float EventStreamPlaybackChibi::get_pitch_scale() const{
-
- return pitch_scale;
-}
-
-void EventStreamPlaybackChibi::set_tempo_scale(float p_tempo_scale) {
-
- tempo_scale=p_tempo_scale;
-}
-
-float EventStreamPlaybackChibi::get_tempo_scale() const{
-
- return tempo_scale;
-}
-
-
-void EventStreamPlaybackChibi::set_channel_volume(int p_channel,float p_volume) {
-
-
- if (p_channel>=64)
- return;
- player->set_channel_global_volume(p_channel,p_volume*256);
-}
-
-
-
-float EventStreamPlaybackChibi::get_channel_volume(int p_channel) const{
-
- return player->get_channel_global_volume(p_channel)/256.0;
-
-}
-
-float EventStreamPlaybackChibi::get_last_note_time(int p_channel) const {
-
-
- double v = (player->get_channel_last_note_time_usec(p_channel))/1000000.0;
- if (v<0)
- v=-1;
- return v;
-}
-
-EventStreamPlaybackChibi::EventStreamPlaybackChibi(Ref<EventStreamChibi> p_stream) : mixer(_get_mixer()) {
-
- stream=p_stream;
- player = memnew( CPPlayer(&mixer,&p_stream->song) );
- loop=false;
- last_order=0;
- loops=0;
- volume=1.0;
- pitch_scale=1.0;
- tempo_scale=1.0;
-}
-EventStreamPlaybackChibi::~EventStreamPlaybackChibi(){
-
- player->play_stop();
- memdelete(player);
-}
-
-////////////////////////////////////////////////////
-
-Ref<EventStreamPlayback> EventStreamChibi::instance_playback() {
-
- return Ref<EventStreamPlayback>( memnew(EventStreamPlaybackChibi(Ref<EventStreamChibi>(this))) );
-}
-
-String EventStreamChibi::get_stream_name() const{
-
- return song.get_name();
-
-}
-
-
-
-float EventStreamChibi::get_length() const{
-
- return 1;
-}
-
-
-EventStreamChibi::EventStreamChibi() {
-
-
-}
-
-
-
-//////////////////////////////////////////////////////////////////
-
-
-
-
-RES ResourceFormatLoaderChibi::load(const String &p_path, const String& p_original_path, Error *r_error) {
-
- if (r_error)
- *r_error=ERR_FILE_CANT_OPEN;
- String el = p_path.get_extension().to_lower();
-
- CPFileAccessWrapperImpl f;
-
- if (el=="it") {
-
- Ref<EventStreamChibi> esc( memnew( EventStreamChibi ) );
- CPLoader_IT loader(&f);
- CPLoader::Error err = loader.load_song(p_path.utf8().get_data(),&esc->song,false);
- ERR_FAIL_COND_V(err!=CPLoader::FILE_OK,RES());
- if (r_error)
- *r_error=OK;
-
- return esc;
-
- } else if (el=="xm") {
-
- Ref<EventStreamChibi> esc( memnew( EventStreamChibi ) );
- CPLoader_XM loader(&f);
- CPLoader::Error err=loader.load_song(p_path.utf8().get_data(),&esc->song,false);
- ERR_FAIL_COND_V(err!=CPLoader::FILE_OK,RES());
- if (r_error)
- *r_error=OK;
- return esc;
-
- } else if (el=="s3m") {
-
- Ref<EventStreamChibi> esc( memnew( EventStreamChibi ) );
- CPLoader_S3M loader(&f);
- CPLoader::Error err=loader.load_song(p_path.utf8().get_data(),&esc->song,false);
- ERR_FAIL_COND_V(err!=CPLoader::FILE_OK,RES());
- if (r_error)
- *r_error=OK;
-
- return esc;
-
- } else if (el=="mod") {
-
- Ref<EventStreamChibi> esc( memnew( EventStreamChibi ) );
- CPLoader_MOD loader(&f);
- CPLoader::Error err=loader.load_song(p_path.utf8().get_data(),&esc->song,false);
- ERR_FAIL_COND_V(err!=CPLoader::FILE_OK,RES());
- if (r_error)
- *r_error=OK;
- return esc;
- }
-
- return RES();
-
-}
-
-void ResourceFormatLoaderChibi::get_recognized_extensions(List<String> *p_extensions) const {
-
- p_extensions->push_back("it");
- p_extensions->push_back("xm");
- p_extensions->push_back("s3m");
- p_extensions->push_back("mod");
-}
-bool ResourceFormatLoaderChibi::handles_type(const String& p_type) const {
-
- return (p_type=="EventStreamChibi" || p_type=="EventStream");
-}
-
-String ResourceFormatLoaderChibi::get_resource_type(const String &p_path) const {
- String el = p_path.get_extension().to_lower();
- if (el=="it" || el=="s3m" || el=="xm" || el=="mod")
- return "EventStreamChibi";
- return "";
-}
-
-/////////////////////////////////////////////////////////////////
-void initialize_chibi() {
-
- sample_manager = memnew( CPSampleManagerImpl );
- resource_loader = memnew( ResourceFormatLoaderChibi );
- ClassDB::register_class<EventStreamChibi>();
- ResourceLoader::add_resource_format_loader( resource_loader );
-}
-
-void finalize_chibi() {
-
- memdelete( sample_manager );
- memdelete( resource_loader );
-}
-
diff --git a/modules/chibi/event_stream_chibi.h b/modules/chibi/event_stream_chibi.h
deleted file mode 100644
index 0244ee0a95..0000000000
--- a/modules/chibi/event_stream_chibi.h
+++ /dev/null
@@ -1,314 +0,0 @@
-/*************************************************************************/
-/* event_stream_chibi.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef EVENT_STREAM_CHIBI_H
-#define EVENT_STREAM_CHIBI_H
-
-#include "scene/resources/event_stream.h"
-#include "cp_sample_manager.h"
-#include "cp_mixer.h"
-#include "cp_song.h"
-#include "cp_file_access_wrapper.h"
-#include "cp_player_data.h"
-#include "resource.h"
-#include "servers/audio_server.h"
-#include "os/file_access.h"
-#include "io/resource_loader.h"
-
-/** SAMPLE MANAGER **/
-
-class CPSampleManagerImpl : public CPSampleManager {
-
- struct SampleData {
-
- RID rid;
- bool stereo;
- bool is16;
- int len;
- int mixfreq;
- int loop_begin;
- int loop_end;
- int locks;
- PoolVector<uint8_t> lock;
- PoolVector<uint8_t>::Write w;
- CPSample_Loop_Type loop_type;
- };
-
-
- _FORCE_INLINE_ SampleData* _getsd(CPSample_ID p_id) {
-
- return ((SampleData*)p_id._private);
- }
- Set<SampleData*> valid;
-
-public:
-
- _FORCE_INLINE_ RID get_rid(CPSample_ID p_id) { return _getsd(p_id)->rid; }
- virtual CPSample_ID create(bool p_16bits,bool p_stereo,int32_t p_len);
- virtual void recreate(CPSample_ID p_id,bool p_16bits,bool p_stereo,int32_t p_len);
- virtual void destroy(CPSample_ID p_id);
- virtual bool check(CPSample_ID p_id); // return false if invalid
-
- virtual void set_c5_freq(CPSample_ID p_id,int32_t p_freq);
- virtual void set_loop_begin(CPSample_ID p_id,int32_t p_begin);
- virtual void set_loop_end(CPSample_ID p_id,int32_t p_end);
- virtual void set_loop_type(CPSample_ID p_id,CPSample_Loop_Type p_type);
- virtual void set_chunk(CPSample_ID p_id,int32_t p_index,void *p_data,int p_data_len);
-
-
- virtual int32_t get_loop_begin(CPSample_ID p_id);
- virtual int32_t get_loop_end(CPSample_ID p_id);
- virtual CPSample_Loop_Type get_loop_type(CPSample_ID p_id);
- virtual int32_t get_c5_freq(CPSample_ID p_id);
- virtual int32_t get_size(CPSample_ID p_id);
- virtual bool is_16bits(CPSample_ID p_id);
- virtual bool is_stereo(CPSample_ID p_id);
- virtual bool lock_data(CPSample_ID p_id);
- virtual void *get_data(CPSample_ID p_id); /* WARNING: Not all sample managers
-may be able to implement this, it depends on the mixer in use! */
- virtual int16_t get_data(CPSample_ID p_id, int p_sample, int p_channel=0); /// Does not need locking
- virtual void set_data(CPSample_ID p_id, int p_sample, int16_t p_data,int p_channel=0); /// Does not need locking
- virtual void unlock_data(CPSample_ID p_id);
-
- virtual void get_chunk(CPSample_ID p_id,int32_t p_index,void *p_data,int p_data_len);
-
-};
-
-
-/** MIXER **/
-
-class CPMixerImpl : public CPMixer {
-
- enum {
- MAX_VOICES=64
- };
-
- struct Voice {
-
- AudioMixer::ChannelID channel;
- CPSample_ID sample;
- float freq_mult;
- float reverb;
- Voice() { reverb=0.0; }
- };
-
- Voice voices[MAX_VOICES];
-
-
- int callback_interval;
- int callback_timeout;
- void (*callback)(void*);
- void *userdata;
- float voice_scale;
- float tempo_scale;
- float pitch_scale;
- AudioMixer::ReverbRoomType reverb_type;
- AudioMixer *mixer;
-public:
-
- void process_usecs(int p_usec,float p_volume,float p_pitch_scale,float p_tempo_scale);
-
- /* Callback */
-
- virtual void set_callback_interval(int p_interval_us); //in usecs, for tracker it's 2500000/tempo
- virtual void set_callback(void (*p_callback)(void*),void *p_userdata);
-
- /* Voice Control */
-
- virtual void setup_voice(int p_voice_index,CPSample_ID p_sample_id,int32_t p_start_index) ;
- virtual void stop_voice(int p_voice_index) ;
- virtual void set_voice_frequency(int p_voice_index,int32_t p_freq) ; //in freq*FREQUENCY_BITS
- virtual void set_voice_panning(int p_voice_index,int p_pan) ;
- virtual void set_voice_volume(int p_voice_index,int p_vol) ;
- virtual void set_voice_filter(int p_filter,bool p_enabled,uint8_t p_cutoff, uint8_t p_resonance );
- virtual void set_voice_reverb_send(int p_voice_index,int p_reverb);
- virtual void set_voice_chorus_send(int p_voice_index,int p_chorus); /* 0 - 255 */
-
- virtual void set_reverb_mode(ReverbMode p_mode);
- virtual void set_chorus_params(unsigned int p_delay_ms,unsigned int p_separation_ms,unsigned int p_depth_ms10,unsigned int p_speed_hz10);
-
-
- /* Info retrieving */
-
- virtual int32_t get_voice_sample_pos_index(int p_voice_index) ;
- virtual int get_voice_panning(int p_voice_index) ;
- virtual int get_voice_volume(int p_voice_index) ;
- virtual CPSample_ID get_voice_sample_id(int p_voice_index) ;
- virtual bool is_voice_active(int p_voice_index);
- virtual int get_active_voice_count() { return 0; }
- virtual int get_total_voice_count() { return MAX_VOICES; }
-
-
- virtual uint32_t get_mix_frequency() { return 0; }
-
- /* Methods below only work with software mixers, meant for software-based sound drivers, hardware mixers ignore them */
- virtual int32_t process(int32_t p_frames) { return 0; }
- virtual int32_t *get_mixdown_buffer_ptr() { return NULL; }
- virtual void set_mix_frequency(int32_t p_mix_frequency) {};
-
- CPMixerImpl(AudioMixer *p_mixer=NULL);
- virtual ~CPMixerImpl() {}
-};
-
-/** FILE ACCESS **/
-
-class CPFileAccessWrapperImpl : public CPFileAccessWrapper {
-
- FileAccess *f;
-public:
-
-
- virtual Error open(const char *p_filename, int p_mode_flags);
- virtual void close();
-
- virtual void seek(uint32_t p_position);
- virtual void seek_end();
- virtual uint32_t get_pos();
-
- virtual bool eof_reached();
-
- virtual uint8_t get_byte();
- virtual void get_byte_array(uint8_t *p_dest,int p_elements);
- virtual void get_word_array(uint16_t *p_dest,int p_elements);
-
- virtual uint16_t get_word();
- virtual uint32_t get_dword();
-
- virtual void set_endian_conversion(bool p_swap);
- virtual bool is_open();
-
- virtual Error get_error();
-
- virtual void store_byte(uint8_t p_dest);
- virtual void store_byte_array(const uint8_t *p_dest,int p_elements);
-
- virtual void store_word(uint16_t p_dest);
- virtual void store_dword(uint32_t p_dest);
-
- CPFileAccessWrapperImpl() { f=NULL; }
- virtual ~CPFileAccessWrapperImpl(){ if (f) memdelete(f); }
-
-};
-
-
-
-/////////////////////
-
-class EventStreamChibi;
-
-class EventStreamPlaybackChibi : public EventStreamPlayback {
-
- GDCLASS(EventStreamPlaybackChibi,EventStreamPlayback);
-
- CPMixerImpl mixer;
- uint64_t total_usec;
- Ref<EventStreamChibi> stream;
- mutable CPPlayer *player;
- bool loop;
- int last_order;
- int loops;
- virtual Error _play();
- virtual bool _update(AudioMixer* p_mixer, uint64_t p_usec);
- virtual void _stop();
- float volume;
- float tempo_scale;
- float pitch_scale;
-
-
-public:
-
-
- virtual void set_paused(bool p_paused);
- virtual bool is_paused() const;
-
- virtual void set_loop(bool p_loop);
- virtual bool is_loop_enabled() const;
-
- virtual int get_loop_count() const;
-
- virtual float get_pos() const;
- virtual void seek_pos(float p_time);
-
- virtual void set_volume(float p_vol);
- virtual float get_volume() const;
-
- virtual void set_pitch_scale(float p_pitch_scale);
- virtual float get_pitch_scale() const;
-
- virtual void set_tempo_scale(float p_tempo_scale);
- virtual float get_tempo_scale() const;
-
- virtual void set_channel_volume(int p_channel,float p_volume);
- virtual float get_channel_volume(int p_channel) const;
-
- virtual float get_last_note_time(int p_channel) const;
-
- EventStreamPlaybackChibi(Ref<EventStreamChibi> p_stream=Ref<EventStreamChibi>());
- ~EventStreamPlaybackChibi();
-};
-
-
-class EventStreamChibi : public EventStream {
-
- GDCLASS(EventStreamChibi,EventStream);
-
-friend class ResourceFormatLoaderChibi;
-friend class EventStreamPlaybackChibi;
- //I think i didn't know what const was when i wrote this more than a decade ago
- //so it goes mutable :(
- mutable CPSong song;
-
-
-public:
-
- virtual Ref<EventStreamPlayback> instance_playback();
-
- virtual String get_stream_name() const;
-
- virtual float get_length() const;
-
- virtual int get_channel_count() const { return 64; } //tracker limit
-
- EventStreamChibi();
-};
-
-
-class ResourceFormatLoaderChibi : public ResourceFormatLoader {
-
-public:
- virtual RES load(const String &p_path,const String& p_original_path="",Error *r_error=NULL);
- virtual void get_recognized_extensions(List<String> *p_extensions) const;
- virtual bool handles_type(const String& p_type) const;
- virtual String get_resource_type(const String &p_path) const;
-
-};
-
-void initialize_chibi();
-void finalize_chibi();
-
-#endif // EVENT_STREAM_CHIBI_H
diff --git a/modules/chibi/register_types.cpp b/modules/chibi/register_types.cpp
deleted file mode 100644
index 1a0c808819..0000000000
--- a/modules/chibi/register_types.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-/*************************************************************************/
-/* register_types.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "register_types.h"
-
-#include "event_stream_chibi.h"
-
-void register_chibi_types() {
-
- initialize_chibi();
-}
-
-void unregister_chibi_types() {
-
- finalize_chibi();
-}
diff --git a/modules/chibi/register_types.h b/modules/chibi/register_types.h
deleted file mode 100644
index 08856c0744..0000000000
--- a/modules/chibi/register_types.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*************************************************************************/
-/* register_types.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-void register_chibi_types();
-void unregister_chibi_types();
diff --git a/modules/gdscript/gd_compiler.cpp b/modules/gdscript/gd_compiler.cpp
index a5351a584b..398c2cf82a 100644
--- a/modules/gdscript/gd_compiler.cpp
+++ b/modules/gdscript/gd_compiler.cpp
@@ -1576,7 +1576,7 @@ Error GDCompiler::_parse_function(GDScript *p_script,const GDParser::ClassNode *
//funciton and class
if (p_class->name) {
- signature+="::"+String(p_class->name)+"."+String(func_name);;
+ signature+="::"+String(p_class->name)+"."+String(func_name);
} else {
signature+="::"+String(func_name);
}
diff --git a/modules/gdscript/gd_editor.cpp b/modules/gdscript/gd_editor.cpp
index 19472d3d46..114a25feeb 100644
--- a/modules/gdscript/gd_editor.cpp
+++ b/modules/gdscript/gd_editor.cpp
@@ -2914,7 +2914,7 @@ Error GDScriptLanguage::lookup_code(const String& p_code, const String& p_symbol
Ref<GDNativeClass> gdn = t.value;
if (gdn.is_valid()) {
r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS_CONSTANT;
- r_result.class_name=gdn->get_name();;
+ r_result.class_name=gdn->get_name();
r_result.class_member=p_symbol;
return OK;
diff --git a/modules/gdscript/gd_function.cpp b/modules/gdscript/gd_function.cpp
index 6659988602..51e2c1e2be 100644
--- a/modules/gdscript/gd_function.cpp
+++ b/modules/gdscript/gd_function.cpp
@@ -331,8 +331,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
#endif
ip+=5;
-
- } continue;
+ continue;
+ }
case OPCODE_EXTENDS_TEST: {
CHECK_SPACE(4);
@@ -404,8 +404,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
*dst=extends_ok;
ip+=4;
-
- } continue;
+ continue;
+ }
case OPCODE_SET: {
CHECK_SPACE(3);
@@ -429,7 +429,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
}
ip+=4;
- } continue;
+ continue;
+ }
case OPCODE_GET: {
CHECK_SPACE(3);
@@ -460,7 +461,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
*dst=ret;
#endif
ip+=4;
- } continue;
+ continue;
+ }
case OPCODE_SET_NAMED: {
CHECK_SPACE(3);
@@ -483,7 +485,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
}
ip+=4;
- } continue;
+ continue;
+ }
case OPCODE_GET_NAMED: {
@@ -518,7 +521,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
*dst=ret;
#endif
ip+=4;
- } continue;
+ continue;
+ }
case OPCODE_SET_MEMBER: {
CHECK_SPACE(3);
@@ -540,7 +544,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
}
#endif
ip+=3;
- } continue;
+ continue;
+ }
case OPCODE_GET_MEMBER: {
CHECK_SPACE(3);
@@ -557,8 +562,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
}
#endif
ip+=3;
-
- } continue;
+ continue;
+ }
case OPCODE_ASSIGN: {
CHECK_SPACE(3);
@@ -568,8 +573,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
*dst = *src;
ip+=3;
-
- } continue;
+ continue;
+ }
case OPCODE_ASSIGN_TRUE: {
CHECK_SPACE(2);
@@ -578,7 +583,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
*dst = true;
ip+=2;
- } continue;
+ continue;
+ }
case OPCODE_ASSIGN_FALSE: {
CHECK_SPACE(2);
@@ -587,7 +593,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
*dst = false;
ip+=2;
- } continue;
+ continue;
+ }
case OPCODE_CONSTRUCT: {
CHECK_SPACE(2);
@@ -612,7 +619,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
ip+=4+argc;
//construct a basic type
- } continue;
+ continue;
+ }
case OPCODE_CONSTRUCT_ARRAY: {
CHECK_SPACE(1);
@@ -632,8 +640,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
*dst=array;
ip+=3+argc;
-
- } continue;
+ continue;
+ }
case OPCODE_CONSTRUCT_DICTIONARY: {
CHECK_SPACE(1);
@@ -655,8 +663,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
*dst=dict;
ip+=3+argc*2;
-
- } continue;
+ continue;
+ }
case OPCODE_CALL_RETURN:
case OPCODE_CALL: {
@@ -737,8 +745,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
//_call_func(NULL,base,*methodname,ip,argc,p_instance,stack);
ip+=argc+1;
-
- } continue;
+ continue;
+ }
case OPCODE_CALL_BUILT_IN: {
CHECK_SPACE(4);
@@ -775,12 +783,12 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
break;
}
ip+=argc+1;
-
- } continue;
+ continue;
+ }
case OPCODE_CALL_SELF: {
-
- } break;
+ break;
+ }
case OPCODE_CALL_SELF_BASE: {
CHECK_SPACE(2);
@@ -857,8 +865,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
}
ip+=4+argc;
-
- } continue;
+ continue;
+ }
case OPCODE_YIELD:
case OPCODE_YIELD_SIGNAL: {
@@ -938,8 +946,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
}
exit_ok=true;
-
- } break;
+ break;
+ }
case OPCODE_YIELD_RESUME: {
CHECK_SPACE(2);
@@ -950,8 +958,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
GET_VARIANT_PTR(result,1);
*result=p_state->result;
ip+=2;
-
- } continue;
+ continue;
+ }
case OPCODE_JUMP: {
CHECK_SPACE(2);
@@ -959,8 +967,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
ERR_BREAK(to<0 || to>_code_size);
ip=to;
-
- } continue;
+ continue;
+ }
case OPCODE_JUMP_IF: {
CHECK_SPACE(3);
@@ -983,7 +991,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
continue;
}
ip+=3;
- } continue;
+ continue;
+ }
case OPCODE_JUMP_IF_NOT: {
CHECK_SPACE(3);
@@ -1006,21 +1015,22 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
continue;
}
ip+=3;
- } continue;
+ continue;
+ }
case OPCODE_JUMP_TO_DEF_ARGUMENT: {
CHECK_SPACE(2);
ip=_default_arg_ptr[defarg];
-
- } continue;
+ continue;
+ }
case OPCODE_RETURN: {
CHECK_SPACE(2);
GET_VARIANT_PTR(r,1);
retvalue=*r;
exit_ok=true;
-
- } break;
+ break;
+ }
case OPCODE_ITERATE_BEGIN: {
CHECK_SPACE(8); //space for this an regular iterate
@@ -1050,8 +1060,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
ip+=5; //skip regular iterate which is always next
-
- } continue;
+ continue;
+ }
case OPCODE_ITERATE: {
CHECK_SPACE(4);
@@ -1079,7 +1089,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
}
ip+=5; //loop again
- } continue;
+ continue;
+ }
case OPCODE_ASSERT: {
CHECK_SPACE(2);
GET_VARIANT_PTR(test,1);
@@ -1105,7 +1116,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
#endif
ip+=2;
- } continue;
+ continue;
+ }
case OPCODE_BREAKPOINT: {
#ifdef DEBUG_ENABLED
if (ScriptDebugger::get_singleton()) {
@@ -1113,7 +1125,8 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
}
#endif
ip+=1;
- } continue;
+ continue;
+ }
case OPCODE_LINE: {
CHECK_SPACE(2);
@@ -1142,17 +1155,19 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
ScriptDebugger::get_singleton()->line_poll();
}
- } continue;
+ continue;
+ }
case OPCODE_END: {
exit_ok=true;
break;
- } break;
+ }
default: {
err_text="Illegal opcode "+itos(_code_ptr[ip])+" at address "+itos(ip);
- } break;
+ break;
+ }
}
diff --git a/modules/gdscript/gd_functions.cpp b/modules/gdscript/gd_functions.cpp
index 1c41b2e73b..4f3516c097 100644
--- a/modules/gdscript/gd_functions.cpp
+++ b/modules/gdscript/gd_functions.cpp
@@ -28,7 +28,7 @@
/*************************************************************************/
#include "gd_functions.h"
#include "math_funcs.h"
-#include "object_type_db.h"
+#include "class_db.h"
#include "reference.h"
#include "gd_script.h"
#include "func_ref.h"
@@ -351,14 +351,14 @@ void GDFunctions::call(Function p_func,const Variant **p_args,int p_arg_count,Va
case MATH_SEED: {
VALIDATE_ARG_COUNT(1);
VALIDATE_ARG_NUM(0);
- uint32_t seed=*p_args[0];
+ uint64_t seed=*p_args[0];
Math::seed(seed);
r_ret=Variant();
} break;
case MATH_RANDSEED: {
VALIDATE_ARG_COUNT(1);
VALIDATE_ARG_NUM(0);
- uint32_t seed=*p_args[0];
+ uint64_t seed=*p_args[0];
int ret = Math::rand_from_seed(&seed);
Array reta;
reta.push_back(ret);
@@ -555,7 +555,7 @@ void GDFunctions::call(Function p_func,const Variant **p_args,int p_arg_count,Va
String str;
for(int i=0;i<p_arg_count;i++) {
- String os = p_args[i]->operator String();;
+ String os = p_args[i]->operator String();
if (i==0)
str=os;
diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp
index 4a36fbb4f1..70659326e5 100644
--- a/modules/gdscript/gd_parser.cpp
+++ b/modules/gdscript/gd_parser.cpp
@@ -643,7 +643,7 @@ GDParser::Node* GDParser::_parse_expression(Node *p_parent,bool p_static,bool p_
case GDTokenizer::TK_OP_ADD: e.op=OperatorNode::OP_POS; break;
case GDTokenizer::TK_OP_SUB: e.op=OperatorNode::OP_NEG; break;
case GDTokenizer::TK_OP_NOT: e.op=OperatorNode::OP_NOT; break;
- case GDTokenizer::TK_OP_BIT_INVERT: e.op=OperatorNode::OP_BIT_INVERT;; break;
+ case GDTokenizer::TK_OP_BIT_INVERT: e.op=OperatorNode::OP_BIT_INVERT; break;
default: {}
}
@@ -1043,8 +1043,8 @@ GDParser::Node* GDParser::_parse_expression(Node *p_parent,bool p_static,bool p_
case GDTokenizer::TK_OP_ASSIGN_MUL: _VALIDATE_ASSIGN op=OperatorNode::OP_ASSIGN_MUL ; break;
case GDTokenizer::TK_OP_ASSIGN_DIV: _VALIDATE_ASSIGN op=OperatorNode::OP_ASSIGN_DIV ; break;
case GDTokenizer::TK_OP_ASSIGN_MOD: _VALIDATE_ASSIGN op=OperatorNode::OP_ASSIGN_MOD ; break;
- case GDTokenizer::TK_OP_ASSIGN_SHIFT_LEFT: _VALIDATE_ASSIGN op=OperatorNode::OP_ASSIGN_SHIFT_LEFT; ; break;
- case GDTokenizer::TK_OP_ASSIGN_SHIFT_RIGHT: _VALIDATE_ASSIGN op=OperatorNode::OP_ASSIGN_SHIFT_RIGHT; ; break;
+ case GDTokenizer::TK_OP_ASSIGN_SHIFT_LEFT: _VALIDATE_ASSIGN op=OperatorNode::OP_ASSIGN_SHIFT_LEFT; break;
+ case GDTokenizer::TK_OP_ASSIGN_SHIFT_RIGHT: _VALIDATE_ASSIGN op=OperatorNode::OP_ASSIGN_SHIFT_RIGHT; break;
case GDTokenizer::TK_OP_ASSIGN_BIT_AND: _VALIDATE_ASSIGN op=OperatorNode::OP_ASSIGN_BIT_AND ; break;
case GDTokenizer::TK_OP_ASSIGN_BIT_OR: _VALIDATE_ASSIGN op=OperatorNode::OP_ASSIGN_BIT_OR ; break;
case GDTokenizer::TK_OP_ASSIGN_BIT_XOR: _VALIDATE_ASSIGN op=OperatorNode::OP_ASSIGN_BIT_XOR ; break;
diff --git a/modules/gdscript/gd_script.cpp b/modules/gdscript/gd_script.cpp
index d9a3dd13f0..89df7e962a 100644
--- a/modules/gdscript/gd_script.cpp
+++ b/modules/gdscript/gd_script.cpp
@@ -541,7 +541,7 @@ bool GDScript::_update_exports() {
}
}
- members_cache.clear();;
+ members_cache.clear();
member_default_values_cache.clear();
for(int i=0;i<c->variables.size();i++) {
diff --git a/modules/gridmap/grid_map.cpp b/modules/gridmap/grid_map.cpp
index 271db4babc..2dd7e951ab 100644
--- a/modules/gridmap/grid_map.cpp
+++ b/modules/gridmap/grid_map.cpp
@@ -65,7 +65,7 @@ bool GridMap::_set(const StringName& p_name, const Variant& p_value) {
int amount=cells.size();
PoolVector<int>::Read r = cells.read();
ERR_FAIL_COND_V(amount&1,false); // not even
- cell_map.clear();;
+ cell_map.clear();
for(int i=0;i<amount/3;i++) {
@@ -90,7 +90,7 @@ bool GridMap::_set(const StringName& p_name, const Variant& p_value) {
int amount=cells.size();
PoolVector<int>::Read r = cells.read();
ERR_FAIL_COND_V(amount%3,false); // not even
- cell_map.clear();;
+ cell_map.clear();
for(int i=0;i<amount/3;i++) {
IndexKey ik;
@@ -123,7 +123,7 @@ bool GridMap::_set(const StringName& p_name, const Variant& p_value) {
Octant &g = *octant_map[ok];
g.baked=b;
- g.bake_instance=VS::get_singleton()->instance_create();;
+ g.bake_instance=VS::get_singleton()->instance_create();
VS::get_singleton()->instance_set_base(g.bake_instance,g.baked->get_rid());
VS::get_singleton()->instance_geometry_set_baked_light(g.bake_instance,baked_light_instance?baked_light_instance->get_baked_light_instance():RID());
}
@@ -908,7 +908,7 @@ void GridMap::_octant_bake(const OctantKey &p_key, const Ref<TriangleMesh>& p_tm
if (V)
V=V->next();
else
- V=st->get_vertex_array().front();;
+ V=st->get_vertex_array().front();
int lc = p_lights.size();
const BakeLight* bl = p_lights.ptr();
float ofs = cell_size*0.02;
diff --git a/modules/gridmap/grid_map_editor_plugin.cpp b/modules/gridmap/grid_map_editor_plugin.cpp
index 109f6338db..0d57ffa394 100644
--- a/modules/gridmap/grid_map_editor_plugin.cpp
+++ b/modules/gridmap/grid_map_editor_plugin.cpp
@@ -903,7 +903,7 @@ void GridMapEditor::edit(GridMap *p_gridmap) {
Vector3 axis;
axis[i]=1;
Vector3 axis_n1;
- axis_n1[(i+1)%3]=cell_size[(i+1)%3];;
+ axis_n1[(i+1)%3]=cell_size[(i+1)%3];
Vector3 axis_n2;
axis_n2[(i+2)%3]=cell_size[(i+2)%3];
@@ -1274,8 +1274,8 @@ GridMapEditor::GridMapEditor(EditorNode *p_editor) {
edit_mode = memnew(OptionButton);
edit_mode->set_area_as_parent_rect();
- edit_mode->set_anchor_and_margin(MARGIN_BOTTOM,ANCHOR_BEGIN,24);;
- edit_mode->set_anchor_and_margin(MARGIN_RIGHT,ANCHOR_END,14);;
+ edit_mode->set_anchor_and_margin(MARGIN_BOTTOM,ANCHOR_BEGIN,24);
+ edit_mode->set_anchor_and_margin(MARGIN_RIGHT,ANCHOR_END,14);
edit_mode->add_item("Tiles");
edit_mode->add_item("Areas");
hb->add_child(edit_mode);
diff --git a/modules/gridmap/register_types.cpp b/modules/gridmap/register_types.cpp
index b4a0d3b0b7..9cd70a0f9b 100644
--- a/modules/gridmap/register_types.cpp
+++ b/modules/gridmap/register_types.cpp
@@ -28,7 +28,7 @@
/*************************************************************************/
#include "register_types.h"
#ifndef _3D_DISABLED
-#include "object_type_db.h"
+#include "class_db.h"
#include "grid_map.h"
#include "grid_map_editor_plugin.h"
#endif
diff --git a/modules/ogg/config.py b/modules/ogg/config.py
index fb920482f5..ef5daca05c 100644
--- a/modules/ogg/config.py
+++ b/modules/ogg/config.py
@@ -1,6 +1,7 @@
def can_build(platform):
- return True
+# return True
+ return False
def configure(env):
diff --git a/modules/opus/config.py b/modules/opus/config.py
index fb920482f5..ef5daca05c 100644
--- a/modules/opus/config.py
+++ b/modules/opus/config.py
@@ -1,6 +1,7 @@
def can_build(platform):
- return True
+# return True
+ return False
def configure(env):
diff --git a/modules/pvr/texture_loader_pvr.cpp b/modules/pvr/texture_loader_pvr.cpp
index 0d8cabb331..9805675f2c 100644
--- a/modules/pvr/texture_loader_pvr.cpp
+++ b/modules/pvr/texture_loader_pvr.cpp
@@ -464,16 +464,19 @@ static void get_modulation_value(int x, int y, const int p_2bit, const int p_mod
if(((x^y)&1)==0)
mod_val = rep_vals0[p_modulation[y][x]];
else if(p_modulation_modes[y][x] == 1) {
- mod_val = (rep_vals0[p_modulation[y-1][x]] +
- rep_vals0[p_modulation[y+1][x]] +
- rep_vals0[p_modulation[y][x-1]] +
- rep_vals0[p_modulation[y][x+1]] + 2) / 4;
+ mod_val = (
+ rep_vals0[p_modulation[y-1][x]] +
+ rep_vals0[p_modulation[y+1][x]] +
+ rep_vals0[p_modulation[y][x-1]] +
+ rep_vals0[p_modulation[y][x+1]] + 2) / 4;
} else if(p_modulation_modes[y][x] == 2) {
- mod_val = (rep_vals0[p_modulation[y][x-1]] +
- rep_vals0[p_modulation[y][x+1]] + 1) / 2;
+ mod_val = (
+ rep_vals0[p_modulation[y][x-1]] +
+ rep_vals0[p_modulation[y][x+1]] + 1) / 2;
} else {
- mod_val = (rep_vals0[p_modulation[y-1][x]] +
- rep_vals0[p_modulation[y+1][x]] + 1) / 2;
+ mod_val = (
+ rep_vals0[p_modulation[y-1][x]] +
+ rep_vals0[p_modulation[y+1][x]] + 1) / 2;
}
} else {
mod_val = rep_vals1[p_modulation[y][x]];
@@ -615,11 +618,12 @@ static void decompress_pvrtc(PVRTCBlock *p_comp_img, const int p_2bit, const int
for(j = 0; j < 2; j++) {
unpack_5554(p_blocks[i][j], colors5554[i][j].Reps);
- unpack_modulations(p_blocks[i][j],
- p_2bit,
- p_modulation,
- p_modulation_modes,
- p_x, p_y);
+ unpack_modulations(
+ p_blocks[i][j],
+ p_2bit,
+ p_modulation,
+ p_modulation_modes,
+ p_x, p_y);
p_x += x_block_size;
}
@@ -632,19 +636,21 @@ static void decompress_pvrtc(PVRTCBlock *p_comp_img, const int p_2bit, const int
}
- interpolate_colors(colors5554[0][0].Reps[0],
- colors5554[0][1].Reps[0],
- colors5554[1][0].Reps[0],
- colors5554[1][1].Reps[0],
- p_2bit, x, y,
- ASig);
-
- interpolate_colors(colors5554[0][0].Reps[1],
- colors5554[0][1].Reps[1],
- colors5554[1][0].Reps[1],
- colors5554[1][1].Reps[1],
- p_2bit, x, y,
- BSig);
+ interpolate_colors(
+ colors5554[0][0].Reps[0],
+ colors5554[0][1].Reps[0],
+ colors5554[1][0].Reps[0],
+ colors5554[1][1].Reps[0],
+ p_2bit, x, y,
+ ASig);
+
+ interpolate_colors(
+ colors5554[0][0].Reps[1],
+ colors5554[0][1].Reps[1],
+ colors5554[1][0].Reps[1],
+ colors5554[1][1].Reps[1],
+ p_2bit, x, y,
+ BSig);
get_modulation_value(x,y, p_2bit, (const int (*)[16])p_modulation, (const int (*)[16])p_modulation_modes,
&Mod, &DoPT);
diff --git a/modules/regex/register_types.cpp b/modules/regex/register_types.cpp
index d44c7e563c..c62a04d80f 100644
--- a/modules/regex/register_types.cpp
+++ b/modules/regex/register_types.cpp
@@ -28,7 +28,7 @@
/*************************************************************************/
#include "register_types.h"
-#include "object_type_db.h"
+#include "class_db.h"
#include "regex.h"
void register_regex_types() {
diff --git a/modules/squish/image_compress_squish.cpp b/modules/squish/image_compress_squish.cpp
index 7410658603..a48c1f3485 100644
--- a/modules/squish/image_compress_squish.cpp
+++ b/modules/squish/image_compress_squish.cpp
@@ -54,12 +54,12 @@ void image_compress_squish(Image *p_image) {
if (p_image->get_format()==Image::FORMAT_LA8) {
//compressed normalmap
- target_format = Image::FORMAT_DXT5; squish_comp|=squish::kDxt5;;
+ target_format = Image::FORMAT_DXT5; squish_comp|=squish::kDxt5;
} else if (p_image->detect_alpha()!=Image::ALPHA_NONE) {
- target_format = Image::FORMAT_DXT3; squish_comp|=squish::kDxt3;;
+ target_format = Image::FORMAT_DXT3; squish_comp|=squish::kDxt3;
} else {
- target_format = Image::FORMAT_DXT1; shift=1; squish_comp|=squish::kDxt1;;
+ target_format = Image::FORMAT_DXT1; shift=1; squish_comp|=squish::kDxt1;
}
p_image->convert(Image::FORMAT_RGBA8); //always expects rgba
diff --git a/modules/theora/config.py b/modules/theora/config.py
index fb920482f5..8eefe81288 100644
--- a/modules/theora/config.py
+++ b/modules/theora/config.py
@@ -1,6 +1,7 @@
def can_build(platform):
- return True
+# return True
+ return False
def configure(env):
diff --git a/modules/theora/yuv2rgb.h b/modules/theora/yuv2rgb.h
index 431b47e651..3b81607a65 100644
--- a/modules/theora/yuv2rgb.h
+++ b/modules/theora/yuv2rgb.h
@@ -3,8 +3,7 @@
#include "typedefs.h"
-static const uint32_t tables[256*3] =
-{
+static const uint32_t tables[256*3] = {
/* y_table */
0x7FFFFFEDU,
0x7FFFFFEFU,
diff --git a/modules/visual_script/visual_script_builtin_funcs.cpp b/modules/visual_script/visual_script_builtin_funcs.cpp
index 27242384ac..169af6fbec 100644
--- a/modules/visual_script/visual_script_builtin_funcs.cpp
+++ b/modules/visual_script/visual_script_builtin_funcs.cpp
@@ -1,6 +1,6 @@
#include "visual_script_builtin_funcs.h"
#include "math_funcs.h"
-#include "object_type_db.h"
+#include "class_db.h"
#include "reference.h"
#include "func_ref.h"
#include "os/os.h"
@@ -802,14 +802,14 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func,const Variant** p_inp
case VisualScriptBuiltinFunc::MATH_SEED: {
VALIDATE_ARG_NUM(0);
- uint32_t seed=*p_inputs[0];
+ uint64_t seed=*p_inputs[0];
Math::seed(seed);
} break;
case VisualScriptBuiltinFunc::MATH_RANDSEED: {
VALIDATE_ARG_NUM(0);
- uint32_t seed=*p_inputs[0];
+ uint64_t seed=*p_inputs[0];
int ret = Math::rand_from_seed(&seed);
Array reta;
reta.push_back(ret);
diff --git a/modules/visual_script/visual_script_editor.cpp b/modules/visual_script/visual_script_editor.cpp
index 37ee225aeb..eadc9a8892 100644
--- a/modules/visual_script/visual_script_editor.cpp
+++ b/modules/visual_script/visual_script_editor.cpp
@@ -1918,7 +1918,7 @@ void VisualScriptEditor::drop_data_fw(const Point2& p_point,const Variant& p_dat
Ref<VisualScriptFunctionCall> call;
call.instance();
call->set_call_mode(VisualScriptFunctionCall::CALL_MODE_NODE_PATH);
- call->set_base_path(sn->get_path_to(node));;
+ call->set_base_path(sn->get_path_to(node));
call->set_base_type(node->get_class());
n=call;
diff --git a/modules/visual_script/visual_script_nodes.cpp b/modules/visual_script/visual_script_nodes.cpp
index c9e24fc9dc..ce33b2e5ae 100644
--- a/modules/visual_script/visual_script_nodes.cpp
+++ b/modules/visual_script/visual_script_nodes.cpp
@@ -3615,7 +3615,7 @@ void VisualScriptInputAction::_validate_property(PropertyInfo& property) const {
al.push_back(name);
}
- al.sort();;
+ al.sort();
for(int i=0;i<al.size();i++) {
if (actions!=String())
@@ -3705,7 +3705,7 @@ String VisualScriptDeconstruct::get_category() const {
void VisualScriptDeconstruct::_update_elements() {
- elements.clear();;
+ elements.clear();
Variant v;
if (type==Variant::INPUT_EVENT) {
InputEvent ie;
diff --git a/modules/vorbis/audio_stream_ogg_vorbis.cpp b/modules/vorbis/audio_stream_ogg_vorbis.cpp
index 2b05daca16..98920954a4 100644
--- a/modules/vorbis/audio_stream_ogg_vorbis.cpp
+++ b/modules/vorbis/audio_stream_ogg_vorbis.cpp
@@ -141,7 +141,7 @@ int AudioStreamPlaybackOGGVorbis::mix(int16_t* p_bufer,int p_frames) {
int errv = ov_open_callbacks(f,&vf,NULL,0,_ov_callbacks);
if (errv!=0) {
playing=false;
- break;; // :(
+ break; // :(
}
if (loop_restart_time) {
diff --git a/modules/vorbis/config.py b/modules/vorbis/config.py
index fb920482f5..ef5daca05c 100644
--- a/modules/vorbis/config.py
+++ b/modules/vorbis/config.py
@@ -1,6 +1,7 @@
def can_build(platform):
- return True
+# return True
+ return False
def configure(env):
diff --git a/modules/webm/config.py b/modules/webm/config.py
index fb920482f5..ef5daca05c 100644
--- a/modules/webm/config.py
+++ b/modules/webm/config.py
@@ -1,6 +1,7 @@
def can_build(platform):
- return True
+# return True
+ return False
def configure(env):
diff --git a/platform/android/audio_driver_jandroid.cpp b/platform/android/audio_driver_jandroid.cpp
index d9e40a5913..e0e89e6344 100644
--- a/platform/android/audio_driver_jandroid.cpp
+++ b/platform/android/audio_driver_jandroid.cpp
@@ -27,9 +27,11 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "audio_driver_jandroid.h"
+
#include "globals.h"
#include "os/os.h"
#include "thread_jandroid.h"
+
#ifndef ANDROID_NATIVE_ACTIVITY
AudioDriverAndroid* AudioDriverAndroid::s_ad=NULL;
@@ -199,9 +201,9 @@ int AudioDriverAndroid::get_mix_rate() const {
return mix_rate;
}
-AudioDriverSW::OutputFormat AudioDriverAndroid::get_output_format() const{
+AudioDriver::SpeakerMode AudioDriverAndroid::get_speaker_mode() const{
- return OUTPUT_STEREO;
+ return SPEAKER_MODE_STEREO;
}
void AudioDriverAndroid::lock(){
diff --git a/platform/android/audio_driver_jandroid.h b/platform/android/audio_driver_jandroid.h
index 01ce31be8f..f485df2001 100644
--- a/platform/android/audio_driver_jandroid.h
+++ b/platform/android/audio_driver_jandroid.h
@@ -29,12 +29,13 @@
#ifndef AUDIO_DRIVER_ANDROID_H
#define AUDIO_DRIVER_ANDROID_H
-#include "servers/audio/audio_server_sw.h"
+#include "servers/audio_server.h"
+
#ifndef ANDROID_NATIVE_ACTIVITY
#include "java_glue.h"
-class AudioDriverAndroid : public AudioDriverSW {
+class AudioDriverAndroid : public AudioDriver {
static Mutex *mutex;
@@ -65,7 +66,7 @@ public:
virtual Error init();
virtual void start();
virtual int get_mix_rate() const ;
- virtual OutputFormat get_output_format() const;
+ virtual SpeakerMode get_speaker_mode() const;
virtual void lock();
virtual void unlock();
virtual void finish();
diff --git a/platform/android/audio_driver_opensl.cpp b/platform/android/audio_driver_opensl.cpp
index 7aec2b174e..2ec80f23c3 100644
--- a/platform/android/audio_driver_opensl.cpp
+++ b/platform/android/audio_driver_opensl.cpp
@@ -27,11 +27,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "audio_driver_opensl.h"
-#include <string.h>
-
-
-
+#include <string.h>
#define MAX_NUMBER_INTERFACES 3
#define MAX_NUMBER_OUTPUT_DEVICES 6
@@ -373,9 +370,9 @@ int AudioDriverOpenSL::get_mix_rate() const {
return 44100;
}
-AudioDriverSW::OutputFormat AudioDriverOpenSL::get_output_format() const{
+AudioDriver::SpeakerMode AudioDriverOpenSL::get_speaker_mode() const{
- return OUTPUT_STEREO;
+ return SPEAKER_MODE_STEREO;
}
void AudioDriverOpenSL::lock(){
diff --git a/platform/android/audio_driver_opensl.h b/platform/android/audio_driver_opensl.h
index 8839d20bab..1baaa95052 100644
--- a/platform/android/audio_driver_opensl.h
+++ b/platform/android/audio_driver_opensl.h
@@ -29,15 +29,13 @@
#ifndef AUDIO_DRIVER_OPENSL_H
#define AUDIO_DRIVER_OPENSL_H
-
-
-#include "servers/audio/audio_server_sw.h"
+#include "servers/audio_server.h"
#include "os/mutex.h"
-#include <SLES/OpenSLES.h>
-#include "SLES/OpenSLES_Android.h"
+#include <SLES/OpenSLES.h>
+#include <SLES/OpenSLES_Android.h>
-class AudioDriverOpenSL : public AudioDriverSW {
+class AudioDriverOpenSL : public AudioDriver {
bool active;
Mutex *mutex;
@@ -94,7 +92,7 @@ public:
virtual Error init();
virtual void start();
virtual int get_mix_rate() const ;
- virtual OutputFormat get_output_format() const;
+ virtual SpeakerMode get_speaker_mode() const;
virtual void lock();
virtual void unlock();
virtual void finish();
diff --git a/platform/android/dir_access_android.cpp b/platform/android/dir_access_android.cpp
index 42ac34a589..82b2761bb0 100644
--- a/platform/android/dir_access_android.cpp
+++ b/platform/android/dir_access_android.cpp
@@ -192,6 +192,6 @@ DirAccessAndroid::DirAccessAndroid() {
DirAccessAndroid::~DirAccessAndroid() {
- list_dir_end();;
+ list_dir_end();
}
#endif
diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp
index 204bf684b7..33283eccea 100644
--- a/platform/android/export/export.cpp
+++ b/platform/android/export/export.cpp
@@ -1748,6 +1748,7 @@ Error EditorExportPlatformAndroid::run(int p_device, int p_flags) {
args.push_back("shell");
args.push_back("am");
args.push_back("start");
+ args.push_back("--user 0");
args.push_back("-a");
args.push_back("android.intent.action.MAIN");
args.push_back("-n");
@@ -1914,4 +1915,3 @@ void register_android_exporter() {
EditorImportExport::get_singleton()->add_export_platform(exporter);
}
-
diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp
index 562666b679..1095689a5b 100644
--- a/platform/android/os_android.cpp
+++ b/platform/android/os_android.cpp
@@ -27,18 +27,15 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "os_android.h"
-#include "drivers/gles2/rasterizer_gles2.h"
+#include "drivers/gles2/rasterizer_gles2.h"
#include "core/io/file_access_buffered_fa.h"
#include "drivers/unix/file_access_unix.h"
#include "drivers/unix/dir_access_unix.h"
-
#include "servers/visual/visual_server_raster.h"
#include "servers/visual/visual_server_wrap_mt.h"
#include "main/main.h"
-
#include "file_access_android.h"
-
#include "core/globals.h"
#ifdef ANDROID_NATIVE_ACTIVITY
@@ -129,7 +126,7 @@ void OS_Android::initialize(const VideoMode& p_desired,int p_video_driver,int p_
if (gfx_init_func)
gfx_init_func(gfx_init_ud,use_gl2);
- AudioDriverManagerSW::add_driver(&audio_driver_android);
+ AudioDriverManager::add_driver(&audio_driver_android);
RasterizerGLES2 *rasterizer_gles22=memnew( RasterizerGLES2(false,use_reload_hooks,false,use_reload_hooks ) );
@@ -147,26 +144,13 @@ void OS_Android::initialize(const VideoMode& p_desired,int p_video_driver,int p_
visual_server->init();
visual_server->cursor_set_visible(false, 0);
- AudioDriverManagerSW::get_driver(p_audio_driver)->set_singleton();
+ AudioDriverManager::get_driver(p_audio_driver)->set_singleton();
- if (AudioDriverManagerSW::get_driver(p_audio_driver)->init()!=OK) {
+ if (AudioDriverManager::get_driver(p_audio_driver)->init()!=OK) {
ERR_PRINT("Initializing audio failed.");
}
- sample_manager = memnew( SampleManagerMallocSW );
- audio_server = memnew( AudioServerSW(sample_manager) );
-
- audio_server->set_mixer_params(AudioMixerSW::INTERPOLATION_LINEAR,true);
- audio_server->init();
-
- spatial_sound_server = memnew( SpatialSoundServerSW );
- spatial_sound_server->init();
-
- spatial_sound_2d_server = memnew( SpatialSound2DServerSW );
- spatial_sound_2d_server->init();
-
- //
physics_server = memnew( PhysicsServerSW );
physics_server->init();
//physics_2d_server = memnew( Physics2DServerSW );
diff --git a/platform/android/os_android.h b/platform/android/os_android.h
index 9ed7ba5fac..bf1db57ba5 100644
--- a/platform/android/os_android.h
+++ b/platform/android/os_android.h
@@ -33,31 +33,20 @@
#include "drivers/unix/os_unix.h"
#include "os/main_loop.h"
#include "servers/physics/physics_server_sw.h"
-#include "servers/spatial_sound/spatial_sound_server_sw.h"
-#include "servers/spatial_sound_2d/spatial_sound_2d_server_sw.h"
-#include "servers/audio/audio_server_sw.h"
+#include "servers/audio_server.h"
#include "servers/physics_2d/physics_2d_server_sw.h"
#include "servers/physics_2d/physics_2d_server_wrap_mt.h"
#include "servers/visual/rasterizer.h"
#include "main/input_default.h"
-
-//#ifdef USE_JAVA_FILE_ACCESS
-
+#include "audio_driver_jandroid.h"
+#include "audio_driver_opensl.h"
#ifdef ANDROID_NATIVE_ACTIVITY
-
#include <android/sensor.h>
#include <android/log.h>
#include <android_native_app_glue.h>
-
-#else
-
-
#endif
-#include "audio_driver_jandroid.h"
-#include "audio_driver_opensl.h"
-
typedef void (*GFXInitFunc)(void *ud,bool gl2);
typedef int (*OpenURIFunc)(const String&);
typedef String (*GetDataDirFunc)();
@@ -118,10 +107,6 @@ private:
Rasterizer *rasterizer;
VisualServer *visual_server;
- AudioServerSW *audio_server;
- SampleManagerMallocSW *sample_manager;
- SpatialSoundServerSW *spatial_sound_server;
- SpatialSound2DServerSW *spatial_sound_2d_server;
PhysicsServer *physics_server;
Physics2DServer *physics_2d_server;
diff --git a/platform/bb10/audio_driver_bb10.cpp b/platform/bb10/audio_driver_bb10.cpp
index 7b5c0800a8..b6ea0bc267 100644
--- a/platform/bb10/audio_driver_bb10.cpp
+++ b/platform/bb10/audio_driver_bb10.cpp
@@ -44,7 +44,7 @@ Error AudioDriverBB10::init(const char* p_name) {
samples_out = NULL;
mix_rate = 44100;
- output_format = OUTPUT_STEREO;
+ speaker_mode = SPEAKER_MODE_STEREO;
char* dev_name;
if (p_name == NULL) {
@@ -70,7 +70,7 @@ Error AudioDriverBB10::init(const char* p_name) {
ERR_FAIL_COND_V(!(cinfo.formats & SND_PCM_FMT_S16_LE), FAILED);
printf("voices %i\n", cinfo.max_voices);
- output_format = cinfo.max_voices >= 2 ? OUTPUT_STEREO : OUTPUT_MONO;
+ speaker_mode = SPEAKER_MODE_STEREO;
snd_pcm_channel_params_t cp;
zeromem(&cp, sizeof(cp));
@@ -84,7 +84,7 @@ Error AudioDriverBB10::init(const char* p_name) {
cp.buf.block.frags_min = 1;
cp.format.interleave = 1;
cp.format.rate = mix_rate;
- cp.format.voices = output_format == OUTPUT_MONO ? 1 : 2;
+ cp.format.voices = speaker_mode;
cp.format.format = SND_PCM_SFMT_S16_LE;
ret = snd_pcm_plugin_params(pcm_handle, &cp);
@@ -121,7 +121,7 @@ void AudioDriverBB10::thread_func(void* p_udata) {
AudioDriverBB10* ad = (AudioDriverBB10*)p_udata;
- int channels = (ad->output_format == OUTPUT_MONO ? 1 : 2);
+ int channels = speaker_mode;
int frame_count = ad->sample_buf_count / channels;
int bytes_out = frame_count * channels * 2;
@@ -204,16 +204,18 @@ int AudioDriverBB10::get_mix_rate() const {
return mix_rate;
};
-AudioDriverSW::OutputFormat AudioDriverBB10::get_output_format() const {
+AudioDriver::SpeakerMode AudioDriverBB10::get_speaker_mode() const {
- return output_format;
+ return speaker_mode;
};
+
void AudioDriverBB10::lock() {
if (!thread)
return;
mutex->lock();
};
+
void AudioDriverBB10::unlock() {
if (!thread)
diff --git a/platform/bb10/audio_driver_bb10.h b/platform/bb10/audio_driver_bb10.h
index 738bcf2619..efb98b1b91 100644
--- a/platform/bb10/audio_driver_bb10.h
+++ b/platform/bb10/audio_driver_bb10.h
@@ -26,14 +26,14 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "servers/audio/audio_server_sw.h"
+#include "servers/audio_server.h"
#include "core/os/thread.h"
#include "core/os/mutex.h"
#include <sys/asoundlib.h>
-class AudioDriverBB10 : public AudioDriverSW {
+class AudioDriverBB10 : public AudioDriver {
Thread* thread;
Mutex* mutex;
@@ -47,7 +47,7 @@ class AudioDriverBB10 : public AudioDriverSW {
static void thread_func(void* p_udata);
int mix_rate;
- OutputFormat output_format;
+ SpeakerMode speaker_mode;
int pcm_frag_size;
int pcm_max_frags;
@@ -67,7 +67,7 @@ public:
virtual Error init(const char* p_name);
virtual void start();
virtual int get_mix_rate() const;
- virtual OutputFormat get_output_format() const;
+ virtual SpeakerMode get_speaker_mode() const;
virtual void lock();
virtual void unlock();
virtual void finish();
diff --git a/platform/bb10/bbutil.c b/platform/bb10/bbutil.c
index fce52c5b81..ab3dcf69b2 100644
--- a/platform/bb10/bbutil.c
+++ b/platform/bb10/bbutil.c
@@ -426,7 +426,7 @@ get_window_group_id()
int bbutil_rotate_screen_surface(int angle) {
- int rc, rotation, skip = 1, temp;;
+ int rc, rotation, skip = 1, temp;
EGLint interval = 1;
int size[2];
diff --git a/platform/bb10/bbutil.h b/platform/bb10/bbutil.h
index c2a4c5a7f5..77f4402fbd 100644
--- a/platform/bb10/bbutil.h
+++ b/platform/bb10/bbutil.h
@@ -13,7 +13,11 @@ extern "C" {
extern EGLDisplay egl_disp;
extern EGLSurface egl_surf;
-enum RENDERING_API {GL_ES_1 = EGL_OPENGL_ES_BIT, GL_ES_2 = EGL_OPENGL_ES2_BIT, VG = EGL_OPENVG_BIT};
+enum RENDERING_API {
+ GL_ES_1 = EGL_OPENGL_ES_BIT,
+ GL_ES_2 = EGL_OPENGL_ES2_BIT,
+ VG = EGL_OPENVG_BIT
+};
/**
* Initializes EGL, GL and loads a default font
diff --git a/platform/bb10/os_bb10.cpp b/platform/bb10/os_bb10.cpp
index ea2e326b05..c51f1c6092 100644
--- a/platform/bb10/os_bb10.cpp
+++ b/platform/bb10/os_bb10.cpp
@@ -31,22 +31,21 @@
#include "drivers/gles2/rasterizer_gles2.h"
#include "servers/visual/visual_server_raster.h"
#include "core/os/dir_access.h"
-
#include "core/globals.h"
#include "main/main.h"
#include "bbutil.h"
+#include "core/os/keyboard.h"
+
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>
-#include "core/os/keyboard.h"
-
-#include "bps/bps.h"
-#include "bps/screen.h"
-#include "bps/navigator.h"
-#include "bps/accelerometer.h"
-#include "bps/orientation.h"
-#include "bps/virtualkeyboard.h"
-#include "bps/audiodevice.h"
+#include <bps/bps.h>
+#include <bps/screen.h>
+#include <bps/navigator.h>
+#include <bps/accelerometer.h>
+#include <bps/orientation.h>
+#include <bps/virtualkeyboard.h>
+#include <bps/audiodevice.h>
#ifdef BB10_SCORELOOP_ENABLED
#include "modules/scoreloop/scoreloop_bb10.h"
@@ -141,18 +140,6 @@ void OSBB10::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi
audio_driver->set_singleton();
audio_driver->init(NULL);
- sample_manager = memnew( SampleManagerMallocSW );
- audio_server = memnew( AudioServerSW(sample_manager) );
- audio_server->set_mixer_params(AudioMixerSW::INTERPOLATION_LINEAR,false);
- audio_server->init();
-
- spatial_sound_server = memnew( SpatialSoundServerSW );
- spatial_sound_server->init();
-
- spatial_sound_2d_server = memnew( SpatialSound2DServerSW );
- spatial_sound_2d_server->init();
-
- //
physics_server = memnew( PhysicsServerSW );
physics_server->init();
physics_2d_server = memnew( Physics2DServerSW );
@@ -185,22 +172,12 @@ void OSBB10::finalize() {
memdelete(main_loop);
main_loop=NULL;
- spatial_sound_server->finish();
- memdelete(spatial_sound_server);
- spatial_sound_2d_server->finish();
- memdelete(spatial_sound_2d_server);
-
/*
if (debugger_connection_console) {
memdelete(debugger_connection_console);
}
*/
- memdelete(sample_manager);
-
- audio_server->finish();
- memdelete(audio_server);
-
visual_server->finish();
memdelete(visual_server);
memdelete(rasterizer);
diff --git a/platform/bb10/os_bb10.h b/platform/bb10/os_bb10.h
index 5c484cd120..9cf2091d49 100644
--- a/platform/bb10/os_bb10.h
+++ b/platform/bb10/os_bb10.h
@@ -34,9 +34,7 @@
#include "os/main_loop.h"
#include "main/input_default.h"
#include "servers/physics/physics_server_sw.h"
-#include "servers/spatial_sound/spatial_sound_server_sw.h"
-#include "servers/spatial_sound_2d/spatial_sound_2d_server_sw.h"
-#include "servers/audio/audio_server_sw.h"
+#include "servers/audio_server.h"
#include "servers/physics_2d/physics_2d_server_sw.h"
#include "servers/visual/rasterizer.h"
#include "audio_driver_bb10.h"
@@ -44,8 +42,7 @@
#include <screen/screen.h>
#include <sys/platform.h>
-#include "bps/event.h"
-
+#include <bps/event.h>
#include <stdint.h>
class OSBB10 : public OS_Unix {
@@ -58,11 +55,6 @@ class OSBB10 : public OS_Unix {
Rasterizer *rasterizer;
VisualServer *visual_server;
- //AudioDriverPSP audio_driver_psp;
- AudioServerSW *audio_server;
- SampleManagerMallocSW *sample_manager;
- SpatialSoundServerSW *spatial_sound_server;
- SpatialSound2DServerSW *spatial_sound_2d_server;
PhysicsServer *physics_server;
Physics2DServer *physics_2d_server;
AudioDriverBB10* audio_driver;
diff --git a/platform/haiku/audio_driver_media_kit.cpp b/platform/haiku/audio_driver_media_kit.cpp
index 2af93061f8..c6afe7a261 100644
--- a/platform/haiku/audio_driver_media_kit.cpp
+++ b/platform/haiku/audio_driver_media_kit.cpp
@@ -38,7 +38,7 @@ Error AudioDriverMediaKit::init() {
active = false;
mix_rate = 44100;
- output_format = OUTPUT_STEREO;
+ speaker_mode = SPEAKER_MODE_STEREO;
channels = 2;
int latency = GLOBAL_DEF("audio/output_latency", 25);
@@ -99,8 +99,8 @@ int AudioDriverMediaKit::get_mix_rate() const {
return mix_rate;
}
-AudioDriverSW::OutputFormat AudioDriverMediaKit::get_output_format() const {
- return output_format;
+AudioDriverSW::SpeakerMode AudioDriverMediaKit::get_speaker_mode() const {
+ return speaker_mode;
}
void AudioDriverMediaKit::lock() {
diff --git a/platform/haiku/audio_driver_media_kit.h b/platform/haiku/audio_driver_media_kit.h
index fbf6bc20de..ce760f8dd7 100644
--- a/platform/haiku/audio_driver_media_kit.h
+++ b/platform/haiku/audio_driver_media_kit.h
@@ -26,7 +26,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "servers/audio/audio_server_sw.h"
+#include "servers/audio_server.h"
#ifdef MEDIA_KIT_ENABLED
@@ -36,7 +36,7 @@
#include <kernel/image.h> // needed for image_id
#include <SoundPlayer.h>
-class AudioDriverMediaKit : public AudioDriverSW {
+class AudioDriverMediaKit : public AudioDriver {
Mutex* mutex;
BSoundPlayer* player;
@@ -45,7 +45,7 @@ class AudioDriverMediaKit : public AudioDriverSW {
static void PlayBuffer(void* cookie, void* buffer, size_t size, const media_raw_audio_format& format);
unsigned int mix_rate;
- OutputFormat output_format;
+ SpeakerMode speaker_mode;
unsigned int buffer_size;
int channels;
@@ -60,7 +60,7 @@ public:
virtual Error init();
virtual void start();
virtual int get_mix_rate() const;
- virtual OutputFormat get_output_format() const;
+ virtual SpeakerMode get_speaker_mode() const;
virtual void lock();
virtual void unlock();
virtual void finish();
diff --git a/platform/haiku/os_haiku.cpp b/platform/haiku/os_haiku.cpp
index 176e1b0fbc..9f218aeff4 100644
--- a/platform/haiku/os_haiku.cpp
+++ b/platform/haiku/os_haiku.cpp
@@ -40,7 +40,7 @@
OS_Haiku::OS_Haiku() {
#ifdef MEDIA_KIT_ENABLED
- AudioDriverManagerSW::add_driver(&driver_media_kit);
+ AudioDriverManager::add_driver(&driver_media_kit);
#endif
};
@@ -138,20 +138,11 @@ void OS_Haiku::initialize(const VideoMode& p_desired, int p_video_driver, int p_
//physics_2d_server = Physics2DServerWrapMT::init_server<Physics2DServerSW>();
physics_2d_server->init();
- AudioDriverManagerSW::get_driver(p_audio_driver)->set_singleton();
+ AudioDriverManager::get_driver(p_audio_driver)->set_singleton();
- if (AudioDriverManagerSW::get_driver(p_audio_driver)->init() != OK) {
+ if (AudioDriverManager::get_driver(p_audio_driver)->init() != OK) {
ERR_PRINT("Initializing audio failed.");
}
-
- sample_manager = memnew(SampleManagerMallocSW);
- audio_server = memnew(AudioServerSW(sample_manager));
- audio_server->init();
-
- spatial_sound_server = memnew(SpatialSoundServerSW);
- spatial_sound_server->init();
- spatial_sound_2d_server = memnew(SpatialSound2DServerSW);
- spatial_sound_2d_server->init();
}
void OS_Haiku::finalize() {
@@ -161,17 +152,6 @@ void OS_Haiku::finalize() {
main_loop = NULL;
- spatial_sound_server->finish();
- memdelete(spatial_sound_server);
-
- spatial_sound_2d_server->finish();
- memdelete(spatial_sound_2d_server);
-
- memdelete(sample_manager);
-
- audio_server->finish();
- memdelete(audio_server);
-
visual_server->finish();
memdelete(visual_server);
memdelete(rasterizer);
diff --git a/platform/haiku/os_haiku.h b/platform/haiku/os_haiku.h
index fc873f49ad..531c7a56c3 100644
--- a/platform/haiku/os_haiku.h
+++ b/platform/haiku/os_haiku.h
@@ -34,12 +34,8 @@
#include "servers/visual/rasterizer.h"
#include "servers/physics_server.h"
#include "servers/physics_2d/physics_2d_server_sw.h"
-#include "servers/audio/audio_server_sw.h"
-#include "servers/audio/sample_manager_sw.h"
-#include "servers/spatial_sound/spatial_sound_server_sw.h"
-#include "servers/spatial_sound_2d/spatial_sound_2d_server_sw.h"
+#include "servers/audio_server.h"
#include "main/input_default.h"
-
#include "audio_driver_media_kit.h"
#include "context_gl_haiku.h"
#include "haiku_application.h"
@@ -57,10 +53,6 @@ private:
VideoMode current_video_mode;
PhysicsServer* physics_server;
Physics2DServer* physics_2d_server;
- AudioServerSW* audio_server;
- SampleManagerMallocSW* sample_manager;
- SpatialSoundServerSW* spatial_sound_server;
- SpatialSound2DServerSW* spatial_sound_2d_server;
#ifdef MEDIA_KIT_ENABLED
AudioDriverMediaKit driver_media_kit;
diff --git a/platform/iphone/app_delegate.h b/platform/iphone/app_delegate.h
index 6883692b15..1b2ca42ab6 100644
--- a/platform/iphone/app_delegate.h
+++ b/platform/iphone/app_delegate.h
@@ -30,8 +30,6 @@
#import "gl_view.h"
#import "view_controller.h"
-// Old accelerometer approach deprecated since IOS 7.0
-// Include coremotion for accelerometer, gyroscope and magnetometer access, available since IOS 4.0 but some functionality won't work for anything before IOS 5.0
#import <CoreMotion/CoreMotion.h>
@interface AppDelegate : NSObject <UIApplicationDelegate, GLViewDelegate> {
diff --git a/platform/iphone/app_delegate.mm b/platform/iphone/app_delegate.mm
index 664683ad64..740f1d7edc 100644
--- a/platform/iphone/app_delegate.mm
+++ b/platform/iphone/app_delegate.mm
@@ -284,12 +284,12 @@ static int frame_count = 0;
//glView.autoresizesSubviews = YES;
//[glView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth];
- int backingWidth;
- int backingHeight;
- glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
- glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);
+ int backingWidth;
+ int backingHeight;
+ glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
+ glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);
- iphone_main(backingWidth, backingHeight, gargc, gargv);
+ iphone_main(backingWidth, backingHeight, gargc, gargv);
view_controller = [[ViewController alloc] init];
view_controller.view = glView;
@@ -305,16 +305,6 @@ static int frame_count = 0;
[window makeKeyAndVisible];
//Configure and start accelerometer
-/*
- Old accelerometer approach deprecated since IOS 7.0
-
- last_accel[0] = 0;
- last_accel[1] = 0;
- last_accel[2] = 0;
- [[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0 / kAccelerometerFrequency)];
- [[UIAccelerometer sharedAccelerometer] setDelegate:self];
-*/
-
if (!motionInitialised) {
motionManager = [[CMMotionManager alloc] init];
if (motionManager.deviceMotionAvailable) {
@@ -365,10 +355,10 @@ static int frame_count = 0;
if (motionInitialised) {
///@TODO is this the right place to clean this up?
- [motionManager stopDeviceMotionUpdates];
- [motionManager release];
- motionManager = nil;
- motionInitialised = NO;
+ [motionManager stopDeviceMotionUpdates];
+ [motionManager release];
+ motionManager = nil;
+ motionInitialised = NO;
};
iphone_finish();
@@ -416,16 +406,6 @@ static int frame_count = 0;
};
}
-/*
- Depricated since IOS 7.0
-- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration {
- //Use a basic low-pass filter to only keep the gravity in the accelerometer values
- accel[0] = acceleration.x; // * kFilteringFactor + accel[0] * (1.0 - kFilteringFactor);
- accel[1] = acceleration.y; // * kFilteringFactor + accel[1] * (1.0 - kFilteringFactor);
- accel[2] = acceleration.z; // * kFilteringFactor + accel[2] * (1.0 - kFilteringFactor);
-}
-*/
-
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
#ifdef MODULE_FACEBOOKSCORER_IOS_ENABLED
return [[[FacebookScorer sharedInstance] facebook] handleOpenURL:url];
diff --git a/platform/iphone/audio_driver_iphone.cpp b/platform/iphone/audio_driver_iphone.cpp
index 556576cdc3..eda3897841 100644
--- a/platform/iphone/audio_driver_iphone.cpp
+++ b/platform/iphone/audio_driver_iphone.cpp
@@ -155,8 +155,8 @@ int AudioDriverIphone::get_mix_rate() const {
return 44100;
};
-AudioDriverSW::OutputFormat AudioDriverIphone::get_output_format() const {
- return OUTPUT_STEREO;
+AudioDriver::SpeakerMode AudioDriverIphone::get_speaker_mode() const {
+ return SPEAKER_MODE_STEREO;
};
void AudioDriverIphone::lock() {
diff --git a/platform/iphone/audio_driver_iphone.h b/platform/iphone/audio_driver_iphone.h
index cbcb0cffce..4c0cbfcb22 100644
--- a/platform/iphone/audio_driver_iphone.h
+++ b/platform/iphone/audio_driver_iphone.h
@@ -26,11 +26,12 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "servers/audio/audio_server_sw.h"
+
+#include "servers/audio_server.h"
#include <AudioUnit/AudioUnit.h>
-class AudioDriverIphone : public AudioDriverSW {
+class AudioDriverIphone : public AudioDriver {
AudioComponentInstance audio_unit;
bool active;
@@ -56,7 +57,7 @@ public:
virtual Error init();
virtual void start();
virtual int get_mix_rate() const;
- virtual OutputFormat get_output_format() const;
+ virtual SpeakerMode get_speaker_mode() const;
virtual void lock();
virtual void unlock();
virtual void finish();
diff --git a/platform/iphone/detect.py b/platform/iphone/detect.py
index 88ec83ef7a..20fa45d708 100644
--- a/platform/iphone/detect.py
+++ b/platform/iphone/detect.py
@@ -62,13 +62,13 @@ def configure(env):
env['CCFLAGS'] = string.split('-arch i386 -fobjc-abi-version=2 -fobjc-legacy-dispatch -fmessage-length=0 -fpascal-strings -fasm-blocks -Wall -D__IPHONE_OS_VERSION_MIN_REQUIRED=40100 -isysroot $IPHONESDK -mios-simulator-version-min=4.3 -DCUSTOM_MATRIX_TRANSFORM_H=\\\"build/iphone/matrix4_iphone.h\\\" -DCUSTOM_VECTOR3_TRANSFORM_H=\\\"build/iphone/vector3_iphone.h\\\"')
elif (env["arch"] == "arm64"): # arm64
env["bits"] = "64"
- env['CCFLAGS'] = string.split('-fno-objc-arc -arch arm64 -fmessage-length=0 -fno-strict-aliasing -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -Wno-trigraphs -fpascal-strings -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-shorten-64-to-32 -fvisibility=hidden -Wno-sign-conversion -MMD -MT dependencies -miphoneos-version-min=5.1.1 -isysroot $IPHONESDK')
+ env['CCFLAGS'] = string.split('-fno-objc-arc -arch arm64 -fmessage-length=0 -fno-strict-aliasing -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -Wno-trigraphs -fpascal-strings -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-shorten-64-to-32 -fvisibility=hidden -Wno-sign-conversion -MMD -MT dependencies -miphoneos-version-min=7.0 -isysroot $IPHONESDK')
env.Append(CPPFLAGS=['-DNEED_LONG_INT'])
env.Append(CPPFLAGS=['-DLIBYUV_DISABLE_NEON'])
else: # armv7
env["arch"] = "arm"
env["bits"] = "32"
- env['CCFLAGS'] = string.split('-fno-objc-arc -arch armv7 -fmessage-length=0 -fno-strict-aliasing -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -Wno-trigraphs -fpascal-strings -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-shorten-64-to-32 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -fvisibility=hidden -Wno-sign-conversion -mthumb "-DIBOutlet=__attribute__((iboutlet))" "-DIBOutletCollection(ClassName)=__attribute__((iboutletcollection(ClassName)))" "-DIBAction=void)__attribute__((ibaction)" -miphoneos-version-min=5.1.1 -MMD -MT dependencies -isysroot $IPHONESDK')
+ env['CCFLAGS'] = string.split('-fno-objc-arc -arch armv7 -fmessage-length=0 -fno-strict-aliasing -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -Wno-trigraphs -fpascal-strings -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-shorten-64-to-32 -isysroot $IPHONESDK -fvisibility=hidden -Wno-sign-conversion -mthumb "-DIBOutlet=__attribute__((iboutlet))" "-DIBOutletCollection(ClassName)=__attribute__((iboutletcollection(ClassName)))" "-DIBAction=void)__attribute__((ibaction)" -miphoneos-version-min=7.0 -MMD -MT dependencies -isysroot $IPHONESDK')
if (env["arch"] == "x86"):
env['IPHONEPLATFORM'] = 'iPhoneSimulator'
@@ -94,7 +94,7 @@ def configure(env):
'-F$IPHONESDK',
])
elif (env["arch"] == "arm64"):
- env.Append(LINKFLAGS=['-arch', 'arm64', '-Wl,-dead_strip', '-miphoneos-version-min=5.1.1',
+ env.Append(LINKFLAGS=['-arch', 'arm64', '-Wl,-dead_strip', '-miphoneos-version-min=7.0',
'-isysroot', '$IPHONESDK',
#'-stdlib=libc++',
'-framework', 'Foundation',
@@ -113,7 +113,7 @@ def configure(env):
'-framework', 'CoreMotion',
])
else:
- env.Append(LINKFLAGS=['-arch', 'armv7', '-Wl,-dead_strip', '-miphoneos-version-min=5.1.1',
+ env.Append(LINKFLAGS=['-arch', 'armv7', '-Wl,-dead_strip', '-miphoneos-version-min=7.0',
'-isysroot', '$IPHONESDK',
'-framework', 'Foundation',
'-framework', 'UIKit',
diff --git a/platform/iphone/game_center.mm b/platform/iphone/game_center.mm
index 03ee327d65..de6ea73c20 100644
--- a/platform/iphone/game_center.mm
+++ b/platform/iphone/game_center.mm
@@ -182,11 +182,11 @@ void GameCenter::request_achievement_descriptions() {
ret["type"] = "achievement_descriptions";
if (error == nil) {
ret["result"] = "ok";
- StringArray names;
- StringArray titles;
- StringArray unachieved_descriptions;
- StringArray achieved_descriptions;
- IntArray maximum_points;
+ PoolStringArray names;
+ PoolStringArray titles;
+ PoolStringArray unachieved_descriptions;
+ PoolStringArray achieved_descriptions;
+ PoolIntArray maximum_points;
Array hidden;
Array replayable;
@@ -239,8 +239,8 @@ void GameCenter::request_achievements() {
ret["type"] = "achievements";
if (error == nil) {
ret["result"] = "ok";
- StringArray names;
- RealArray percentages;
+ PoolStringArray names;
+ PoolRealArray percentages;
for (int i=0; i<[achievements count]; i++) {
diff --git a/platform/iphone/gl_view.mm b/platform/iphone/gl_view.mm
index 3df29c5178..a3af8f4aa8 100755
--- a/platform/iphone/gl_view.mm
+++ b/platform/iphone/gl_view.mm
@@ -274,7 +274,7 @@ static void clear_touches() {
nil];
// Create our EAGLContext, and if successful make it current and create our framebuffer.
- context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
+ context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];
if(!context || ![EAGLContext setCurrentContext:context] || ![self createFramebuffer])
{
diff --git a/platform/iphone/icloud.mm b/platform/iphone/icloud.mm
index de70bb7e14..0d1825dd6b 100644
--- a/platform/iphone/icloud.mm
+++ b/platform/iphone/icloud.mm
@@ -78,12 +78,12 @@ Variant nsobject_to_variant(NSObject* object) {
return String::utf8(str != NULL ? str : "");
}
else if ([object isKindOfClass:[NSData class]]) {
- ByteArray ret;
+ PoolByteArray ret;
NSData* data = (NSData*)object;
if ([data length] > 0) {
ret.resize([data length]);
{
- ByteArray::Write w = ret.write();
+ PoolByteArray::Write w = ret.write();
copymem(w.ptr(), [data bytes], [data length]);
}
}
@@ -199,9 +199,9 @@ NSObject* variant_to_nsobject(Variant v) {
}
return result;
}
- else if (v.get_type() == Variant::RAW_ARRAY) {
- ByteArray arr = v;
- ByteArray::Read r = arr.read();
+ else if (v.get_type() == Variant::POOL_BYTE_ARRAY) {
+ PoolByteArray arr = v;
+ PoolByteArray::Read r = arr.read();
NSData* result = [NSData dataWithBytes:r.ptr() length:arr.size()];
return result;
}
@@ -333,7 +333,7 @@ ICloud::ICloud() {
Dictionary ret;
ret["type"] = "key_value_changed";
- //StringArray result_keys;
+ //PoolStringArray result_keys;
//Array result_values;
Dictionary keyValues;
String reason = "";
diff --git a/platform/iphone/in_app_store.mm b/platform/iphone/in_app_store.mm
index 49026ceb0a..050498c125 100644
--- a/platform/iphone/in_app_store.mm
+++ b/platform/iphone/in_app_store.mm
@@ -89,11 +89,11 @@ void InAppStore::_bind_methods() {
Dictionary ret;
ret["type"] = "product_info";
ret["result"] = "ok";
- StringArray titles;
- StringArray descriptions;
- RealArray prices;
- StringArray ids;
- StringArray localized_prices;
+ PoolStringArray titles;
+ PoolStringArray descriptions;
+ PoolRealArray prices;
+ PoolStringArray ids;
+ PoolStringArray localized_prices;
for (int i=0; i<[products count]; i++) {
@@ -114,7 +114,7 @@ void InAppStore::_bind_methods() {
ret["ids"] = ids;
ret["localized_prices"] = localized_prices;
- StringArray invalid_ids;
+ PoolStringArray invalid_ids;
for (NSString* ipid in response.invalidProductIdentifiers) {
@@ -134,7 +134,7 @@ Error InAppStore::request_product_info(Variant p_params) {
Dictionary params = p_params;
ERR_FAIL_COND_V(!params.has("product_ids"), ERR_INVALID_PARAMETER);
- StringArray pids = params["product_ids"];
+ PoolStringArray pids = params["product_ids"];
printf("************ request product info! %i\n", pids.size());
NSMutableArray* array = [[[NSMutableArray alloc] initWithCapacity:pids.size()] autorelease];
diff --git a/platform/iphone/os_iphone.cpp b/platform/iphone/os_iphone.cpp
index 051c562b6a..e34dbae017 100644
--- a/platform/iphone/os_iphone.cpp
+++ b/platform/iphone/os_iphone.cpp
@@ -30,11 +30,9 @@
#include "os_iphone.h"
-#include "drivers/gles2/rasterizer_gles2.h"
-
-
+#include "drivers/gles3/rasterizer_gles3.h"
#include "servers/visual/visual_server_raster.h"
-#include "servers/visual/visual_server_wrap_mt.h"
+//#include "servers/visual/visual_server_wrap_mt.h"
#include "main/main.h"
#include "audio_driver_iphone.h"
@@ -109,16 +107,17 @@ void OSIPhone::initialize(const VideoMode& p_desired,int p_video_driver,int p_au
supported_orientations |= ((GLOBAL_DEF("video_mode/allow_vertical", false)?1:0) << PortraitDown);
supported_orientations |= ((GLOBAL_DEF("video_mode/allow_vertical_flipped", false)?1:0) << PortraitUp);
- rasterizer_gles22 = memnew( RasterizerGLES2(false, false, false) );
- rasterizer = rasterizer_gles22;
- rasterizer_gles22->set_base_framebuffer(gl_view_base_fb);
+ RasterizerGLES3::register_config();
+ RasterizerGLES3::make_current();
+ RasterizerStorageGLES3::system_fbo = gl_view_base_fb;
- visual_server = memnew( VisualServerRaster(rasterizer) );
+ visual_server = memnew( VisualServerRaster() );
+ /*
+ FIXME: Reimplement threaded rendering? Or remove?
if (get_render_thread_mode() != RENDER_THREAD_UNSAFE) {
-
visual_server = memnew(VisualServerWrapMT(visual_server, false));
};
- visual_server->init();
+ */
visual_server->init();
visual_server->cursor_set_visible(false, 0);
@@ -127,16 +126,7 @@ void OSIPhone::initialize(const VideoMode& p_desired,int p_video_driver,int p_au
audio_driver->set_singleton();
audio_driver->init();
- sample_manager = memnew( SampleManagerMallocSW );
- audio_server = memnew( AudioServerSW(sample_manager) );
- audio_server->init();
- spatial_sound_server = memnew( SpatialSoundServerSW );
- spatial_sound_server->init();
-
- spatial_sound_2d_server = memnew( SpatialSound2DServerSW );
- spatial_sound_2d_server->init();
-
- //
+ // init physics servers
physics_server = memnew( PhysicsServerSW );
physics_server->init();
//physics_2d_server = memnew( Physics2DServerSW );
@@ -148,28 +138,28 @@ void OSIPhone::initialize(const VideoMode& p_desired,int p_video_driver,int p_au
/*
#ifdef IOS_SCORELOOP_ENABLED
scoreloop = memnew(ScoreloopIOS);
- Globals::get_singleton()->add_singleton(Globals::Singleton("Scoreloop", scoreloop));
+ GlobalConfig::get_singleton()->add_singleton(GlobalConfig::Singleton("Scoreloop", scoreloop));
scoreloop->connect();
#endif
*/
#ifdef GAME_CENTER_ENABLED
game_center = memnew(GameCenter);
- Globals::get_singleton()->add_singleton(Globals::Singleton("GameCenter", game_center));
+ GlobalConfig::get_singleton()->add_singleton(GlobalConfig::Singleton("GameCenter", game_center));
game_center->connect();
#endif
#ifdef STOREKIT_ENABLED
store_kit = memnew(InAppStore);
- Globals::get_singleton()->add_singleton(Globals::Singleton("InAppStore", store_kit));
+ GlobalConfig::get_singleton()->add_singleton(GlobalConfig::Singleton("InAppStore", store_kit));
#endif
#ifdef ICLOUD_ENABLED
icloud = memnew(ICloud);
- Globals::get_singleton()->add_singleton(Globals::Singleton("ICloud", icloud));
+ GlobalConfig::get_singleton()->add_singleton(GlobalConfig::Singleton("ICloud", icloud));
//icloud->connect();
#endif
- Globals::get_singleton()->add_singleton(Globals::Singleton("iOS", memnew(iOS)));
+ GlobalConfig::get_singleton()->add_singleton(GlobalConfig::Singleton("iOS", memnew(iOS)));
};
MainLoop *OSIPhone::get_main_loop() const {
@@ -294,8 +284,8 @@ void OSIPhone::mouse_move(int p_idx, int p_prev_x, int p_prev_y, int p_x, int p_
};
input->set_mouse_pos(Point2(ev.mouse_motion.x,ev.mouse_motion.y));
- ev.mouse_motion.speed_x=input->get_mouse_speed().x;
- ev.mouse_motion.speed_y=input->get_mouse_speed().y;
+ ev.mouse_motion.speed_x=input->get_last_mouse_speed().x;
+ ev.mouse_motion.speed_y=input->get_last_mouse_speed().y;
ev.mouse_motion.button_mask = 1; // pressed
queue_event(ev);
@@ -394,7 +384,7 @@ void OSIPhone::finalize() {
visual_server->finish();
memdelete(visual_server);
- memdelete(rasterizer);
+// memdelete(rasterizer);
physics_server->finish();
memdelete(physics_server);
@@ -402,14 +392,8 @@ void OSIPhone::finalize() {
physics_2d_server->finish();
memdelete(physics_2d_server);
- spatial_sound_server->finish();
- memdelete(spatial_sound_server);
-
memdelete(input);
- spatial_sound_2d_server->finish();
- memdelete(spatial_sound_2d_server);
-
};
void OSIPhone::set_mouse_show(bool p_show) { };
@@ -456,9 +440,8 @@ bool OSIPhone::can_draw() const {
int OSIPhone::set_base_framebuffer(int p_fb) {
- if (rasterizer_gles22) {
- rasterizer_gles22->set_base_framebuffer(p_fb);
- };
+ RasterizerStorageGLES3::system_fbo = gl_view_base_fb;
+
return 0;
};
@@ -542,7 +525,7 @@ Error OSIPhone::native_video_play(String p_path, float p_volume, String p_audio_
print("Unable to play %S using the native player as it resides in a .pck file\n", p_path.c_str());
return ERR_INVALID_PARAMETER;
} else {
- p_path = p_path.replace("res:/", Globals::get_singleton()->get_resource_path());
+ p_path = p_path.replace("res:/", GlobalConfig::get_singleton()->get_resource_path());
}
} else if (p_path.begins_with("user://"))
p_path = p_path.replace("user:/", get_data_dir());
@@ -579,10 +562,8 @@ void OSIPhone::native_video_stop() {
OSIPhone::OSIPhone(int width, int height) {
- rasterizer_gles22 = NULL;
main_loop = NULL;
visual_server = NULL;
- rasterizer = NULL;
VideoMode vm;
vm.fullscreen = true;
diff --git a/platform/iphone/os_iphone.h b/platform/iphone/os_iphone.h
index ab976edcba..65dcc884bb 100644
--- a/platform/iphone/os_iphone.h
+++ b/platform/iphone/os_iphone.h
@@ -39,10 +39,7 @@
#include "servers/physics/physics_server_sw.h"
#include "servers/physics_2d/physics_2d_server_sw.h"
#include "servers/physics_2d/physics_2d_server_wrap_mt.h"
-#include "servers/audio/audio_server_sw.h"
-#include "servers/audio/sample_manager_sw.h"
-#include "servers/spatial_sound/spatial_sound_server_sw.h"
-#include "servers/spatial_sound_2d/spatial_sound_2d_server_sw.h"
+#include "servers/audio_server.h"
#include "main/input_default.h"
#include "game_center.h"
#include "in_app_store.h"
@@ -50,7 +47,7 @@
class AudioDriverIphone;
-class RasterizerGLES2;
+// class RasterizerGLES2;
class OSIPhone : public OS_Unix {
@@ -71,18 +68,13 @@ private:
uint8_t supported_orientations;
- Rasterizer *rasterizer;
-
- RasterizerGLES2* rasterizer_gles22;
+// Rasterizer *rasterizer;
+// RasterizerGLES2* rasterizer_gles22;
VisualServer *visual_server;
PhysicsServer* physics_server;
Physics2DServer *physics_2d_server;
- AudioServerSW *audio_server;
- SampleManagerMallocSW *sample_manager;
- SpatialSoundServerSW *spatial_sound_server;
- SpatialSound2DServerSW *spatial_sound_2d_server;
AudioDriverIphone* audio_driver;
#ifdef GAME_CENTER_ENABLED
diff --git a/platform/iphone/platform_config.h b/platform/iphone/platform_config.h
index c8468f0152..64e9388910 100644
--- a/platform/iphone/platform_config.h
+++ b/platform/iphone/platform_config.h
@@ -27,8 +27,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include <alloca.h>
-#define GLES2_INCLUDE_H <ES2/gl.h>
-
+// #define GLES2_INCLUDE_H <ES2/gl.h>
+#define GLES3_INCLUDE_H <ES3/gl.h>
#define PLATFORM_REFCOUNT
diff --git a/platform/iphone/rasterizer_iphone.h b/platform/iphone/rasterizer_iphone.h
index cec367e2fa..299a11e895 100644
--- a/platform/iphone/rasterizer_iphone.h
+++ b/platform/iphone/rasterizer_iphone.h
@@ -688,7 +688,7 @@ public:
virtual void multimesh_instance_set_color(RID p_multimesh,int p_index,const Color& p_color);
virtual RID multimesh_get_mesh(RID p_multimesh) const;
- virtual AABB multimesh_get_aabb(RID p_multimesh) const;;
+ virtual AABB multimesh_get_aabb(RID p_multimesh) const;
virtual Transform multimesh_instance_get_transform(RID p_multimesh,int p_index) const;
virtual Color multimesh_instance_get_color(RID p_multimesh,int p_index) const;
@@ -846,7 +846,7 @@ public:
virtual void canvas_begin();
virtual void canvas_set_transparency(float p_transparency);
- virtual void canvas_set_rect(const Rect2& p_rect, bool p_clip);;
+ virtual void canvas_set_rect(const Rect2& p_rect, bool p_clip);
virtual void canvas_draw_line(const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width);
virtual void canvas_draw_rect(const Rect2& p_rect, bool p_region, const Rect2& p_source,bool p_tile,RID p_texture,const Color& p_modulate);
virtual void canvas_draw_style_box(const Rect2& p_rect, RID p_texture,const float *p_margins, bool p_draw_center=true);
diff --git a/platform/javascript/audio_driver_javascript.cpp b/platform/javascript/audio_driver_javascript.cpp
index af9f28169b..bff01d7c37 100644
--- a/platform/javascript/audio_driver_javascript.cpp
+++ b/platform/javascript/audio_driver_javascript.cpp
@@ -27,20 +27,14 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "audio_driver_javascript.h"
-#include <string.h>
-
-
-
-
+#include <string.h>
#define MAX_NUMBER_INTERFACES 3
#define MAX_NUMBER_OUTPUT_DEVICES 6
/* Structure for passing information to callback function */
-
-
//AudioDriverJavaScript* AudioDriverJavaScript::s_ad=NULL;
const char* AudioDriverJavaScript::get_name() const {
@@ -53,19 +47,23 @@ Error AudioDriverJavaScript::init(){
return OK;
}
+
void AudioDriverJavaScript::start(){
}
+
int AudioDriverJavaScript::get_mix_rate() const {
return 44100;
}
-AudioDriverSW::OutputFormat AudioDriverJavaScript::get_output_format() const{
- return OUTPUT_STEREO;
+AudioDriver::SpeakerMode AudioDriverJavaScript::get_speaker_mode() const{
+
+ return SPEAKER_MODE_STEREO;
}
+
void AudioDriverJavaScript::lock(){
/*
@@ -74,6 +72,7 @@ void AudioDriverJavaScript::lock(){
*/
}
+
void AudioDriverJavaScript::unlock() {
/*
@@ -82,11 +81,11 @@ void AudioDriverJavaScript::unlock() {
*/
}
+
void AudioDriverJavaScript::finish(){
}
-
AudioDriverJavaScript::AudioDriverJavaScript()
{
}
diff --git a/platform/javascript/audio_driver_javascript.h b/platform/javascript/audio_driver_javascript.h
index 528b45569d..da146fcdd0 100644
--- a/platform/javascript/audio_driver_javascript.h
+++ b/platform/javascript/audio_driver_javascript.h
@@ -29,11 +29,11 @@
#ifndef AUDIO_DRIVER_JAVASCRIPT_H
#define AUDIO_DRIVER_JAVASCRIPT_H
+#include "servers/audio_server.h"
-#include "servers/audio/audio_server_sw.h"
#include "os/mutex.h"
-class AudioDriverJavaScript : public AudioDriverSW {
+class AudioDriverJavaScript : public AudioDriver {
public:
void set_singleton();
@@ -43,7 +43,7 @@ public:
virtual Error init();
virtual void start();
virtual int get_mix_rate() const ;
- virtual OutputFormat get_output_format() const;
+ virtual SpeakerMode get_speaker_mode() const;
virtual void lock();
virtual void unlock();
virtual void finish();
diff --git a/platform/javascript/audio_server_javascript.cpp b/platform/javascript/audio_server_javascript.cpp
index 5489f179eb..d5940fb102 100644
--- a/platform/javascript/audio_server_javascript.cpp
+++ b/platform/javascript/audio_server_javascript.cpp
@@ -198,14 +198,15 @@ RID AudioServerJavascript::voice_create(){
voice->positional=false;
voice->active=false;
+ /* clang-format off */
EM_ASM_( {
- _as_voices[$0]=null;
- _as_voice_gain[$0]=_as_audioctx.createGain();
- _as_voice_pan[$0]=_as_audioctx.createStereoPanner();
- _as_voice_gain[$0].connect(_as_voice_pan[$0]);
- _as_voice_pan[$0].connect(_as_audioctx.destination);
-
- },voice_base);
+ _as_voices[$0] = null;
+ _as_voice_gain[$0] = _as_audioctx.createGain();
+ _as_voice_pan[$0] = _as_audioctx.createStereoPanner();
+ _as_voice_gain[$0].connect(_as_voice_pan[$0]);
+ _as_voice_pan[$0].connect(_as_audioctx.destination);
+ }, voice_base);
+ /* clang-format on */
voice_base++;
@@ -227,27 +228,29 @@ void AudioServerJavascript::voice_play(RID p_voice, RID p_sample){
//create sample if not created
ERR_FAIL_COND(sample->tmp_data.size()==0);
sample->index=sample_base;
- EM_ASM_( {
- _as_samples[$0]=_as_audioctx.createBuffer($1,$2,$3);
- },sample_base,sample->stereo?2:1,sample->length,sample->mix_rate);
+ /* clang-format off */
+ EM_ASM_({
+ _as_samples[$0] = _as_audioctx.createBuffer($1, $2, $3);
+ }, sample_base, sample->stereo ? 2 : 1, sample->length, sample->mix_rate);
+ /* clang-format on */
sample_base++;
int chans = sample->stereo?2:1;
for(int i=0;i<chans;i++) {
-
-
+ /* clang-format off */
EM_ASM_({
- _as_edited_buffer=_as_samples[$0].getChannelData($1);
- },sample->index,i);
-
+ _as_edited_buffer = _as_samples[$0].getChannelData($1);
+ }, sample->index, i);
+ /* clang-format on */
for(int j=0;j<sample->length;j++) {
-
+ /* clang-format off */
EM_ASM_({
- _as_edited_buffer[$0]=$1;
- },j,sample->tmp_data[j*chans+i]);
+ _as_edited_buffer[$0] = $1;
+ }, j, sample->tmp_data[j * chans + i]);
+ /* clang-format on */
}
}
@@ -263,26 +266,27 @@ void AudioServerJavascript::voice_play(RID p_voice, RID p_sample){
float freq_diff = Math::log(float(voice->mix_rate)/float(voice->sample_mix_rate))/Math::log(2.0);
int detune = int(freq_diff*1200.0);
- EM_ASM_( {
- if (_as_voices[$0]!==null) {
- _as_voices[$0].stop(); //stop and byebye
- }
- _as_voices[$0]=_as_audioctx.createBufferSource();
- _as_voices[$0].connect(_as_voice_gain[$0]);
- _as_voices[$0].buffer=_as_samples[$1];
- _as_voices[$0].loopStart.value=$1;
- _as_voices[$0].loopEnd.value=$2;
- _as_voices[$0].loop.value=$3;
- _as_voices[$0].detune.value=$6;
- _as_voice_pan[$0].pan.value=$4;
- _as_voice_gain[$0].gain.value=$5;
- _as_voices[$0].start();
- _as_voices[$0].onended=function() {
- _as_voices[$0].disconnect(_as_voice_gain[$0]);
- _as_voices[$0]=null;
- }
-
- },voice->index,sample->index,sample->mix_rate*sample->loop_begin,sample->mix_rate*sample->loop_end,sample->loop_format!=SAMPLE_LOOP_NONE,voice->pan,voice->volume*fx_volume_scale,detune);
+ /* clang-format off */
+ EM_ASM_({
+ if (_as_voices[$0] !== null) {
+ _as_voices[$0].stop(); //stop and byebye
+ }
+ _as_voices[$0] = _as_audioctx.createBufferSource();
+ _as_voices[$0].connect(_as_voice_gain[$0]);
+ _as_voices[$0].buffer = _as_samples[$1];
+ _as_voices[$0].loopStart.value = $1;
+ _as_voices[$0].loopEnd.value = $2;
+ _as_voices[$0].loop.value = $3;
+ _as_voices[$0].detune.value = $6;
+ _as_voice_pan[$0].pan.value = $4;
+ _as_voice_gain[$0].gain.value = $5;
+ _as_voices[$0].start();
+ _as_voices[$0].onended = function() {
+ _as_voices[$0].disconnect(_as_voice_gain[$0]);
+ _as_voices[$0] = null;
+ }
+ }, voice->index, sample->index, sample->mix_rate * sample->loop_begin, sample->mix_rate * sample->loop_end, sample->loop_format != SAMPLE_LOOP_NONE, voice->pan, voice->volume * fx_volume_scale, detune);
+ /* clang-format on */
voice->active=true;
}
@@ -295,11 +299,11 @@ void AudioServerJavascript::voice_set_volume(RID p_voice, float p_volume){
voice->volume=p_volume;
if (voice->active) {
- EM_ASM_( {
-
- _as_voice_gain[$0].gain.value=$1;
-
- },voice->index,voice->volume*fx_volume_scale);
+ /* clang-format off */
+ EM_ASM_({
+ _as_voice_gain[$0].gain.value = $1;
+ }, voice->index, voice->volume * fx_volume_scale);
+ /* clang-format on */
}
}
@@ -313,11 +317,11 @@ void AudioServerJavascript::voice_set_pan(RID p_voice, float p_pan, float p_dept
voice->pan_height=height;
if (voice->active) {
- EM_ASM_( {
-
- _as_voice_pan[$0].pan.value=$1;
-
- },voice->index,voice->pan);
+ /* clang-format off */
+ EM_ASM_({
+ _as_voice_pan[$0].pan.value = $1;
+ }, voice->index, voice->pan);
+ /* clang-format on */
}
}
void AudioServerJavascript::voice_set_filter(RID p_voice, FilterType p_type, float p_cutoff, float p_resonance, float p_gain){
@@ -340,11 +344,11 @@ void AudioServerJavascript::voice_set_mix_rate(RID p_voice, int p_mix_rate){
float freq_diff = Math::log(float(voice->mix_rate)/float(voice->sample_mix_rate))/Math::log(2.0);
int detune = int(freq_diff*1200.0);
- EM_ASM_( {
-
- _as_voices[$0].detune.value=$1;
-
- },voice->index,detune);
+ /* clang-format off */
+ EM_ASM_({
+ _as_voices[$0].detune.value = $1;
+ }, voice->index, detune);
+ /* clang-format on */
}
}
void AudioServerJavascript::voice_set_positional(RID p_voice, bool p_positional){
@@ -419,14 +423,15 @@ void AudioServerJavascript::voice_stop(RID p_voice){
ERR_FAIL_COND(!voice);
if (voice->active) {
-
- EM_ASM_( {
- if (_as_voices[$0]!==null) {
- _as_voices[$0].stop();
- _as_voices[$0].disconnect(_as_voice_gain[$0]);
- _as_voices[$0]=null;
- }
- },voice->index);
+ /* clang-format off */
+ EM_ASM_({
+ if (_as_voices[$0] !== null) {
+ _as_voices[$0].stop();
+ _as_voices[$0].disconnect(_as_voice_gain[$0]);
+ _as_voices[$0] = null;
+ }
+ }, voice->index);
+ /* clang-format on */
voice->active=false;
}
@@ -524,22 +529,25 @@ void AudioServerJavascript::free(RID p_id){
ERR_FAIL_COND(!voice);
if (voice->active) {
- EM_ASM_( {
- if (_as_voices[$0]!==null) {
+ /* clang-format off */
+ EM_ASM_({
+ if (_as_voices[$0] !== null) {
_as_voices[$0].stop();
- _as_voices[$0].disconnect(_as_voice_gain[$0]);
+ _as_voices[$0].disconnect(_as_voice_gain[$0]);
}
- },voice->index);
+ }, voice->index);
+ /* clang-format on */
}
- EM_ASM_( {
+ /* clang-format off */
+ EM_ASM_({
delete _as_voices[$0];
_as_voice_gain[$0].disconnect(_as_voice_pan[$0]);
delete _as_voice_gain[$0];
_as_voice_pan[$0].disconnect(_as_audioctx.destination);
delete _as_voice_pan[$0];
-
- },voice->index);
+ }, voice->index);
+ /* clang-format on */
voice_owner.free(p_id);
memdelete(voice);
@@ -549,10 +557,11 @@ void AudioServerJavascript::free(RID p_id){
Sample *sample = sample_owner.get(p_id);
ERR_FAIL_COND(!sample);
- EM_ASM_( {
+ /* clang-format off */
+ EM_ASM_({
delete _as_samples[$0];
-
- },sample->index);
+ }, sample->index);
+ /* clang-format on */
sample_owner.free(p_id);
memdelete(sample);
@@ -594,21 +603,20 @@ void AudioServerJavascript::mix_to_js(int p_frames) {
int tomix=MIN(todo,INTERNAL_BUFFER_SIZE);
driver_process_chunk(tomix);
-
+ /* clang-format off */
EM_ASM_({
-
- var data = HEAPF32.subarray($0/4, $0/4 + $2*2);
+ var data = HEAPF32.subarray($0 / 4, $0 / 4 + $2 * 2);
for (var channel = 0; channel < _as_output_buffer.numberOfChannels; channel++) {
var outputData = _as_output_buffer.getChannelData(channel);
// Loop through samples
for (var sample = 0; sample < $2; sample++) {
// make output equal to the same as the input
- outputData[sample+$1] = data[sample*2+channel];
+ outputData[sample + $1] = data[sample * 2 + channel];
}
}
-
- },internal_buffer,offset,tomix);
+ }, internal_buffer, offset, tomix);
+ /* clang-format on */
todo-=tomix;
offset+=tomix;
@@ -618,9 +626,11 @@ void AudioServerJavascript::mix_to_js(int p_frames) {
void AudioServerJavascript::init(){
/*
+ // clang-format off
EM_ASM(
- console.log('server is '+audio_server);
+ console.log('server is ' + audio_server);
);
+ // clang-format on
*/
@@ -634,19 +644,19 @@ void AudioServerJavascript::init(){
int buffer_latency=16384;
+ /* clang-format off */
EM_ASM_( {
-
_as_script_node = _as_audioctx.createScriptProcessor($0, 0, 2);
_as_script_node.connect(_as_audioctx.destination);
console.log(_as_script_node.bufferSize);
-
_as_script_node.onaudioprocess = function(audioProcessingEvent) {
// The output buffer contains the samples that will be modified and played
_as_output_buffer = audioProcessingEvent.outputBuffer;
audio_server_mix_function(_as_output_buffer.getChannelData(0).length);
}
- },buffer_latency);
+ }, buffer_latency);
+ /* clang-format on */
}
@@ -813,20 +823,24 @@ AudioServerJavascript::AudioServerJavascript() {
singleton=this;
sample_base=1;
voice_base=1;
+ /* clang-format off */
EM_ASM(
- _as_samples={};
- _as_voices={};
- _as_voice_pan={};
- _as_voice_gain={};
+ _as_samples = {};
+ _as_voices = {};
+ _as_voice_pan = {};
+ _as_voice_gain = {};
_as_audioctx = new (window.AudioContext || window.webkitAudioContext)();
audio_server_mix_function = Module.cwrap('audio_server_mix_function', 'void', ['number']);
);
+ /* clang-format on */
+ /* clang-format off */
webaudio_mix_rate = EM_ASM_INT_V(
- return _as_audioctx.sampleRate;
- );
+ return _as_audioctx.sampleRate;
+ );
+ /* clang-format on */
print_line("WEBAUDIO MIX RATE: "+itos(webaudio_mix_rate));
event_voice_scale=1.0;
fx_volume_scale=1.0;
diff --git a/platform/javascript/audio_server_javascript.h b/platform/javascript/audio_server_javascript.h
index 8e61e94dfc..f8c8774e4c 100644
--- a/platform/javascript/audio_server_javascript.h
+++ b/platform/javascript/audio_server_javascript.h
@@ -29,7 +29,6 @@
#ifndef AUDIO_SERVER_JAVASCRIPT_H
#define AUDIO_SERVER_JAVASCRIPT_H
-
#include "servers/audio_server.h"
class AudioServerJavascript : public AudioServer {
diff --git a/platform/javascript/javascript_eval.cpp b/platform/javascript/javascript_eval.cpp
index 7bbe0ae99b..a79e5473c2 100644
--- a/platform/javascript/javascript_eval.cpp
+++ b/platform/javascript/javascript_eval.cpp
@@ -41,6 +41,7 @@ JavaScript *JavaScript::get_singleton() {
Variant JavaScript::eval(const String& p_code, bool p_use_global_exec_context) {
union { int i; double d; char* s; } js_data[4];
+ /* clang-format off */
Variant::Type return_type = static_cast<Variant::Type>(EM_ASM_INT({
var eval_ret;
@@ -49,8 +50,7 @@ Variant JavaScript::eval(const String& p_code, bool p_use_global_exec_context) {
// indirect eval call grants global execution context
var global_eval = eval;
eval_ret = global_eval(UTF8ToString($2));
- }
- else {
+ } else {
eval_ret = eval(UTF8ToString($2));
}
} catch (e) {
@@ -125,6 +125,7 @@ Variant JavaScript::eval(const String& p_code, bool p_use_global_exec_context) {
return 0; // NIL
}, js_data, sizeof *js_data, p_code.utf8().get_data(), p_use_global_exec_context));
+ /* clang-format on */
switch(return_type) {
case Variant::BOOL:
@@ -136,7 +137,9 @@ Variant JavaScript::eval(const String& p_code, bool p_use_global_exec_context) {
case Variant::STRING:
{
String str = String::utf8(js_data->s);
+ /* clang-format off */
EM_ASM_({ _free($0); }, js_data->s);
+ /* clang-format on */
return str;
}
case Variant::VECTOR2:
diff --git a/platform/javascript/javascript_main.cpp b/platform/javascript/javascript_main.cpp
index dc4d80df7b..94320d53c1 100644
--- a/platform/javascript/javascript_main.cpp
+++ b/platform/javascript/javascript_main.cpp
@@ -178,6 +178,7 @@ int main(int argc, char *argv[]) {
//glutSpecialFunc(gears_special);
//mount persistent file system
+ /* clang-format off */
EM_ASM(
FS.mkdir('/userfs');
FS.mount(IDBFS, {}, '/userfs');
@@ -196,6 +197,7 @@ int main(int argc, char *argv[]) {
}
});
);
+ /* clang-format on */
glutMainLoop();
diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp
index fed9598096..317a6676a4 100644
--- a/platform/javascript/os_javascript.cpp
+++ b/platform/javascript/os_javascript.cpp
@@ -27,24 +27,24 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "os_javascript.h"
+
#include "drivers/gles2/rasterizer_gles2.h"
#include "core/io/file_access_buffered_fa.h"
#include "drivers/unix/file_access_unix.h"
#include "drivers/unix/dir_access_unix.h"
-
#include "servers/visual/visual_server_raster.h"
-
#include "main/main.h"
-
#include "core/globals.h"
-#include "stdlib.h"
-#include "emscripten.h"
#include "dom_keys.h"
+#include <stdlib.h>
+#include <emscripten.h>
+
int OS_JavaScript::get_video_driver_count() const {
return 1;
}
+
const char * OS_JavaScript::get_video_driver_name(int p_driver) const {
return "GLES2";
@@ -215,6 +215,7 @@ void OS_JavaScript::initialize(const VideoMode& p_desired,int p_video_driver,int
// find locale, emscripten only sets "C"
char locale_ptr[16];
+ /* clang-format off */
EM_ASM_({
var locale = "";
if (Module.locale) {
@@ -230,14 +231,15 @@ void OS_JavaScript::initialize(const VideoMode& p_desired,int p_video_driver,int
locale = locale.split('.')[0];
stringToUTF8(locale, $0, 16);
}, locale_ptr);
+ /* clang-format on */
setenv("LANG", locale_ptr, true);
print_line("Init Audio");
- AudioDriverManagerSW::add_driver(&audio_driver_javascript);
+ AudioDriverManager::add_driver(&audio_driver_javascript);
if (true) {
- RasterizerGLES2 *rasterizer_gles22=memnew( RasterizerGLES2(false,false,false,false) );;
+ RasterizerGLES2 *rasterizer_gles22=memnew( RasterizerGLES2(false,false,false,false) );
rasterizer_gles22->set_use_framebuffers(false); //not supported by emscripten
if (gl_extensions)
rasterizer_gles22->set_extensions(gl_extensions);
@@ -259,27 +261,6 @@ void OS_JavaScript::initialize(const VideoMode& p_desired,int p_video_driver,int
ERR_PRINT("Initializing audio failed.");
}*/
- print_line("Init SM");
-
- //sample_manager = memnew( SampleManagerMallocSW );
- audio_server = memnew( AudioServerJavascript );
-
- print_line("Init Mixer");
-
- //audio_server->set_mixer_params(AudioMixerSW::INTERPOLATION_LINEAR,false);
- audio_server->init();
-
- print_line("Init SoundServer");
-
- spatial_sound_server = memnew( SpatialSoundServerSW );
- spatial_sound_server->init();
-
- print_line("Init SpatialSoundServer");
-
- spatial_sound_2d_server = memnew( SpatialSound2DServerSW );
- spatial_sound_2d_server->init();
-
- //
print_line("Init Physicsserver");
physics_server = memnew( PhysicsServerSW );
@@ -332,9 +313,11 @@ void OS_JavaScript::finalize() {
void OS_JavaScript::alert(const String& p_alert,const String& p_title) {
+ /* clang-format off */
EM_ASM_({
window.alert(UTF8ToString($0));
}, p_alert.utf8().get_data());
+ /* clang-format on */
}
@@ -366,9 +349,11 @@ int OS_JavaScript::get_mouse_button_state() const {
void OS_JavaScript::set_window_title(const String& p_title) {
+ /* clang-format off */
EM_ASM_({
document.title = UTF8ToString($0);
}, p_title.utf8().get_data());
+ /* clang-format on */
}
//interesting byt not yet
@@ -424,8 +409,10 @@ void OS_JavaScript::set_window_maximized(bool p_enabled) {
set_window_fullscreen(false);
}
else {
+ /* clang-format off */
video_mode.width = EM_ASM_INT_V(return window.innerWidth);
video_mode.height = EM_ASM_INT_V(return window.innerHeight);
+ /* clang-format on */
emscripten_set_canvas_size(video_mode.width, video_mode.height);
}
}
@@ -444,7 +431,9 @@ void OS_JavaScript::set_window_fullscreen(bool p_enable) {
// _browser_resize_callback or _fullscreen_change_callback
EMSCRIPTEN_RESULT result;
if (p_enable) {
+ /* clang-format off */
EM_ASM(Module.requestFullscreen(false, false););
+ /* clang-format on */
}
else {
result = emscripten_exit_fullscreen();
@@ -504,11 +493,13 @@ bool OS_JavaScript::main_loop_iterate() {
if (time_to_save_sync<0) {
//time to sync, for real
+ /* clang-format off */
EM_ASM(
FS.syncfs(function(err) {
if (err) { Module.printErr('Failed to save IDB file system: ' + err.message); }
});
);
+ /* clang-format on */
}
@@ -785,9 +776,11 @@ void OS_JavaScript::reload_gfx() {
}
Error OS_JavaScript::shell_open(String p_uri) {
+ /* clang-format off */
EM_ASM_({
window.open(UTF8ToString($0), '_blank');
}, p_uri.utf8().get_data());
+ /* clang-format on */
return OK;
}
diff --git a/platform/javascript/os_javascript.h b/platform/javascript/os_javascript.h
index 370322e93d..d11494a8aa 100644
--- a/platform/javascript/os_javascript.h
+++ b/platform/javascript/os_javascript.h
@@ -35,15 +35,16 @@
#include "servers/physics/physics_server_sw.h"
#include "servers/spatial_sound/spatial_sound_server_sw.h"
#include "servers/spatial_sound_2d/spatial_sound_2d_server_sw.h"
-#include "servers/audio/audio_server_sw.h"
+#include "servers/audio_server.h"
#include "servers/physics_2d/physics_2d_server_sw.h"
#include "servers/visual/rasterizer.h"
#include "audio_server_javascript.h"
#include "audio_driver_javascript.h"
#include "main/input_default.h"
-#include "emscripten/html5.h"
#include "javascript_eval.h"
+#include <emscripten/html5.h>
+
typedef void (*GFXInitFunc)(void *ud,bool gl2,int w, int h, bool fs);
typedef String (*GetDataDirFunc)();
@@ -71,10 +72,6 @@ private:
Rasterizer *rasterizer;
VisualServer *visual_server;
- AudioServerJavascript *audio_server;
- //SampleManagerMallocSW *sample_manager;
- SpatialSoundServerSW *spatial_sound_server;
- SpatialSound2DServerSW *spatial_sound_2d_server;
PhysicsServer *physics_server;
Physics2DServer *physics_2d_server;
AudioDriverJavaScript audio_driver_javascript;
diff --git a/platform/osx/audio_driver_osx.cpp b/platform/osx/audio_driver_osx.cpp
index 87901f6ec4..4ad3a5b8fc 100644
--- a/platform/osx/audio_driver_osx.cpp
+++ b/platform/osx/audio_driver_osx.cpp
@@ -157,8 +157,8 @@ int AudioDriverOSX::get_mix_rate() const {
return 44100;
};
-AudioDriverSW::OutputFormat AudioDriverOSX::get_output_format() const {
- return OUTPUT_STEREO;
+AudioDriver::SpeakerMode AudioDriverOSX::get_speaker_mode() const {
+ return SPEAKER_MODE_STEREO;
};
void AudioDriverOSX::lock() {
diff --git a/platform/osx/audio_driver_osx.h b/platform/osx/audio_driver_osx.h
index 19b396de57..9e9bb63726 100644
--- a/platform/osx/audio_driver_osx.h
+++ b/platform/osx/audio_driver_osx.h
@@ -31,11 +31,11 @@
#ifndef AUDIO_DRIVER_OSX_H
#define AUDIO_DRIVER_OSX_H
-#include "servers/audio/audio_server_sw.h"
+#include "servers/audio_server.h"
#include <AudioUnit/AudioUnit.h>
-class AudioDriverOSX : public AudioDriverSW {
+class AudioDriverOSX : public AudioDriver {
AudioComponentInstance audio_unit;
bool active;
@@ -61,7 +61,7 @@ public:
virtual Error init();
virtual void start();
virtual int get_mix_rate() const;
- virtual OutputFormat get_output_format() const;
+ virtual SpeakerMode get_speaker_mode() const;
virtual void lock();
virtual void unlock();
virtual void finish();
diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h
index f6559f1f7a..d8c35472f2 100644
--- a/platform/osx/os_osx.h
+++ b/platform/osx/os_osx.h
@@ -38,10 +38,7 @@
// #include "servers/visual/visual_server_wrap_mt.h"
#include "servers/visual/rasterizer.h"
#include "servers/physics_server.h"
-#include "servers/audio/audio_server_sw.h"
-#include "servers/audio/sample_manager_sw.h"
-#include "servers/spatial_sound/spatial_sound_server_sw.h"
-#include "servers/spatial_sound_2d/spatial_sound_2d_server_sw.h"
+#include "servers/audio_server.h"
#include "drivers/rtaudio/audio_driver_rtaudio.h"
#include "drivers/alsa/audio_driver_alsa.h"
#include "servers/physics_2d/physics_2d_server_sw.h"
@@ -72,10 +69,6 @@ public:
IP_Unix *ip_unix;
AudioDriverOSX audio_driver_osx;
- AudioServerSW *audio_server;
- SampleManagerMallocSW *sample_manager;
- SpatialSoundServerSW *spatial_sound_server;
- SpatialSound2DServerSW *spatial_sound_2d_server;
InputDefault *input;
JoypadOSX *joypad_osx;
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm
index 5750e19c87..854ccacbf1 100644
--- a/platform/osx/os_osx.mm
+++ b/platform/osx/os_osx.mm
@@ -1083,7 +1083,7 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi
- AudioDriverManagerSW::add_driver(&audio_driver_osx);
+ AudioDriverManager::add_driver(&audio_driver_osx);
// only opengl support here...
RasterizerGLES3::register_config();
@@ -1102,25 +1102,13 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi
visual_server->init();
visual_server->cursor_set_visible(false, 0);
- AudioDriverManagerSW::get_driver(p_audio_driver)->set_singleton();
+ AudioDriverManager::get_driver(p_audio_driver)->set_singleton();
- if (AudioDriverManagerSW::get_driver(p_audio_driver)->init()!=OK) {
+ if (AudioDriverManager::get_driver(p_audio_driver)->init()!=OK) {
ERR_PRINT("Initializing audio failed.");
}
- sample_manager = memnew( SampleManagerMallocSW );
- audio_server = memnew( AudioServerSW(sample_manager) );
-
- audio_server->set_mixer_params(AudioMixerSW::INTERPOLATION_LINEAR,false);
- audio_server->init();
-
- spatial_sound_server = memnew( SpatialSoundServerSW );
- spatial_sound_server->init();
-
- spatial_sound_2d_server = memnew( SpatialSound2DServerSW );
- spatial_sound_2d_server->init();
-
//
physics_server = memnew( PhysicsServerSW );
physics_server->init();
@@ -1167,19 +1155,9 @@ void OS_OSX::finalize() {
CFNotificationCenterRemoveObserver(CFNotificationCenterGetDistributedCenter(), NULL, kTISNotifySelectedKeyboardInputSourceChanged, NULL);
delete_main_loop();
- spatial_sound_server->finish();
- memdelete(spatial_sound_server);
- spatial_sound_2d_server->finish();
- memdelete(spatial_sound_2d_server);
-
memdelete(joypad_osx);
memdelete(input);
- memdelete(sample_manager);
-
- audio_server->finish();
- memdelete(audio_server);
-
visual_server->finish();
memdelete(visual_server);
//memdelete(rasterizer);
diff --git a/platform/server/os_server.cpp b/platform/server/os_server.cpp
index 6b91a5ce77..d691ae35bd 100644
--- a/platform/server/os_server.cpp
+++ b/platform/server/os_server.cpp
@@ -61,9 +61,9 @@ void OS_Server::initialize(const VideoMode& p_desired,int p_video_driver,int p_a
//visual_server = memnew( VisualServerRaster(rasterizer) );
- AudioDriverManagerSW::get_driver(p_audio_driver)->set_singleton();
+ AudioDriverManager::get_driver(p_audio_driver)->set_singleton();
- if (AudioDriverManagerSW::get_driver(p_audio_driver)->init()!=OK) {
+ if (AudioDriverManager::get_driver(p_audio_driver)->init()!=OK) {
ERR_PRINT("Initializing audio failed.");
}
@@ -237,7 +237,7 @@ void OS_Server::run() {
OS_Server::OS_Server() {
- AudioDriverManagerSW::add_driver(&driver_dummy);
+ AudioDriverManager::add_driver(&driver_dummy);
//adriver here
grab=false;
diff --git a/platform/server/os_server.h b/platform/server/os_server.h
index f7fe586b1b..2b6225c48d 100644
--- a/platform/server/os_server.h
+++ b/platform/server/os_server.h
@@ -29,17 +29,13 @@
#ifndef OS_SERVER_H
#define OS_SERVER_H
-
#include "main/input_default.h"
#include "drivers/unix/os_unix.h"
#include "servers/visual_server.h"
#include "servers/visual/rasterizer.h"
#include "servers/audio/audio_driver_dummy.h"
#include "servers/physics_server.h"
-#include "servers/audio/audio_server_sw.h"
-#include "servers/audio/sample_manager_sw.h"
-#include "servers/spatial_sound/spatial_sound_server_sw.h"
-#include "servers/spatial_sound_2d/spatial_sound_2d_server_sw.h"
+#include "servers/audio_server.h"
#include "drivers/rtaudio/audio_driver_rtaudio.h"
#include "servers/physics_2d/physics_2d_server_sw.h"
@@ -66,11 +62,6 @@ class OS_Server : public OS_Unix {
virtual void delete_main_loop();
IP_Unix *ip_unix;
- AudioServerSW *audio_server;
- SampleManagerMallocSW *sample_manager;
- SpatialSoundServerSW *spatial_sound_server;
- SpatialSound2DServerSW *spatial_sound_2d_server;
-
bool force_quit;
InputDefault *input;
diff --git a/platform/uwp/app.h b/platform/uwp/app.h
index 6df9c5699e..fd6fc950a7 100644
--- a/platform/uwp/app.h
+++ b/platform/uwp/app.h
@@ -32,38 +32,41 @@
#include <wrl.h>
-#include "os_uwp.h"
#include "GLES2/gl2.h"
+#include "os_uwp.h"
+
+/** clang-format does not play nice with this C++/CX hybrid, needs investigation. */
+/* clang-format off */
namespace GodotUWP
{
- ref class App sealed : public Windows::ApplicationModel::Core::IFrameworkView
- {
- public:
- App();
-
- // IFrameworkView Methods.
- virtual void Initialize(Windows::ApplicationModel::Core::CoreApplicationView^ applicationView);
- virtual void SetWindow(Windows::UI::Core::CoreWindow^ window);
- virtual void Load(Platform::String^ entryPoint);
- virtual void Run();
- virtual void Uninitialize();
+ ref class App sealed : public Windows::ApplicationModel::Core::IFrameworkView
+ {
+ public:
+ App();
+
+ // IFrameworkView Methods.
+ virtual void Initialize(Windows::ApplicationModel::Core::CoreApplicationView^ applicationView);
+ virtual void SetWindow(Windows::UI::Core::CoreWindow^ window);
+ virtual void Load(Platform::String^ entryPoint);
+ virtual void Run();
+ virtual void Uninitialize();
property Windows::Foundation::EventRegistrationToken MouseMovedToken {
- Windows::Foundation::EventRegistrationToken get() { return this->mouseMovedToken; }
- void set(Windows::Foundation::EventRegistrationToken p_token) { this->mouseMovedToken = p_token; }
- };
+ Windows::Foundation::EventRegistrationToken get() { return this->mouseMovedToken; }
+ void set(Windows::Foundation::EventRegistrationToken p_token) { this->mouseMovedToken = p_token; }
+ }
- private:
+ private:
void RecreateRenderer();
- // Application lifecycle event handlers.
- void OnActivated(Windows::ApplicationModel::Core::CoreApplicationView^ applicationView, Windows::ApplicationModel::Activation::IActivatedEventArgs^ args);
+ // Application lifecycle event handlers.
+ void OnActivated(Windows::ApplicationModel::Core::CoreApplicationView^ applicationView, Windows::ApplicationModel::Activation::IActivatedEventArgs^ args);
- // Window event handlers.
- void OnWindowSizeChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::WindowSizeChangedEventArgs^ args);
- void OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args);
- void OnWindowClosed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::CoreWindowEventArgs^ args);
+ // Window event handlers.
+ void OnWindowSizeChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::WindowSizeChangedEventArgs^ args);
+ void OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args);
+ void OnWindowClosed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::CoreWindowEventArgs^ args);
void pointer_event(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args, bool p_pressed, bool p_is_wheel = false);
void OnPointerPressed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
@@ -81,20 +84,20 @@ namespace GodotUWP
void OnKeyUp(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args);
void OnCharacterReceived(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::CharacterReceivedEventArgs^ args);
- void UpdateWindowSize(Windows::Foundation::Size size);
- void InitializeEGL(Windows::UI::Core::CoreWindow^ window);
- void CleanupEGL();
+ void UpdateWindowSize(Windows::Foundation::Size size);
+ void InitializeEGL(Windows::UI::Core::CoreWindow^ window);
+ void CleanupEGL();
char** get_command_line(unsigned int* out_argc);
- bool mWindowClosed;
- bool mWindowVisible;
- GLsizei mWindowWidth;
- GLsizei mWindowHeight;
+ bool mWindowClosed;
+ bool mWindowVisible;
+ GLsizei mWindowWidth;
+ GLsizei mWindowHeight;
- EGLDisplay mEglDisplay;
- EGLContext mEglContext;
- EGLSurface mEglSurface;
+ EGLDisplay mEglDisplay;
+ EGLContext mEglContext;
+ EGLSurface mEglSurface;
CoreWindow^ window;
OSUWP* os;
@@ -103,6 +106,7 @@ namespace GodotUWP
int last_touch_y[32];
int number_of_contacts;
Windows::Foundation::Point last_mouse_pos;
- };
-
+ }
}
+
+/* clang-format on */
diff --git a/platform/uwp/export/export.cpp b/platform/uwp/export/export.cpp
index 4648384480..f31c91ef6d 100644
--- a/platform/uwp/export/export.cpp
+++ b/platform/uwp/export/export.cpp
@@ -618,9 +618,7 @@ void AppxPackager::make_content_types() {
types[ext] = content_type(ext);
- tmp_file->store_string("<Default Extension=\"" + ext +
- "\" ContentType=\""
- + types[ext] + "\" />");
+ tmp_file->store_string("<Default Extension=\"" + ext + "\" ContentType=\"" + types[ext] + "\" />");
}
// Appx signature file
@@ -1174,9 +1172,9 @@ Error AppxPackager::MakeIndirectDataContent(asn1::SPCIndirectDataContent &idc) {
MakeSPCInfoValue(*infoValue);
ASN1_TYPE* value =
- EncodedASN1::FromItem<asn1::SPCInfoValue,
- asn1::i2d_SPCInfoValue>(infoValue)
- .ToSequenceType();
+ EncodedASN1::FromItem<asn1::SPCInfoValue,
+ asn1::i2d_SPCInfoValue>(infoValue)
+ .ToSequenceType();
{
Vector<uint8_t> digest;
@@ -1202,8 +1200,10 @@ Error AppxPackager::add_attributes(PKCS7_SIGNER_INFO * p_signer_info) {
asn1::SPCSpOpusInfo* opus = asn1::SPCSpOpusInfo_new();
if (!opus) return openssl_error(ERR_peek_last_error());
- ASN1_STRING* opus_value = EncodedASN1::FromItem<asn1::SPCSpOpusInfo, asn1::i2d_SPCSpOpusInfo>(opus)
- .ToSequenceString();
+ ASN1_STRING* opus_value =
+ EncodedASN1::FromItem<asn1::SPCSpOpusInfo,
+ asn1::i2d_SPCSpOpusInfo>(opus)
+ .ToSequenceString();
if (!PKCS7_add_signed_attribute(
p_signer_info,
@@ -1237,8 +1237,9 @@ Error AppxPackager::add_attributes(PKCS7_SIGNER_INFO * p_signer_info) {
statement_type->type = OBJ_nid2obj(NID_ms_code_ind);
ASN1_STRING* statement_type_value =
- EncodedASN1::FromItem<asn1::SPCStatementType, asn1::i2d_SPCStatementType>(statement_type)
- .ToSequenceString();
+ EncodedASN1::FromItem<asn1::SPCStatementType,
+ asn1::i2d_SPCStatementType>(statement_type)
+ .ToSequenceString();
if (!PKCS7_add_signed_attribute(
p_signer_info,
diff --git a/platform/uwp/joypad_uwp.h b/platform/uwp/joypad_uwp.h
index 90505b409a..5d81ac44c0 100644
--- a/platform/uwp/joypad_uwp.h
+++ b/platform/uwp/joypad_uwp.h
@@ -33,10 +33,12 @@
ref class JoypadUWP sealed {
+ /** clang-format breaks this, it does not understand this token. */
+ /* clang-format off */
internal:
-
void register_events();
uint32_t process_controllers(uint32_t p_last_id);
+ /* clang-format on */
JoypadUWP();
JoypadUWP(InputDefault* p_input);
diff --git a/platform/uwp/os_uwp.cpp b/platform/uwp/os_uwp.cpp
index 9dd745716e..90c21e11a1 100644
--- a/platform/uwp/os_uwp.cpp
+++ b/platform/uwp/os_uwp.cpp
@@ -36,16 +36,12 @@
#include "main/main.h"
#include "drivers/windows/file_access_windows.h"
#include "drivers/windows/dir_access_windows.h"
-
-
#include "servers/visual/visual_server_raster.h"
-#include "servers/audio/audio_server_sw.h"
-#include "servers/visual/visual_server_wrap_mt.h"
-
+#include "servers/audio_server.h"
+//#include "servers/visual/visual_server_wrap_mt.h"
#include "os/memory_pool_dynamic_prealloc.h"
#include "globals.h"
#include "io/marshalls.h"
-
#include "platform/windows/packet_peer_udp_winsock.h"
#include "platform/windows/stream_peer_winsock.h"
#include "platform/windows/tcp_server_winsock.h"
@@ -145,13 +141,14 @@ void OSUWP::set_keep_screen_on(bool p_enabled) {
int OSUWP::get_audio_driver_count() const {
- return AudioDriverManagerSW::get_driver_count();
+ return AudioDriverManager::get_driver_count();
}
+
const char * OSUWP::get_audio_driver_name(int p_driver) const {
- AudioDriverSW* driver = AudioDriverManagerSW::get_driver(p_driver);
+ AudioDriver* driver = AudioDriverManager::get_driver(p_driver);
ERR_FAIL_COND_V( !driver, "" );
- return AudioDriverManagerSW::get_driver(p_driver)->get_name();
+ return AudioDriverManager::get_driver(p_driver)->get_name();
}
static MemoryPoolStatic *mempool_static=NULL;
@@ -288,23 +285,13 @@ void OSUWP::initialize(const VideoMode& p_desired,int p_video_driver,int p_audio
joypad = ref new JoypadUWP(input);
joypad->register_events();
- AudioDriverManagerSW::get_driver(p_audio_driver)->set_singleton();
+ AudioDriverManager::get_driver(p_audio_driver)->set_singleton();
- if (AudioDriverManagerSW::get_driver(p_audio_driver)->init()!=OK) {
+ if (AudioDriverManager::get_driver(p_audio_driver)->init()!=OK) {
ERR_PRINT("Initializing audio failed.");
}
- sample_manager = memnew( SampleManagerMallocSW );
- audio_server = memnew( AudioServerSW(sample_manager) );
-
- audio_server->init();
-
- spatial_sound_server = memnew( SpatialSoundServerSW );
- spatial_sound_server->init();
- spatial_sound_2d_server = memnew( SpatialSound2DServerSW );
- spatial_sound_2d_server->init();
-
managed_object->update_clipboard();
Clipboard::ContentChanged += ref new EventHandler<Platform::Object^>(managed_object, &ManagedType::on_clipboard_changed);
@@ -407,22 +394,12 @@ void OSUWP::finalize() {
if (rasterizer)
memdelete(rasterizer);
- spatial_sound_server->finish();
- memdelete(spatial_sound_server);
- spatial_sound_2d_server->finish();
- memdelete(spatial_sound_2d_server);
-
/*
if (debugger_connection_console) {
memdelete(debugger_connection_console);
}
*/
- memdelete(sample_manager);
-
- audio_server->finish();
- memdelete(audio_server);
-
memdelete(input);
physics_server->finish();
@@ -971,7 +948,7 @@ OSUWP::OSUWP() {
mouse_mode_changed = CreateEvent(NULL, TRUE, FALSE, L"os_mouse_mode_changed");
- AudioDriverManagerSW::add_driver(&audio_driver);
+ AudioDriverManager::add_driver(&audio_driver);
}
diff --git a/platform/uwp/os_uwp.h b/platform/uwp/os_uwp.h
index 82376dd2f6..f65aa2d8d9 100644
--- a/platform/uwp/os_uwp.h
+++ b/platform/uwp/os_uwp.h
@@ -34,28 +34,19 @@
#include "servers/visual_server.h"
#include "servers/visual/rasterizer.h"
#include "servers/physics/physics_server_sw.h"
-
-#include "servers/audio/audio_server_sw.h"
-#include "servers/audio/sample_manager_sw.h"
-#include "servers/spatial_sound/spatial_sound_server_sw.h"
-#include "servers/spatial_sound_2d/spatial_sound_2d_server_sw.h"
+#include "servers/audio_server.h"
#include "servers/physics_2d/physics_2d_server_sw.h"
#include "drivers/xaudio2/audio_driver_xaudio2.h"
-
#include "gl_context_egl.h"
-
#include "core/math/math_2d.h"
#include "core/ustring.h"
+#include "main/input_default.h"
+#include "joypad_uwp.h"
#include <windows.h>
-
#include <io.h>
-
#include <fcntl.h>
#include <stdio.h>
-#include "main/input_default.h"
-
-#include "joypad_uwp.h"
/**
@author Juan Linietsky <reduzio@gmail.com>
@@ -119,10 +110,6 @@ private:
MainLoop *main_loop;
AudioDriverXAudio2 audio_driver;
- AudioServerSW *audio_server;
- SampleManagerMallocSW *sample_manager;
- SpatialSoundServerSW *spatial_sound_server;
- SpatialSound2DServerSW *spatial_sound_2d_server;
MouseMode mouse_mode;
bool alt_mem;
@@ -157,9 +144,12 @@ private:
void on_magnetometer_reading_changed(Windows::Devices::Sensors::Magnetometer^ sender, Windows::Devices::Sensors::MagnetometerReadingChangedEventArgs^ args);
void on_gyroscope_reading_changed(Windows::Devices::Sensors::Gyrometer^ sender, Windows::Devices::Sensors::GyrometerReadingChangedEventArgs^ args);
+ /** clang-format breaks this, it does not understand this token. */
+ /* clang-format off */
internal:
ManagedType() { alert_close_handle = false; }
property OSUWP* os;
+ /* clang-format on */
};
ManagedType^ managed_object;
Windows::Devices::Sensors::Accelerometer^ accelerometer;
diff --git a/platform/windows/joypad.cpp b/platform/windows/joypad.cpp
index 6ea23ebb28..f2848268fc 100644
--- a/platform/windows/joypad.cpp
+++ b/platform/windows/joypad.cpp
@@ -249,7 +249,7 @@ BOOL CALLBACK JoypadWindows::enumCallback(const DIDEVICEINSTANCE* instance, void
JoypadWindows* self = (JoypadWindows*)pContext;
- if (self->is_xinput_device(&instance->guidProduct)) {;
+ if (self->is_xinput_device(&instance->guidProduct)) {
return DIENUM_CONTINUE;
}
self->setup_dinput_joypad(instance);
diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp
index 8910b23a2e..d1d769adf7 100644
--- a/platform/windows/os_windows.cpp
+++ b/platform/windows/os_windows.cpp
@@ -30,30 +30,25 @@
#include "os_windows.h"
#include "drivers/gles3/rasterizer_gles3.h"
-
#include "drivers/windows/thread_windows.h"
#include "drivers/windows/semaphore_windows.h"
#include "drivers/windows/mutex_windows.h"
#include "drivers/windows/rw_lock_windows.h"
-#include "main/main.h"
#include "drivers/windows/file_access_windows.h"
#include "drivers/windows/dir_access_windows.h"
-
-
#include "servers/visual/visual_server_raster.h"
-#include "servers/audio/audio_server_sw.h"
+#include "servers/audio_server.h"
//#include "servers/visual/visual_server_wrap_mt.h"
-
+#include "main/main.h"
#include "tcp_server_winsock.h"
#include "packet_peer_udp_winsock.h"
#include "stream_peer_winsock.h"
#include "lang_table.h"
-
#include "globals.h"
#include "io/marshalls.h"
#include "joypad.h"
-#include "shlobj.h"
+#include <shlobj.h>
#include <regstr.h>
#include <process.h>
@@ -158,13 +153,13 @@ OS::VideoMode OS_Windows::get_default_video_mode() const {
int OS_Windows::get_audio_driver_count() const {
- return AudioDriverManagerSW::get_driver_count();
+ return AudioDriverManager::get_driver_count();
}
const char * OS_Windows::get_audio_driver_name(int p_driver) const {
- AudioDriverSW* driver = AudioDriverManagerSW::get_driver(p_driver);
+ AudioDriver* driver = AudioDriverManager::get_driver(p_driver);
ERR_FAIL_COND_V( !driver, "" );
- return AudioDriverManagerSW::get_driver(p_driver)->get_name();
+ return AudioDriverManager::get_driver(p_driver)->get_name();
}
@@ -1124,23 +1119,13 @@ void OS_Windows::initialize(const VideoMode& p_desired,int p_video_driver,int p_
input = memnew( InputDefault );
joypad = memnew (JoypadWindows(input, &hWnd));
- AudioDriverManagerSW::get_driver(p_audio_driver)->set_singleton();
+ AudioDriverManager::get_driver(p_audio_driver)->set_singleton();
- if (AudioDriverManagerSW::get_driver(p_audio_driver)->init()!=OK) {
+ if (AudioDriverManager::get_driver(p_audio_driver)->init()!=OK) {
ERR_PRINT("Initializing audio failed.");
}
- sample_manager = memnew( SampleManagerMallocSW );
- audio_server = memnew( AudioServerSW(sample_manager) );
-
- audio_server->init();
-
- spatial_sound_server = memnew( SpatialSoundServerSW );
- spatial_sound_server->init();
- spatial_sound_2d_server = memnew( SpatialSound2DServerSW );
- spatial_sound_2d_server->init();
-
TRACKMOUSEEVENT tme;
tme.cbSize=sizeof(TRACKMOUSEEVENT);
tme.dwFlags=TME_LEAVE;
@@ -1271,22 +1256,12 @@ void OS_Windows::finalize() {
SetWindowLongPtr(hWnd, GWLP_WNDPROC, (LONG_PTR)user_proc);
};
- spatial_sound_server->finish();
- memdelete(spatial_sound_server);
- spatial_sound_2d_server->finish();
- memdelete(spatial_sound_2d_server);
-
/*
if (debugger_connection_console) {
memdelete(debugger_connection_console);
}
*/
- memdelete(sample_manager);
-
- audio_server->finish();
- memdelete(audio_server);
-
physics_server->finish();
memdelete(physics_server);
@@ -1325,18 +1300,10 @@ void OS_Windows::vprint(const char* p_format, va_list p_list, bool p_stderr) {
MultiByteToWideChar(CP_UTF8,0,buf,len,wbuf,wlen);
wbuf[wlen]=0;
-// Recent MinGW and MSVC compilers seem to disagree on the case here
-#ifdef __MINGW32__
- if (p_stderr)
- fwprintf(stderr, L"%S", wbuf);
- else
- wprintf(L"%S", wbuf);
-#else // MSVC
if (p_stderr)
- fwprintf(stderr, L"%s", wbuf);
+ fwprintf(stderr, L"%ls", wbuf);
else
- wprintf(L"%s", wbuf);
-#endif
+ wprintf(L"%ls", wbuf);
#ifdef STDOUT_FILE
//vwfprintf(stdo,p_format,p_list);
@@ -2432,10 +2399,10 @@ OS_Windows::OS_Windows(HINSTANCE _hInstance) {
user_proc = NULL;
#ifdef RTAUDIO_ENABLED
- AudioDriverManagerSW::add_driver(&driver_rtaudio);
+ AudioDriverManager::add_driver(&driver_rtaudio);
#endif
#ifdef XAUDIO2_ENABLED
- AudioDriverManagerSW::add_driver(&driver_xaudio2);
+ AudioDriverManager::add_driver(&driver_xaudio2);
#endif
}
diff --git a/platform/windows/os_windows.h b/platform/windows/os_windows.h
index 7ca89e6366..a5c8ecbe1b 100644
--- a/platform/windows/os_windows.h
+++ b/platform/windows/os_windows.h
@@ -35,29 +35,24 @@
#include "servers/visual_server.h"
#include "servers/visual/rasterizer.h"
#include "servers/physics/physics_server_sw.h"
-
-#include "servers/audio/audio_server_sw.h"
-#include "servers/audio/sample_manager_sw.h"
+#include "servers/audio_server.h"
#include "drivers/rtaudio/audio_driver_rtaudio.h"
#ifdef XAUDIO2_ENABLED
#include "drivers/xaudio2/audio_driver_xaudio2.h"
#endif
-#include "servers/spatial_sound/spatial_sound_server_sw.h"
-#include "servers/spatial_sound_2d/spatial_sound_2d_server_sw.h"
#include "drivers/unix/ip_unix.h"
#include "servers/physics_2d/physics_2d_server_sw.h"
#include "servers/physics_2d/physics_2d_server_wrap_mt.h"
-
#include "main/input_default.h"
+#include "key_mapping_win.h"
-#include <windows.h>
-#include "key_mapping_win.h"
+#include <windows.h>
#include <windowsx.h>
#include <io.h>
-
#include <fcntl.h>
#include <stdio.h>
+
/**
@author Juan Linietsky <reduzio@gmail.com>
*/
@@ -116,11 +111,6 @@ class OS_Windows : public OS {
WNDPROC user_proc;
- AudioServerSW *audio_server;
- SampleManagerMallocSW *sample_manager;
- SpatialSoundServerSW *spatial_sound_server;
- SpatialSound2DServerSW *spatial_sound_2d_server;
-
MouseMode mouse_mode;
bool alt_mem;
bool gr_mem;
diff --git a/platform/windows/stream_peer_winsock.cpp b/platform/windows/stream_peer_winsock.cpp
index b388d4b89f..9d3e3623da 100644
--- a/platform/windows/stream_peer_winsock.cpp
+++ b/platform/windows/stream_peer_winsock.cpp
@@ -98,7 +98,7 @@ Error StreamPeerWinsock::_poll_connection(bool p_block) const {
return OK;
};
- if (errno == WSAEINPROGRESS || errno == WSAEALREADY) {
+ if (err == WSAEINPROGRESS || err == WSAEALREADY) {
return OK;
}
@@ -136,13 +136,11 @@ Error StreamPeerWinsock::write(const uint8_t* p_data,int p_bytes, int &r_sent, b
int data_to_send = p_bytes;
const uint8_t *offset = p_data;
if (sockfd == -1) return FAILED;
- errno = 0;
int total_sent = 0;
while (data_to_send) {
int sent_amount = send(sockfd, (const char*)offset, data_to_send, 0);
- //printf("Sent TCP data of %d bytes, errno %d\n", sent_amount, errno);
if (sent_amount == -1) {
@@ -195,7 +193,6 @@ Error StreamPeerWinsock::read(uint8_t* p_buffer, int p_bytes,int &r_received, bo
int to_read = p_bytes;
int total_read = 0;
- errno = 0;
while (to_read) {
diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp
index 13e01ab6ac..41746c2431 100644
--- a/platform/x11/os_x11.cpp
+++ b/platform/x11/os_x11.cpp
@@ -82,14 +82,14 @@ OS::VideoMode OS_X11::get_default_video_mode() const {
}
int OS_X11::get_audio_driver_count() const {
- return AudioDriverManagerSW::get_driver_count();
+ return AudioDriverManager::get_driver_count();
}
const char *OS_X11::get_audio_driver_name(int p_driver) const {
- AudioDriverSW* driver = AudioDriverManagerSW::get_driver(p_driver);
+ AudioDriver* driver = AudioDriverManager::get_driver(p_driver);
ERR_FAIL_COND_V( !driver, "" );
- return AudioDriverManagerSW::get_driver(p_driver)->get_name();
+ return AudioDriverManager::get_driver(p_driver)->get_name();
}
void OS_X11::initialize(const VideoMode& p_desired,int p_video_driver,int p_audio_driver) {
@@ -269,21 +269,21 @@ void OS_X11::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi
XFree(xsh);
}
- AudioDriverManagerSW::get_driver(p_audio_driver)->set_singleton();
+ AudioDriverManager::get_driver(p_audio_driver)->set_singleton();
audio_driver_index=p_audio_driver;
- if (AudioDriverManagerSW::get_driver(p_audio_driver)->init()!=OK) {
+ if (AudioDriverManager::get_driver(p_audio_driver)->init()!=OK) {
bool success=false;
audio_driver_index=-1;
- for(int i=0;i<AudioDriverManagerSW::get_driver_count();i++) {
+ for(int i=0;i<AudioDriverManager::get_driver_count();i++) {
if (i==p_audio_driver)
continue;
- AudioDriverManagerSW::get_driver(i)->set_singleton();
- if (AudioDriverManagerSW::get_driver(i)->init()==OK) {
+ AudioDriverManager::get_driver(i)->set_singleton();
+ if (AudioDriverManager::get_driver(i)->init()==OK) {
success=true;
- print_line("Audio Driver Failed: "+String(AudioDriverManagerSW::get_driver(p_audio_driver)->get_name()));
- print_line("Using alternate audio driver: "+String(AudioDriverManagerSW::get_driver(i)->get_name()));
+ print_line("Audio Driver Failed: "+String(AudioDriverManager::get_driver(p_audio_driver)->get_name()));
+ print_line("Using alternate audio driver: "+String(AudioDriverManager::get_driver(i)->get_name()));
audio_driver_index=i;
break;
}
@@ -294,14 +294,6 @@ void OS_X11::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi
}
- sample_manager = memnew( SampleManagerMallocSW );
- audio_server = memnew( AudioServerSW(sample_manager) );
- audio_server->init();
- spatial_sound_server = memnew( SpatialSoundServerSW );
- spatial_sound_server->init();
- spatial_sound_2d_server = memnew( SpatialSound2DServerSW );
- spatial_sound_2d_server->init();
-
ERR_FAIL_COND(!visual_server);
ERR_FAIL_COND(x11_window==0);
@@ -469,10 +461,6 @@ void OS_X11::finalize() {
memdelete(main_loop);
main_loop=NULL;
- spatial_sound_server->finish();
- memdelete(spatial_sound_server);
- spatial_sound_2d_server->finish();
- memdelete(spatial_sound_2d_server);
/*
if (debugger_connection_console) {
@@ -485,10 +473,6 @@ void OS_X11::finalize() {
#endif
memdelete(input);
- memdelete(sample_manager);
-
- audio_server->finish();
- memdelete(audio_server);
visual_server->finish();
memdelete(visual_server);
@@ -561,11 +545,10 @@ void OS_X11::set_mouse_mode(MouseMode p_mode) {
}
}
- if (XGrabPointer(x11_display, x11_window, True,
- ButtonPressMask | ButtonReleaseMask |
- PointerMotionMask, GrabModeAsync, GrabModeAsync,
- x11_window, None, CurrentTime) !=
- GrabSuccess) {
+ if (XGrabPointer(
+ x11_display, x11_window, True,
+ ButtonPressMask | ButtonReleaseMask | PointerMotionMask,
+ GrabModeAsync, GrabModeAsync, x11_window, None, CurrentTime) != GrabSuccess) {
ERR_PRINT("NO GRAB");
}
@@ -1306,10 +1289,10 @@ void OS_X11::process_xevents() {
minimized = false;
main_loop->notification(MainLoop::NOTIFICATION_WM_FOCUS_IN);
if (mouse_mode==MOUSE_MODE_CAPTURED) {
- XGrabPointer(x11_display, x11_window, True,
- ButtonPressMask | ButtonReleaseMask |
- PointerMotionMask, GrabModeAsync, GrabModeAsync,
- x11_window, None, CurrentTime);
+ XGrabPointer(
+ x11_display, x11_window, True,
+ ButtonPressMask | ButtonReleaseMask | PointerMotionMask,
+ GrabModeAsync, GrabModeAsync, x11_window, None, CurrentTime);
}
break;
@@ -1984,20 +1967,20 @@ void OS_X11::set_context(int p_context) {
OS_X11::OS_X11() {
#ifdef RTAUDIO_ENABLED
- AudioDriverManagerSW::add_driver(&driver_rtaudio);
+ AudioDriverManager::add_driver(&driver_rtaudio);
#endif
#ifdef PULSEAUDIO_ENABLED
- AudioDriverManagerSW::add_driver(&driver_pulseaudio);
+ AudioDriverManager::add_driver(&driver_pulseaudio);
#endif
#ifdef ALSA_ENABLED
- AudioDriverManagerSW::add_driver(&driver_alsa);
+ AudioDriverManager::add_driver(&driver_alsa);
#endif
- if(AudioDriverManagerSW::get_driver_count() == 0){
+ if(AudioDriverManager::get_driver_count() == 0){
WARN_PRINT("No sound driver found... Defaulting to dummy driver");
- AudioDriverManagerSW::add_driver(&driver_dummy);
+ AudioDriverManager::add_driver(&driver_dummy);
}
minimized = false;
diff --git a/platform/x11/os_x11.h b/platform/x11/os_x11.h
index bf676b5edf..3245df32c6 100644
--- a/platform/x11/os_x11.h
+++ b/platform/x11/os_x11.h
@@ -37,10 +37,7 @@
//#include "servers/visual/visual_server_wrap_mt.h"
#include "servers/visual/rasterizer.h"
#include "servers/physics_server.h"
-#include "servers/audio/audio_server_sw.h"
-#include "servers/audio/sample_manager_sw.h"
-#include "servers/spatial_sound/spatial_sound_server_sw.h"
-#include "servers/spatial_sound_2d/spatial_sound_2d_server_sw.h"
+#include "servers/audio_server.h"
#include "drivers/rtaudio/audio_driver_rtaudio.h"
#include "drivers/alsa/audio_driver_alsa.h"
#include "drivers/pulseaudio/audio_driver_pulseaudio.h"
@@ -135,11 +132,6 @@ class OS_X11 : public OS_Unix {
virtual void delete_main_loop();
IP_Unix *ip_unix;
- AudioServerSW *audio_server;
- SampleManagerMallocSW *sample_manager;
- SpatialSoundServerSW *spatial_sound_server;
- SpatialSound2DServerSW *spatial_sound_2d_server;
-
bool force_quit;
bool minimized;
diff --git a/scene/2d/area_2d.cpp b/scene/2d/area_2d.cpp
index 67c596421f..61ed362cf0 100644
--- a/scene/2d/area_2d.cpp
+++ b/scene/2d/area_2d.cpp
@@ -675,7 +675,7 @@ void Area2D::_bind_methods() {
Area2D::Area2D() : CollisionObject2D(Physics2DServer::get_singleton()->area_create(),true) {
space_override=SPACE_OVERRIDE_DISABLED;
- set_gravity(98);;
+ set_gravity(98);
set_gravity_vector(Vector2(0,1));
gravity_is_point=false;
gravity_distance_scale=0;
diff --git a/scene/2d/navigation2d.cpp b/scene/2d/navigation2d.cpp
index 03c2c698eb..ec1109b41b 100644
--- a/scene/2d/navigation2d.cpp
+++ b/scene/2d/navigation2d.cpp
@@ -127,7 +127,7 @@ void Navigation2D::_navpoly_link(int p_id) {
C->get().B=&p;
C->get().B_edge=j;
C->get().A->edges[C->get().A_edge].C=&p;
- C->get().A->edges[C->get().A_edge].C_edge=j;;
+ C->get().A->edges[C->get().A_edge].C_edge=j;
p.edges[j].C=C->get().A;
p.edges[j].C_edge=C->get().A_edge;
//connection successful.
@@ -679,7 +679,7 @@ debug path
path.push_back(begin_point);
- path.invert();;
+ path.invert();
}
return path;
diff --git a/scene/2d/navigation_polygon.cpp b/scene/2d/navigation_polygon.cpp
index 012120d023..88d6a90e81 100644
--- a/scene/2d/navigation_polygon.cpp
+++ b/scene/2d/navigation_polygon.cpp
@@ -137,7 +137,7 @@ PoolVector<Vector2> NavigationPolygon::get_outline(int p_idx) const {
void NavigationPolygon::clear_outlines(){
- outlines.clear();;
+ outlines.clear();
}
void NavigationPolygon::make_polygons_from_outlines(){
diff --git a/scene/2d/sample_player_2d.cpp b/scene/2d/sample_player_2d.cpp
deleted file mode 100644
index 62eabea98e..0000000000
--- a/scene/2d/sample_player_2d.cpp
+++ /dev/null
@@ -1,263 +0,0 @@
-/*************************************************************************/
-/* sample_player_2d.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "sample_player_2d.h"
-
-#include "servers/audio_server.h"
-#include "servers/audio_server.h"
-#include "servers/spatial_sound_server.h"
-
-
-bool SamplePlayer2D::_set(const StringName& p_name, const Variant& p_value) {
-
- String name=p_name;
-
- if (name=="play/play") {
- if (library.is_valid()) {
-
- String what=p_value;
- if (what=="")
- stop_all();
- else
- play(what);
-
- played_back=what;
- }
- } else
- return false;
-
- return true;
-}
-
-bool SamplePlayer2D::_get(const StringName& p_name,Variant &r_ret) const {
-
-
- String name=p_name;
-
- if (name=="play/play") {
- r_ret=played_back;
- } else
- return false;
-
- return true;
-}
-
-void SamplePlayer2D::_get_property_list(List<PropertyInfo> *p_list) const {
-
- String en="";
- if (library.is_valid()) {
- List<StringName> samples;
- Ref<SampleLibrary> ncl=library;
- ncl->get_sample_list(&samples);
- for (List<StringName>::Element *E=samples.front();E;E=E->next()) {
-
- en+=",";
- en+=E->get();
- }
- }
-
- p_list->push_back( PropertyInfo( Variant::STRING, "play/play", PROPERTY_HINT_ENUM, en,PROPERTY_USAGE_EDITOR|PROPERTY_USAGE_ANIMATE_AS_TRIGGER));
-}
-
-void SamplePlayer2D::_notification(int p_what) {
-
-
- switch(p_what) {
-
- case NOTIFICATION_ENTER_TREE: {
-
- SpatialSound2DServer::get_singleton()->source_set_polyphony(get_source_rid(),polyphony);
-
-
- } break;
- }
-
-}
-
-void SamplePlayer2D::set_sample_library(const Ref<SampleLibrary>& p_library) {
-
- library=p_library;
- _change_notify();
- update_configuration_warning();
-}
-
-Ref<SampleLibrary> SamplePlayer2D::get_sample_library() const {
-
- return library;
-}
-
-void SamplePlayer2D::set_polyphony(int p_voice_count) {
-
- ERR_FAIL_COND(p_voice_count<0 || p_voice_count>64);
- polyphony=p_voice_count;
- if (get_source_rid().is_valid())
- SpatialSound2DServer::get_singleton()->source_set_polyphony(get_source_rid(),polyphony);
-
-}
-
-int SamplePlayer2D::get_polyphony() const {
-
- return polyphony;
-}
-
-SamplePlayer2D::VoiceID SamplePlayer2D::play(const String& p_sample,int p_voice) {
-
- if (!get_source_rid().is_valid())
- return INVALID_VOICE;
- if (library.is_null())
- return INVALID_VOICE;
- if (!library->has_sample(p_sample))
- return INVALID_VOICE;
- Ref<Sample> sample = library->get_sample(p_sample);
- float vol_change = library->sample_get_volume_db(p_sample);
- float pitch_change = library->sample_get_pitch_scale(p_sample);
-
- VoiceID vid = SpatialSound2DServer::get_singleton()->source_play_sample(get_source_rid(),sample->get_rid(),sample->get_mix_rate()*pitch_change,p_voice);
- if (vol_change)
- SpatialSound2DServer::get_singleton()->source_voice_set_volume_scale_db(get_source_rid(),vid,vol_change);
-
-
- if (random_pitch_scale) {
- float ps = Math::random(-random_pitch_scale,random_pitch_scale);
- if (ps>0)
- ps=1.0+ps;
- else
- ps=1.0/(1.0-ps);
- SpatialSound2DServer::get_singleton()->source_voice_set_pitch_scale(get_source_rid(),vid,ps*pitch_change);
-
- }
-
- return vid;
-}
-//voices
-void SamplePlayer2D::voice_set_pitch_scale(VoiceID p_voice, float p_pitch_scale) {
-
- if (!get_source_rid().is_valid())
- return;
-
- SpatialSound2DServer::get_singleton()->source_voice_set_pitch_scale(get_source_rid(),p_voice,p_pitch_scale);
-
-}
-
-void SamplePlayer2D::voice_set_volume_scale_db(VoiceID p_voice, float p_volume_db) {
-
- if (!get_source_rid().is_valid())
- return;
- SpatialSound2DServer::get_singleton()->source_voice_set_volume_scale_db(get_source_rid(),p_voice,p_volume_db);
-
-}
-
-bool SamplePlayer2D::is_voice_active(VoiceID p_voice) const {
-
- if (!get_source_rid().is_valid())
- return false;
- return SpatialSound2DServer::get_singleton()->source_is_voice_active(get_source_rid(),p_voice);
-
-}
-
-void SamplePlayer2D::stop_voice(VoiceID p_voice) {
-
- if (!get_source_rid().is_valid())
- return;
- SpatialSound2DServer::get_singleton()->source_stop_voice(get_source_rid(),p_voice);
-
-}
-
-void SamplePlayer2D::stop_all() {
-
- if (!get_source_rid().is_valid())
- return;
-
- for(int i=0;i<polyphony;i++) {
-
- SpatialSound2DServer::get_singleton()->source_stop_voice(get_source_rid(),i);
- }
-}
-
-void SamplePlayer2D::set_random_pitch_scale(float p_scale) {
- random_pitch_scale=p_scale;
-}
-
-float SamplePlayer2D::get_random_pitch_scale() const {
-
- return random_pitch_scale;
-}
-
-String SamplePlayer2D::get_configuration_warning() const {
-
- if (library.is_null()) {
- return TTR("A SampleLibrary resource must be created or set in the 'samples' property in order for SamplePlayer to play sound.");
- }
-
- return String();
-}
-
-void SamplePlayer2D::_bind_methods() {
-
-
- ClassDB::bind_method(_MD("set_sample_library","library:SampleLibrary"),&SamplePlayer2D::set_sample_library);
- ClassDB::bind_method(_MD("get_sample_library:SampleLibrary"),&SamplePlayer2D::get_sample_library);
-
- ClassDB::bind_method(_MD("set_polyphony","max_voices"),&SamplePlayer2D::set_polyphony);
- ClassDB::bind_method(_MD("get_polyphony"),&SamplePlayer2D::get_polyphony);
-
- ClassDB::bind_method(_MD("play","sample","voice"),&SamplePlayer2D::play,DEFVAL(NEXT_VOICE));
- //voices,DEV
- ClassDB::bind_method(_MD("voice_set_pitch_scale","voice","ratio"),&SamplePlayer2D::voice_set_pitch_scale);
- ClassDB::bind_method(_MD("voice_set_volume_scale_db","voice","db"),&SamplePlayer2D::voice_set_volume_scale_db);
-
- ClassDB::bind_method(_MD("is_voice_active","voice"),&SamplePlayer2D::is_voice_active);
- ClassDB::bind_method(_MD("stop_voice","voice"),&SamplePlayer2D::stop_voice);
- ClassDB::bind_method(_MD("stop_all"),&SamplePlayer2D::stop_all);
-
- ClassDB::bind_method(_MD("set_random_pitch_scale","val"),&SamplePlayer2D::set_random_pitch_scale);
- ClassDB::bind_method(_MD("get_random_pitch_scale"),&SamplePlayer2D::get_random_pitch_scale);
-
- BIND_CONSTANT( INVALID_VOICE );
- BIND_CONSTANT( NEXT_VOICE );
-
- ADD_GROUP("Config","");
- ADD_PROPERTY( PropertyInfo( Variant::INT, "polyphony", PROPERTY_HINT_RANGE, "1,64,1"),_SCS("set_polyphony"),_SCS("get_polyphony"));
- ADD_PROPERTY( PropertyInfo( Variant::OBJECT, "samples", PROPERTY_HINT_RESOURCE_TYPE,"SampleLibrary"),_SCS("set_sample_library"),_SCS("get_sample_library"));
- ADD_PROPERTY( PropertyInfo( Variant::REAL, "pitch_random", PROPERTY_HINT_RESOURCE_TYPE,"SampleLibrary"),_SCS("set_random_pitch_scale"),_SCS("get_random_pitch_scale"));
-
-
-}
-
-
-SamplePlayer2D::SamplePlayer2D() {
-
- polyphony=1;
- random_pitch_scale=0;
-
-}
-
-SamplePlayer2D::~SamplePlayer2D() {
-
-
-}
diff --git a/scene/2d/sample_player_2d.h b/scene/2d/sample_player_2d.h
deleted file mode 100644
index 5cf598327b..0000000000
--- a/scene/2d/sample_player_2d.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*************************************************************************/
-/* sample_player_2d.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef SAMPLE_PLAYER_2D_H
-#define SAMPLE_PLAYER_2D_H
-
-#include "scene/2d/sound_player_2d.h"
-#include "scene/resources/sample_library.h"
-
-class SamplePlayer2D : public SoundPlayer2D {
-
- GDCLASS(SamplePlayer2D,SoundPlayer2D);
-public:
-
- enum {
-
- INVALID_VOICE=SpatialSoundServer::SOURCE_INVALID_VOICE,
- NEXT_VOICE=SpatialSoundServer::SOURCE_NEXT_VOICE
- };
-
- typedef int VoiceID;
-
-
-private:
-
- Ref<SampleLibrary> library;
- int polyphony;
- String played_back;
- float random_pitch_scale;
-
-protected:
-
- bool _set(const StringName& p_name, const Variant& p_value);
- bool _get(const StringName& p_name,Variant &r_ret) const;
- void _get_property_list(List<PropertyInfo> *p_list) const;
-
- void _notification(int p_what);
-
- static void _bind_methods();
-
-public:
-
- void set_sample_library(const Ref<SampleLibrary>& p_library);
- Ref<SampleLibrary> get_sample_library() const;
-
- void set_polyphony(int p_voice_count);
- int get_polyphony() const;
-
- VoiceID play(const String& p_sample,int p_voice=NEXT_VOICE);
- //voices
- void voice_set_pitch_scale(VoiceID p_voice, float p_pitch_scale);
- void voice_set_volume_scale_db(VoiceID p_voice, float p_volume_db);
-
- bool is_voice_active(VoiceID p_voice) const;
- void stop_voice(VoiceID p_voice);
- void stop_all();
-
- void set_random_pitch_scale(float p_scale);
- float get_random_pitch_scale() const;
-
- String get_configuration_warning() const;
-
- SamplePlayer2D();
- ~SamplePlayer2D();
-
-
-};
-
-#endif // SAMPLE_PLAYER_2D_H
diff --git a/scene/2d/sound_player_2d.cpp b/scene/2d/sound_player_2d.cpp
deleted file mode 100644
index 7861fb5855..0000000000
--- a/scene/2d/sound_player_2d.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-/*************************************************************************/
-/* sound_player_2d.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "sound_player_2d.h"
-
-#include "servers/audio_server.h"
-
-#include "servers/spatial_sound_2d_server.h"
-#include "scene/resources/surface_tool.h"
-
-
-void SoundPlayer2D::_notification(int p_what) {
-
-
- switch(p_what) {
-
- case NOTIFICATION_ENTER_TREE: {
- //find the sound space
-
- source_rid = SpatialSound2DServer::get_singleton()->source_create(get_world_2d()->get_sound_space());
-
- for(int i=0;i<PARAM_MAX;i++)
- set_param(Param(i),params[i]);
-
- SpatialSound2DServer::get_singleton()->source_set_transform(source_rid,get_global_transform());
-
-
- } break;
- case NOTIFICATION_TRANSFORM_CHANGED: {
-
- SpatialSound2DServer::get_singleton()->source_set_transform(source_rid,get_global_transform());
-
- } break;
- case NOTIFICATION_EXIT_TREE: {
-
- if (source_rid.is_valid())
- SpatialSound2DServer::get_singleton()->free(source_rid);
-
- } break;
- }
-
-}
-
-
-void SoundPlayer2D::set_param( Param p_param, float p_value) {
-
- ERR_FAIL_INDEX(p_param,PARAM_MAX);
- params[p_param]=p_value;
- if (source_rid.is_valid())
- SpatialSound2DServer::get_singleton()->source_set_param(source_rid,(SpatialSound2DServer::SourceParam)p_param,p_value);
-
-}
-
-float SoundPlayer2D::get_param( Param p_param) const {
-
- ERR_FAIL_INDEX_V(p_param,PARAM_MAX,0);
- return params[p_param];
-
-}
-
-
-void SoundPlayer2D::_bind_methods() {
-
-
- ClassDB::bind_method(_MD("set_param","param","value"),&SoundPlayer2D::set_param);
- ClassDB::bind_method(_MD("get_param","param"),&SoundPlayer2D::get_param);
-
- BIND_CONSTANT( PARAM_VOLUME_DB );
- BIND_CONSTANT( PARAM_PITCH_SCALE );
- BIND_CONSTANT( PARAM_ATTENUATION_MIN_DISTANCE );
- BIND_CONSTANT( PARAM_ATTENUATION_MAX_DISTANCE );
- BIND_CONSTANT( PARAM_ATTENUATION_DISTANCE_EXP );
- BIND_CONSTANT( PARAM_MAX );
-
- ADD_GROUP("Parameters","");
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "volume_db",PROPERTY_HINT_RANGE, "-80,24,0.01"),_SCS("set_param"),_SCS("get_param"),PARAM_VOLUME_DB);
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "pitch_scale",PROPERTY_HINT_RANGE, "0.001,32,0.001"),_SCS("set_param"),_SCS("get_param"),PARAM_PITCH_SCALE);
- ADD_GROUP("Attenuation","attenuation_");
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "attenuation_min_distance",PROPERTY_HINT_EXP_RANGE, "16,16384,1"),_SCS("set_param"),_SCS("get_param"),PARAM_ATTENUATION_MIN_DISTANCE);
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "attenuation_max_distance",PROPERTY_HINT_EXP_RANGE, "16,16384,1"),_SCS("set_param"),_SCS("get_param"),PARAM_ATTENUATION_MAX_DISTANCE);
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "attenuation_distance_exp",PROPERTY_HINT_EXP_EASING, "attenuation"),_SCS("set_param"),_SCS("get_param"),PARAM_ATTENUATION_DISTANCE_EXP);
-
-}
-
-
-SoundPlayer2D::SoundPlayer2D() {
-
- params[PARAM_VOLUME_DB]=0.0;
- params[PARAM_PITCH_SCALE]=1.0;
- params[PARAM_ATTENUATION_MIN_DISTANCE]=1;
- params[PARAM_ATTENUATION_MAX_DISTANCE]=2048;
- params[PARAM_ATTENUATION_DISTANCE_EXP]=1.0; //linear (and not really good)
-
- set_notify_transform(true);
-}
-
-SoundPlayer2D::~SoundPlayer2D() {
-
-
-}
diff --git a/scene/2d/sound_player_2d.h b/scene/2d/sound_player_2d.h
deleted file mode 100644
index bfabda4ec9..0000000000
--- a/scene/2d/sound_player_2d.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*************************************************************************/
-/* sound_player_2d.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef SOUND_PLAYER_2D_H
-#define SOUND_PLAYER_2D_H
-
-
-#include "scene/2d/node_2d.h"
-#include "scene/resources/sample_library.h"
-#include "servers/spatial_sound_2d_server.h"
-#include "scene/main/viewport.h"
-
-class SoundPlayer2D : public Node2D {
-
- GDCLASS(SoundPlayer2D,Node2D);
-public:
-
-
- enum Param {
-
- PARAM_VOLUME_DB=SpatialSound2DServer::SOURCE_PARAM_VOLUME_DB,
- PARAM_PITCH_SCALE=SpatialSound2DServer::SOURCE_PARAM_PITCH_SCALE,
- PARAM_ATTENUATION_MIN_DISTANCE=SpatialSound2DServer::SOURCE_PARAM_ATTENUATION_MIN_DISTANCE,
- PARAM_ATTENUATION_MAX_DISTANCE=SpatialSound2DServer::SOURCE_PARAM_ATTENUATION_MAX_DISTANCE,
- PARAM_ATTENUATION_DISTANCE_EXP=SpatialSound2DServer::SOURCE_PARAM_ATTENUATION_DISTANCE_EXP,
- PARAM_MAX=SpatialSound2DServer::SOURCE_PARAM_MAX
- };
-
-private:
-
- float params[PARAM_MAX];
- RID source_rid;
-
-
-protected:
-
- _FORCE_INLINE_ RID get_source_rid() const { return source_rid; }
-
- void _notification(int p_what);
-
- static void _bind_methods();
-
-public:
-
- void set_param( Param p_param, float p_value);
- float get_param( Param p_param) const;
-
-
- SoundPlayer2D();
- ~SoundPlayer2D();
-
-
-};
-
-VARIANT_ENUM_CAST(SoundPlayer2D::Param );
-
-#endif // SOUND_PLAYER_2D_H
diff --git a/scene/2d/sprite.h b/scene/2d/sprite.h
index 05c0bd9eec..ab4487ef7b 100644
--- a/scene/2d/sprite.h
+++ b/scene/2d/sprite.h
@@ -58,7 +58,7 @@ protected:
void _notification(int p_what);
- static void _bind_methods();;
+ static void _bind_methods();
virtual void _validate_property(PropertyInfo& property) const;
@@ -119,7 +119,7 @@ protected:
void _notification(int p_what);
- static void _bind_methods();;
+ static void _bind_methods();
public:
diff --git a/scene/3d/area.cpp b/scene/3d/area.cpp
index 99e40984c5..3301c4d754 100644
--- a/scene/3d/area.cpp
+++ b/scene/3d/area.cpp
@@ -664,7 +664,7 @@ void Area::_bind_methods() {
Area::Area() : CollisionObject(PhysicsServer::get_singleton()->area_create(),true) {
space_override=SPACE_OVERRIDE_DISABLED;
- set_gravity(9.8);;
+ set_gravity(9.8);
locked=false;
set_gravity_vector(Vector3(0,-1,0));
gravity_is_point=false;
diff --git a/scene/3d/baked_light_instance.cpp b/scene/3d/baked_light_instance.cpp
index e42439bf3b..514c73a488 100644
--- a/scene/3d/baked_light_instance.cpp
+++ b/scene/3d/baked_light_instance.cpp
@@ -943,7 +943,7 @@ void BakedLight::_bake_light(Light* p_light) {
Vector3 light_dir = -rel_xf.basis.get_axis(2);
Color color = dl->get_color();
- float nrg = dl->get_param(Light::PARAM_ENERGY);;
+ float nrg = dl->get_param(Light::PARAM_ENERGY);
color.r*=nrg;
color.g*=nrg;
color.b*=nrg;
@@ -1705,7 +1705,6 @@ void BakedLight::create_debug_mesh(DebugMode p_mode) {
#else
mmi->set_owner(get_owner());
#endif
-
}
void BakedLight::_debug_mesh_albedo() {
diff --git a/scene/3d/body_shape.cpp b/scene/3d/body_shape.cpp
index f6ec8639d3..f3c839d525 100644
--- a/scene/3d/body_shape.cpp
+++ b/scene/3d/body_shape.cpp
@@ -506,7 +506,7 @@ void CollisionShape::_create_debug_shape() {
if (debug_shape) {
- debug_shape->queue_delete();;
+ debug_shape->queue_delete();
debug_shape=NULL;
}
diff --git a/scene/3d/bone_attachment.cpp b/scene/3d/bone_attachment.cpp
index c3ab2df939..825cf1c535 100644
--- a/scene/3d/bone_attachment.cpp
+++ b/scene/3d/bone_attachment.cpp
@@ -79,7 +79,7 @@ void BoneAttachment::_check_bind() {
Skeleton *sk = get_parent()->cast_to<Skeleton>();
int idx = sk->find_bone(bone_name);
if (idx!=-1) {
- sk->bind_child_node_to_bone(idx,this);;
+ sk->bind_child_node_to_bone(idx,this);
set_transform(sk->get_bone_global_pose(idx));
bound=true;
}
@@ -94,7 +94,7 @@ void BoneAttachment::_check_unbind() {
Skeleton *sk = get_parent()->cast_to<Skeleton>();
int idx = sk->find_bone(bone_name);
if (idx!=-1) {
- sk->unbind_child_node_from_bone(idx,this);;
+ sk->unbind_child_node_from_bone(idx,this);
}
}
bound=false;
diff --git a/scene/3d/camera.cpp b/scene/3d/camera.cpp
index 3f36caf62c..5bd2c771ee 100644
--- a/scene/3d/camera.cpp
+++ b/scene/3d/camera.cpp
@@ -644,7 +644,7 @@ Vector<Plane> Camera::get_frustum() const {
void Camera::set_v_offset(float p_offset) {
v_offset=p_offset;
- _update_camera();;
+ _update_camera();
}
float Camera::get_v_offset() const {
diff --git a/scene/3d/character_camera.cpp b/scene/3d/character_camera.cpp
index b4cd46bd35..211619d0df 100644
--- a/scene/3d/character_camera.cpp
+++ b/scene/3d/character_camera.cpp
@@ -97,7 +97,7 @@ void CharacterCamera::_get_property_list( List<PropertyInfo> *p_list) const {
p_list->push_back( PropertyInfo( Variant::INT, "type", PROPERTY_HINT_ENUM, "Fixed,Follow") );
p_list->push_back( PropertyInfo( Variant::VECTOR2, "orbit" ) );
p_list->push_back( PropertyInfo( Variant::REAL, "height", PROPERTY_HINT_RANGE,"-1024,1024,0.01" ) );
- p_list->push_back( PropertyInfo( Variant::REAL, "inclination", PROPERTY_HINT_RANGE,"-90,90,0.01" ) ); ;
+ p_list->push_back( PropertyInfo( Variant::REAL, "inclination", PROPERTY_HINT_RANGE,"-90,90,0.01" ) );
p_list->push_back( PropertyInfo( Variant::REAL, "max_orbit_x", PROPERTY_HINT_RANGE,"-90,90,0.01" ) );
p_list->push_back( PropertyInfo( Variant::REAL, "min_orbit_x", PROPERTY_HINT_RANGE,"-90,90,0.01" ) );
p_list->push_back( PropertyInfo( Variant::REAL, "min_distance", PROPERTY_HINT_RANGE,"0,100,0.01" ) );
@@ -168,7 +168,7 @@ void CharacterCamera::_compute_camera() {
Vector3 vec1 = accepted.origin;
Vector3 vec2 = proposed.origin;
- final.origin = vec2.linear_interpolate(vec1, pos_ratio * time);;
+ final.origin = vec2.linear_interpolate(vec1, pos_ratio * time);
Quat q1 = accepted.basis;
Quat q2 = proposed.basis;
diff --git a/scene/3d/gi_probe.cpp b/scene/3d/gi_probe.cpp
index 54d7cb6b9e..8035ce1cc7 100644
--- a/scene/3d/gi_probe.cpp
+++ b/scene/3d/gi_probe.cpp
@@ -1324,7 +1324,6 @@ void GIProbe::_create_debug_mesh(Baker *p_baker) {
#else
mmi->set_owner(get_owner());
#endif
-
}
void GIProbe::_debug_bake() {
diff --git a/scene/3d/light.cpp b/scene/3d/light.cpp
index d685cd8ce7..0c6c113dd2 100644
--- a/scene/3d/light.cpp
+++ b/scene/3d/light.cpp
@@ -47,7 +47,7 @@ void Light::set_param(Param p_param, float p_value) {
VS::get_singleton()->light_set_param(light,VS::LightParam(p_param),p_value);
if (p_param==PARAM_SPOT_ANGLE || p_param==PARAM_RANGE) {
- update_gizmo();;
+ update_gizmo();
}
diff --git a/scene/3d/mesh_instance.cpp b/scene/3d/mesh_instance.cpp
index 764aff1c08..2198f538b8 100644
--- a/scene/3d/mesh_instance.cpp
+++ b/scene/3d/mesh_instance.cpp
@@ -91,7 +91,7 @@ void MeshInstance::_get_property_list( List<PropertyInfo> *p_list) const {
ls.push_back(E->key());
}
- ls.sort();;
+ ls.sort();
for(List<String>::Element *E=ls.front();E;E=E->next()) {
p_list->push_back( PropertyInfo(Variant::REAL,E->get(),PROPERTY_HINT_RANGE,"0,1,0.01"));
diff --git a/scene/3d/navigation.cpp b/scene/3d/navigation.cpp
index 9bb19880bf..38893598d6 100644
--- a/scene/3d/navigation.cpp
+++ b/scene/3d/navigation.cpp
@@ -129,7 +129,7 @@ void Navigation::_navmesh_link(int p_id) {
C->get().B=&p;
C->get().B_edge=j;
C->get().A->edges[C->get().A_edge].C=&p;
- C->get().A->edges[C->get().A_edge].C_edge=j;;
+ C->get().A->edges[C->get().A_edge].C_edge=j;
p.edges[j].C=C->get().A;
p.edges[j].C_edge=C->get().A_edge;
//connection successful.
@@ -550,7 +550,7 @@ Vector<Vector3> Navigation::get_simple_path(const Vector3& p_start, const Vector
path.push_back(begin_point);
- path.invert();;
+ path.invert();
}
return path;
diff --git a/scene/3d/room_instance.cpp b/scene/3d/room_instance.cpp
index cdca54cd84..a2e1a48781 100644
--- a/scene/3d/room_instance.cpp
+++ b/scene/3d/room_instance.cpp
@@ -56,17 +56,11 @@ void Room::_notification(int p_what) {
}
- if (sound_enabled)
- SpatialSoundServer::get_singleton()->room_set_space(sound_room,get_world()->get_sound_space());
-
} break;
case NOTIFICATION_TRANSFORM_CHANGED: {
- SpatialSoundServer::get_singleton()->room_set_transform(sound_room,get_global_transform());
} break;
case NOTIFICATION_EXIT_WORLD: {
- if (sound_enabled)
- SpatialSoundServer::get_singleton()->room_set_space(sound_room,RID());
} break;
@@ -158,61 +152,27 @@ void Room::_parse_node_faces(PoolVector<Face3> &all_faces,const Node *p_node) co
-void Room::set_simulate_acoustics(bool p_enable) {
-
- if (sound_enabled==p_enable)
- return;
-
- sound_enabled=p_enable;
- if (!is_inside_world())
- return; //nothing to do
-
- if (sound_enabled)
- SpatialSoundServer::get_singleton()->room_set_space(sound_room,get_world()->get_sound_space());
- else
- SpatialSoundServer::get_singleton()->room_set_space(sound_room,RID());
-
-
-}
-
void Room::_bounds_changed() {
update_gizmo();
}
-bool Room::is_simulating_acoustics() const {
-
- return sound_enabled;
-}
-
-RID Room::get_sound_room() const {
-
- return RID();
-}
-
void Room::_bind_methods() {
ClassDB::bind_method(_MD("set_room","room:Room"),&Room::set_room );
ClassDB::bind_method(_MD("get_room:Room"),&Room::get_room );
-
- ClassDB::bind_method(_MD("set_simulate_acoustics","enable"),&Room::set_simulate_acoustics );
- ClassDB::bind_method(_MD("is_simulating_acoustics"),&Room::is_simulating_acoustics );
-
-
-
ADD_PROPERTY( PropertyInfo( Variant::OBJECT, "room/room", PROPERTY_HINT_RESOURCE_TYPE, "Area" ), _SCS("set_room"), _SCS("get_room") );
- ADD_PROPERTY( PropertyInfo( Variant::BOOL, "room/simulate_acoustics"), _SCS("set_simulate_acoustics"), _SCS("is_simulating_acoustics") );
+
}
Room::Room() {
- sound_enabled=false;
- sound_room=SpatialSoundServer::get_singleton()->room_create();
+// sound_enabled=false;
level=0;
@@ -222,6 +182,6 @@ Room::Room() {
Room::~Room() {
- SpatialSoundServer::get_singleton()->free(sound_room);
+
}
diff --git a/scene/3d/room_instance.h b/scene/3d/room_instance.h
index 145589a780..cbc1b12b7e 100644
--- a/scene/3d/room_instance.h
+++ b/scene/3d/room_instance.h
@@ -31,7 +31,7 @@
#include "scene/3d/visual_instance.h"
#include "scene/resources/room.h"
-#include "servers/spatial_sound_server.h"
+
/**
@author Juan Linietsky <reduzio@gmail.com>
*/
@@ -58,9 +58,6 @@ public:
private:
Ref<RoomBounds> room;
- RID sound_room;
-
- bool sound_enabled;
int level;
void _parse_node_faces(PoolVector<Face3> &all_faces,const Node *p_node) const;
@@ -88,11 +85,6 @@ public:
void set_room( const Ref<RoomBounds>& p_room );
Ref<RoomBounds> get_room() const;
- void set_simulate_acoustics(bool p_enable);
- bool is_simulating_acoustics() const;
-
-
- RID get_sound_room() const;
Room();
~Room();
diff --git a/scene/3d/spatial_player.cpp b/scene/3d/spatial_player.cpp
deleted file mode 100644
index 6a368d771a..0000000000
--- a/scene/3d/spatial_player.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/*************************************************************************/
-/* spatial_player.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "spatial_player.h"
-
-#include "servers/audio_server.h"
-#include "camera.h"
-#include "servers/spatial_sound_server.h"
-#include "scene/resources/surface_tool.h"
-
-
-void SpatialPlayer::_notification(int p_what) {
-
-
- switch(p_what) {
-
- case NOTIFICATION_ENTER_WORLD: {
- //find the sound space
-
- source_rid = SpatialSoundServer::get_singleton()->source_create(get_world()->get_sound_space());
- for(int i=0;i<PARAM_MAX;i++)
- set_param(Param(i),params[i]);
-
-
- } break;
- case NOTIFICATION_TRANSFORM_CHANGED: {
-
- SpatialSoundServer::get_singleton()->source_set_transform(source_rid,get_global_transform());
-
- } break;
- case NOTIFICATION_EXIT_WORLD: {
-
- if (source_rid.is_valid())
- SpatialSoundServer::get_singleton()->free(source_rid);
-
- } break;
- }
-
-}
-
-
-void SpatialPlayer::set_param( Param p_param, float p_value) {
-
- ERR_FAIL_INDEX(p_param,PARAM_MAX);
- params[p_param]=p_value;
- if (p_param==PARAM_EMISSION_CONE_DEGREES) {
- update_gizmo();
- }
- if (source_rid.is_valid())
- SpatialSoundServer::get_singleton()->source_set_param(source_rid,(SpatialSoundServer::SourceParam)p_param,p_value);
-
-}
-
-float SpatialPlayer::get_param( Param p_param) const {
-
- ERR_FAIL_INDEX_V(p_param,PARAM_MAX,0);
- return params[p_param];
-
-}
-
-bool SpatialPlayer::_can_gizmo_scale() const {
-
- return false;
-}
-
-void SpatialPlayer::_bind_methods() {
-
-
- ClassDB::bind_method(_MD("set_param","param","value"),&SpatialPlayer::set_param);
- ClassDB::bind_method(_MD("get_param","param"),&SpatialPlayer::get_param);
-
- BIND_CONSTANT( PARAM_VOLUME_DB );
- BIND_CONSTANT( PARAM_PITCH_SCALE );
- BIND_CONSTANT( PARAM_ATTENUATION_MIN_DISTANCE );
- BIND_CONSTANT( PARAM_ATTENUATION_MAX_DISTANCE );
- BIND_CONSTANT( PARAM_ATTENUATION_DISTANCE_EXP );
- BIND_CONSTANT( PARAM_EMISSION_CONE_DEGREES );
- BIND_CONSTANT( PARAM_EMISSION_CONE_ATTENUATION_DB );
- BIND_CONSTANT( PARAM_MAX );
-
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "volume_db",PROPERTY_HINT_RANGE, "-80,24,0.01"),_SCS("set_param"),_SCS("get_param"),PARAM_VOLUME_DB);
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "pitch_scale",PROPERTY_HINT_RANGE, "0.001,32,0.001"),_SCS("set_param"),_SCS("get_param"),PARAM_PITCH_SCALE);
- ADD_GROUP("Attenuation","attenuation_");
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "attenuation_min_distance",PROPERTY_HINT_RANGE, "0.01,4096,0.01"),_SCS("set_param"),_SCS("get_param"),PARAM_ATTENUATION_MIN_DISTANCE);
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "attenuation_max_distance",PROPERTY_HINT_RANGE, "0.01,4096,0.01"),_SCS("set_param"),_SCS("get_param"),PARAM_ATTENUATION_MAX_DISTANCE);
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "attenuation_distance_exp",PROPERTY_HINT_EXP_EASING, "attenuation"),_SCS("set_param"),_SCS("get_param"),PARAM_ATTENUATION_DISTANCE_EXP);
- ADD_GROUP("Emission Cone","emission_cone_");
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "emission_cone_degrees",PROPERTY_HINT_RANGE, "0,180,0.01"),_SCS("set_param"),_SCS("get_param"),PARAM_EMISSION_CONE_DEGREES);
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "emission_cone_attenuation_db",PROPERTY_HINT_RANGE, "-80,24,0.01"),_SCS("set_param"),_SCS("get_param"),PARAM_EMISSION_CONE_ATTENUATION_DB);
-
-}
-
-
-SpatialPlayer::SpatialPlayer() {
-
- params[PARAM_VOLUME_DB]=0.0;
- params[PARAM_PITCH_SCALE]=1.0;
- params[PARAM_ATTENUATION_MIN_DISTANCE]=1;
- params[PARAM_ATTENUATION_MAX_DISTANCE]=100;
- params[PARAM_ATTENUATION_DISTANCE_EXP]=1.0; //linear (and not really good)
- params[PARAM_EMISSION_CONE_DEGREES]=180.0; //cone disabled
- params[PARAM_EMISSION_CONE_ATTENUATION_DB]=-6.0; //minus 6 db attenuation
- set_notify_transform(true);
-
-}
-
-SpatialPlayer::~SpatialPlayer() {
-
-
-}
diff --git a/scene/3d/spatial_player.h b/scene/3d/spatial_player.h
deleted file mode 100644
index 16671a0cb5..0000000000
--- a/scene/3d/spatial_player.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*************************************************************************/
-/* spatial_player.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef SPATIAL_PLAYER_H
-#define SPATIAL_PLAYER_H
-
-
-#include "scene/3d/spatial.h"
-#include "scene/main/node.h"
-#include "scene/resources/sample_library.h"
-#include "servers/spatial_sound_server.h"
-#include "scene/main/viewport.h"
-
-class SpatialPlayer : public Spatial {
-
- GDCLASS(SpatialPlayer,Spatial);
-public:
-
-
- enum Param {
-
- PARAM_VOLUME_DB=SpatialSoundServer::SOURCE_PARAM_VOLUME_DB,
- PARAM_PITCH_SCALE=SpatialSoundServer::SOURCE_PARAM_PITCH_SCALE,
- PARAM_ATTENUATION_MIN_DISTANCE=SpatialSoundServer::SOURCE_PARAM_ATTENUATION_MIN_DISTANCE,
- PARAM_ATTENUATION_MAX_DISTANCE=SpatialSoundServer::SOURCE_PARAM_ATTENUATION_MAX_DISTANCE,
- PARAM_ATTENUATION_DISTANCE_EXP=SpatialSoundServer::SOURCE_PARAM_ATTENUATION_DISTANCE_EXP,
- PARAM_EMISSION_CONE_DEGREES=SpatialSoundServer::SOURCE_PARAM_EMISSION_CONE_DEGREES,
- PARAM_EMISSION_CONE_ATTENUATION_DB=SpatialSoundServer::SOURCE_PARAM_EMISSION_CONE_ATTENUATION_DB,
- PARAM_MAX=SpatialSoundServer::SOURCE_PARAM_MAX
- };
-
-private:
-
- float params[PARAM_MAX];
- RID source_rid;
-
- virtual bool _can_gizmo_scale() const;
-
-
-
-protected:
-
- _FORCE_INLINE_ RID get_source_rid() const { return source_rid; }
-
- void _notification(int p_what);
-
- static void _bind_methods();
-
-public:
-
- void set_param( Param p_param, float p_value);
- float get_param( Param p_param) const;
-
-
- SpatialPlayer();
- ~SpatialPlayer();
-
-
-};
-
-VARIANT_ENUM_CAST( SpatialPlayer::Param );
-#endif // SPATIAL_PLAYER_H
diff --git a/scene/3d/spatial_sample_player.cpp b/scene/3d/spatial_sample_player.cpp
deleted file mode 100644
index 3e1c0e9947..0000000000
--- a/scene/3d/spatial_sample_player.cpp
+++ /dev/null
@@ -1,241 +0,0 @@
-/*************************************************************************/
-/* spatial_sample_player.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "spatial_sample_player.h"
-
-#include "servers/audio_server.h"
-#include "camera.h"
-#include "servers/spatial_sound_server.h"
-#include "scene/scene_string_names.h"
-
-bool SpatialSamplePlayer::_set(const StringName& p_name, const Variant& p_value) {
-
- String name=p_name;
-
- if (name==SceneStringNames::get_singleton()->play_play) {
- if (library.is_valid()) {
-
- String what=p_value;
- if (what=="")
- stop_all();
- else
- play(what);
-
- played_back=what;
- }
- return true;
-
- }
-
- return false;
-}
-
-bool SpatialSamplePlayer::_get(const StringName& p_name,Variant &r_ret) const {
-
-
- String name=p_name;
-
- if (name==SceneStringNames::get_singleton()->play_play) {
- r_ret=played_back;
- return true;
- }
-
- return false;
-}
-
-void SpatialSamplePlayer::_get_property_list(List<PropertyInfo> *p_list) const {
-
- String en="";
- if (library.is_valid()) {
- List<StringName> samples;
- Ref<SampleLibrary> ncl=library;
- ncl->get_sample_list(&samples);
- for (List<StringName>::Element *E=samples.front();E;E=E->next()) {
-
- en+=",";
- en+=E->get();
- }
- }
-
- p_list->push_back( PropertyInfo( Variant::STRING, "play/play", PROPERTY_HINT_ENUM, en,PROPERTY_USAGE_EDITOR|PROPERTY_USAGE_ANIMATE_AS_TRIGGER));
-
-}
-void SpatialSamplePlayer::_notification(int p_what) {
-
-
- switch(p_what) {
-
- case NOTIFICATION_ENTER_WORLD: {
-
- SpatialSoundServer::get_singleton()->source_set_polyphony(get_source_rid(),polyphony);
-
-
- } break;
- }
-
-}
-
-void SpatialSamplePlayer::set_sample_library(const Ref<SampleLibrary>& p_library) {
-
- library=p_library;
- _change_notify();
- update_configuration_warning();
-}
-
-Ref<SampleLibrary> SpatialSamplePlayer::get_sample_library() const {
-
- return library;
-}
-
-void SpatialSamplePlayer::set_polyphony(int p_voice_count) {
-
- ERR_FAIL_COND(p_voice_count<0 || p_voice_count>64);
- polyphony=p_voice_count;
- if (get_source_rid().is_valid())
- SpatialSoundServer::get_singleton()->source_set_polyphony(get_source_rid(),polyphony);
-
-}
-
-int SpatialSamplePlayer::get_polyphony() const {
-
- return polyphony;
-}
-
-SpatialSamplePlayer::VoiceID SpatialSamplePlayer::play(const String& p_sample,int p_voice) {
-
- if (!get_source_rid().is_valid())
- return INVALID_VOICE;
- if (library.is_null())
- return INVALID_VOICE;
- if (!library->has_sample(p_sample))
- return INVALID_VOICE;
- Ref<Sample> sample = library->get_sample(p_sample);
- float vol_change = library->sample_get_volume_db(p_sample);
- float pitch_change = library->sample_get_pitch_scale(p_sample);
-
- VoiceID vid = SpatialSoundServer::get_singleton()->source_play_sample(get_source_rid(),sample->get_rid(),sample->get_mix_rate()*pitch_change,p_voice);
- if (vol_change)
- SpatialSoundServer::get_singleton()->source_voice_set_volume_scale_db(get_source_rid(),vid,vol_change);
-
- return vid;
-
-
-}
-//voices
-void SpatialSamplePlayer::voice_set_pitch_scale(VoiceID p_voice, float p_pitch_scale) {
-
- if (!get_source_rid().is_valid())
- return;
-
- SpatialSoundServer::get_singleton()->source_voice_set_pitch_scale(get_source_rid(),p_voice,p_pitch_scale);
-
-}
-
-void SpatialSamplePlayer::voice_set_volume_scale_db(VoiceID p_voice, float p_volume_db) {
-
- if (!get_source_rid().is_valid())
- return;
- SpatialSoundServer::get_singleton()->source_voice_set_volume_scale_db(get_source_rid(),p_voice,p_volume_db);
-
-}
-
-bool SpatialSamplePlayer::is_voice_active(VoiceID p_voice) const {
-
- if (!get_source_rid().is_valid())
- return false;
- return SpatialSoundServer::get_singleton()->source_is_voice_active(get_source_rid(),p_voice);
-
-}
-
-void SpatialSamplePlayer::stop_voice(VoiceID p_voice) {
-
- if (!get_source_rid().is_valid())
- return;
- SpatialSoundServer::get_singleton()->source_stop_voice(get_source_rid(),p_voice);
-
-}
-
-void SpatialSamplePlayer::stop_all() {
-
- if (!get_source_rid().is_valid())
- return;
-
- for(int i=0;i<polyphony;i++) {
-
- SpatialSoundServer::get_singleton()->source_stop_voice(get_source_rid(),i);
- }
-}
-
-String SpatialSamplePlayer::get_configuration_warning() const {
-
- if (library.is_null()) {
- return TTR("A SampleLibrary resource must be created or set in the 'samples' property in order for SpatialSamplePlayer to play sound.");
- }
-
- return String();
-}
-
-
-void SpatialSamplePlayer::_bind_methods() {
-
-
- ClassDB::bind_method(_MD("set_sample_library","library:SampleLibrary"),&SpatialSamplePlayer::set_sample_library);
- ClassDB::bind_method(_MD("get_sample_library:SampleLibrary"),&SpatialSamplePlayer::get_sample_library);
-
- ClassDB::bind_method(_MD("set_polyphony","voices"),&SpatialSamplePlayer::set_polyphony);
- ClassDB::bind_method(_MD("get_polyphony"),&SpatialSamplePlayer::get_polyphony);
-
- ClassDB::bind_method(_MD("play","sample","voice"),&SpatialSamplePlayer::play,DEFVAL(NEXT_VOICE));
- //voices,DEV
- ClassDB::bind_method(_MD("voice_set_pitch_scale","voice","ratio"),&SpatialSamplePlayer::voice_set_pitch_scale);
- ClassDB::bind_method(_MD("voice_set_volume_scale_db","voice","db"),&SpatialSamplePlayer::voice_set_volume_scale_db);
-
- ClassDB::bind_method(_MD("is_voice_active","voice"),&SpatialSamplePlayer::is_voice_active);
- ClassDB::bind_method(_MD("stop_voice","voice"),&SpatialSamplePlayer::stop_voice);
- ClassDB::bind_method(_MD("stop_all"),&SpatialSamplePlayer::stop_all);
-
- BIND_CONSTANT( INVALID_VOICE );
- BIND_CONSTANT( NEXT_VOICE );
-
- ADD_PROPERTY( PropertyInfo( Variant::INT, "polyphony", PROPERTY_HINT_RANGE, "1,64,1"),_SCS("set_polyphony"),_SCS("get_polyphony"));
- ADD_PROPERTY( PropertyInfo( Variant::OBJECT, "samples", PROPERTY_HINT_RESOURCE_TYPE,"SampleLibrary"),_SCS("set_sample_library"),_SCS("get_sample_library"));
-
-
-}
-
-
-SpatialSamplePlayer::SpatialSamplePlayer() {
-
- polyphony=1;
-
-}
-
-SpatialSamplePlayer::~SpatialSamplePlayer() {
-
-
-}
diff --git a/scene/3d/spatial_sample_player.h b/scene/3d/spatial_sample_player.h
deleted file mode 100644
index d30ff6e908..0000000000
--- a/scene/3d/spatial_sample_player.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*************************************************************************/
-/* spatial_sample_player.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef SPATIAL_SAMPLE_PLAYER_H
-#define SPATIAL_SAMPLE_PLAYER_H
-
-#include "scene/3d/spatial_player.h"
-#include "scene/resources/sample_library.h"
-#include "servers/spatial_sound_server.h"
-
-class SpatialSamplePlayer : public SpatialPlayer {
-
- GDCLASS(SpatialSamplePlayer,SpatialPlayer);
-public:
-
- enum {
-
- INVALID_VOICE=SpatialSoundServer::SOURCE_INVALID_VOICE,
- NEXT_VOICE=SpatialSoundServer::SOURCE_NEXT_VOICE
- };
-
- typedef int VoiceID;
-
-
-private:
-
- Ref<SampleLibrary> library;
- int polyphony;
- String played_back;
-protected:
-
- bool _set(const StringName& p_name, const Variant& p_value);
- bool _get(const StringName& p_name,Variant &r_ret) const;
- void _get_property_list(List<PropertyInfo> *p_list) const;
-
- void _notification(int p_what);
- static void _bind_methods();
-
-public:
-
- void set_sample_library(const Ref<SampleLibrary>& p_library);
- Ref<SampleLibrary> get_sample_library() const;
-
- void set_polyphony(int p_voice_count);
- int get_polyphony() const;
-
- VoiceID play(const String& p_sample,int p_voice=NEXT_VOICE);
- //voices
- void voice_set_pitch_scale(VoiceID p_voice, float p_pitch_scale);
- void voice_set_volume_scale_db(VoiceID p_voice, float p_volume_db);
-
- bool is_voice_active(VoiceID p_voice) const;
- void stop_voice(VoiceID p_voice);
- void stop_all();
-
- String get_configuration_warning() const;
-
- SpatialSamplePlayer();
- ~SpatialSamplePlayer();
-
-
-};
-
-
-#endif // SPATIAL_SAMPLE_PLAYER_H
diff --git a/scene/3d/spatial_stream_player.cpp b/scene/3d/spatial_stream_player.cpp
deleted file mode 100644
index 1f9765c1d3..0000000000
--- a/scene/3d/spatial_stream_player.cpp
+++ /dev/null
@@ -1,407 +0,0 @@
-/*************************************************************************/
-/* spatial_stream_player.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "spatial_stream_player.h"
-
-
-
-int SpatialStreamPlayer::InternalStream::get_channel_count() const {
-
- return player->sp_get_channel_count();
-}
-void SpatialStreamPlayer::InternalStream::set_mix_rate(int p_rate){
-
- return player->sp_set_mix_rate(p_rate);
-}
-bool SpatialStreamPlayer::InternalStream::mix(int32_t *p_buffer,int p_frames){
-
- return player->sp_mix(p_buffer,p_frames);
-}
-void SpatialStreamPlayer::InternalStream::update(){
-
- player->sp_update();
-}
-
-
-int SpatialStreamPlayer::sp_get_channel_count() const {
-
- return playback->get_channels();
-}
-
-void SpatialStreamPlayer::sp_set_mix_rate(int p_rate){
-
- server_mix_rate=p_rate;
-}
-
-bool SpatialStreamPlayer::sp_mix(int32_t *p_buffer,int p_frames) {
-
- if (resampler.is_ready() && !paused) {
- return resampler.mix(p_buffer,p_frames);
- }
-
- return false;
-}
-
-void SpatialStreamPlayer::sp_update() {
-
- _THREAD_SAFE_METHOD_
- if (!paused && resampler.is_ready() && playback.is_valid()) {
-
- if (!playback->is_playing()) {
- //stream depleted data, but there's still audio in the ringbuffer
- //check that all this audio has been flushed before stopping the stream
- int to_mix = resampler.get_total() - resampler.get_todo();
- if (to_mix==0) {
- stop();
- return;
- }
-
- return;
- }
-
- int todo =resampler.get_todo();
- int wrote = playback->mix(resampler.get_write_buffer(),todo);
- resampler.write(wrote);
- }
-}
-
-
-
-void SpatialStreamPlayer::_notification(int p_what) {
-
- switch(p_what) {
-
- case NOTIFICATION_ENTER_TREE: {
-
- //set_idle_process(false); //don't annoy
- if (stream.is_valid() && autoplay && !get_tree()->is_editor_hint())
- play();
- } break;
- case NOTIFICATION_EXIT_TREE: {
-
- stop(); //wathever it may be doing, stop
- } break;
- }
-}
-
-
-
-void SpatialStreamPlayer::set_stream(const Ref<AudioStream> &p_stream) {
-
- stop();
-
- stream=p_stream;
-
- if (!stream.is_null()) {
- playback=stream->instance_playback();
- playback->set_loop(loops);
- playback->set_loop_restart_time(loop_point);
- AudioServer::get_singleton()->lock();
- resampler.setup(playback->get_channels(),playback->get_mix_rate(),server_mix_rate,buffering_ms,playback->get_minimum_buffer_size());
- AudioServer::get_singleton()->unlock();
- } else {
- AudioServer::get_singleton()->lock();
- resampler.clear();
- playback.unref();
- AudioServer::get_singleton()->unlock();
- }
-}
-
-Ref<AudioStream> SpatialStreamPlayer::get_stream() const {
-
- return stream;
-}
-
-
-void SpatialStreamPlayer::play(float p_from_offset) {
-
- ERR_FAIL_COND(!is_inside_tree());
- if (playback.is_null())
- return;
- if (playback->is_playing())
- stop();
-
- _THREAD_SAFE_METHOD_
- playback->play(p_from_offset);
- //feed the ringbuffer as long as no update callback is going on
- sp_update();
-
- SpatialSoundServer::get_singleton()->source_set_audio_stream(get_source_rid(),&internal_stream);
-
- /*
- AudioServer::get_singleton()->stream_set_active(stream_rid,true);
- AudioServer::get_singleton()->stream_set_volume_scale(stream_rid,volume);
- if (stream->get_update_mode()!=AudioStream::UPDATE_NONE)
- set_idle_process(true);
- */
-
-}
-
-void SpatialStreamPlayer::stop() {
-
- if (!is_inside_tree())
- return;
- if (playback.is_null())
- return;
-
- _THREAD_SAFE_METHOD_
- //AudioServer::get_singleton()->stream_set_active(stream_rid,false);
- SpatialSoundServer::get_singleton()->source_set_audio_stream(get_source_rid(),NULL);
- playback->stop();
- resampler.flush();
- //set_idle_process(false);
-}
-
-bool SpatialStreamPlayer::is_playing() const {
-
- if (playback.is_null())
- return false;
-
- return playback->is_playing();
-}
-
-void SpatialStreamPlayer::set_loop(bool p_enable) {
-
- loops=p_enable;
- if (playback.is_null())
- return;
- playback->set_loop(loops);
-
-}
-bool SpatialStreamPlayer::has_loop() const {
-
- return loops;
-}
-
-void SpatialStreamPlayer::set_volume(float p_vol) {
-
- volume=p_vol;
- if (stream_rid.is_valid())
- AudioServer::get_singleton()->stream_set_volume_scale(stream_rid,volume);
-}
-
-float SpatialStreamPlayer::get_volume() const {
-
- return volume;
-}
-
-void SpatialStreamPlayer::set_loop_restart_time(float p_secs) {
-
- loop_point=p_secs;
- if (playback.is_valid())
- playback->set_loop_restart_time(p_secs);
-}
-
-float SpatialStreamPlayer::get_loop_restart_time() const {
-
- return loop_point;
-}
-
-
-void SpatialStreamPlayer::set_volume_db(float p_db) {
-
- if (p_db<-79)
- set_volume(0);
- else
- set_volume(Math::db2linear(p_db));
-}
-
-float SpatialStreamPlayer::get_volume_db() const {
-
- if (volume==0)
- return -80;
- else
- return Math::linear2db(volume);
-}
-
-
-String SpatialStreamPlayer::get_stream_name() const {
-
- if (stream.is_null())
- return "<No Stream>";
- return stream->get_name();
-
-}
-
-int SpatialStreamPlayer::get_loop_count() const {
-
- if (playback.is_null())
- return 0;
- return playback->get_loop_count();
-
-}
-
-float SpatialStreamPlayer::get_pos() const {
-
- if (playback.is_null())
- return 0;
- return playback->get_pos();
-
-}
-
-float SpatialStreamPlayer::get_length() const {
-
- if (playback.is_null())
- return 0;
- return playback->get_length();
-}
-void SpatialStreamPlayer::seek_pos(float p_time) {
-
- if (playback.is_null())
- return;
- return playback->seek_pos(p_time);
-
-}
-
-void SpatialStreamPlayer::set_autoplay(bool p_enable) {
-
- autoplay=p_enable;
-}
-
-bool SpatialStreamPlayer::has_autoplay() const {
-
- return autoplay;
-}
-
-void SpatialStreamPlayer::set_paused(bool p_paused) {
-
- paused=p_paused;
- /*
- if (stream.is_valid())
- stream->set_paused(p_paused);
- */
-}
-
-bool SpatialStreamPlayer::is_paused() const {
-
- return paused;
-}
-
-void SpatialStreamPlayer::_set_play(bool p_play) {
-
- _play=p_play;
- if (is_inside_tree()) {
- if(_play)
- play();
- else
- stop();
- }
-
-}
-
-bool SpatialStreamPlayer::_get_play() const{
-
- return _play;
-}
-
-void SpatialStreamPlayer::set_buffering_msec(int p_msec) {
-
- buffering_ms=p_msec;
-}
-
-int SpatialStreamPlayer::get_buffering_msec() const{
-
- return buffering_ms;
-}
-
-
-
-void SpatialStreamPlayer::_bind_methods() {
-
- ClassDB::bind_method(_MD("set_stream","stream:AudioStream"),&SpatialStreamPlayer::set_stream);
- ClassDB::bind_method(_MD("get_stream:AudioStream"),&SpatialStreamPlayer::get_stream);
-
- ClassDB::bind_method(_MD("play","offset"),&SpatialStreamPlayer::play,DEFVAL(0));
- ClassDB::bind_method(_MD("stop"),&SpatialStreamPlayer::stop);
-
- ClassDB::bind_method(_MD("is_playing"),&SpatialStreamPlayer::is_playing);
-
- ClassDB::bind_method(_MD("set_paused","paused"),&SpatialStreamPlayer::set_paused);
- ClassDB::bind_method(_MD("is_paused"),&SpatialStreamPlayer::is_paused);
-
- ClassDB::bind_method(_MD("set_loop","enabled"),&SpatialStreamPlayer::set_loop);
- ClassDB::bind_method(_MD("has_loop"),&SpatialStreamPlayer::has_loop);
-
- ClassDB::bind_method(_MD("set_volume","volume"),&SpatialStreamPlayer::set_volume);
- ClassDB::bind_method(_MD("get_volume"),&SpatialStreamPlayer::get_volume);
-
- ClassDB::bind_method(_MD("set_volume_db","db"),&SpatialStreamPlayer::set_volume_db);
- ClassDB::bind_method(_MD("get_volume_db"),&SpatialStreamPlayer::get_volume_db);
-
- ClassDB::bind_method(_MD("set_buffering_msec","msec"),&SpatialStreamPlayer::set_buffering_msec);
- ClassDB::bind_method(_MD("get_buffering_msec"),&SpatialStreamPlayer::get_buffering_msec);
-
- ClassDB::bind_method(_MD("set_loop_restart_time","secs"),&SpatialStreamPlayer::set_loop_restart_time);
- ClassDB::bind_method(_MD("get_loop_restart_time"),&SpatialStreamPlayer::get_loop_restart_time);
-
- ClassDB::bind_method(_MD("get_stream_name"),&SpatialStreamPlayer::get_stream_name);
- ClassDB::bind_method(_MD("get_loop_count"),&SpatialStreamPlayer::get_loop_count);
-
- ClassDB::bind_method(_MD("get_pos"),&SpatialStreamPlayer::get_pos);
- ClassDB::bind_method(_MD("seek_pos","time"),&SpatialStreamPlayer::seek_pos);
-
- ClassDB::bind_method(_MD("set_autoplay","enabled"),&SpatialStreamPlayer::set_autoplay);
- ClassDB::bind_method(_MD("has_autoplay"),&SpatialStreamPlayer::has_autoplay);
-
- ClassDB::bind_method(_MD("get_length"),&SpatialStreamPlayer::get_length);
-
- ClassDB::bind_method(_MD("_set_play","play"),&SpatialStreamPlayer::_set_play);
- ClassDB::bind_method(_MD("_get_play"),&SpatialStreamPlayer::_get_play);
-
- ADD_PROPERTY( PropertyInfo(Variant::OBJECT, "stream", PROPERTY_HINT_RESOURCE_TYPE,"AudioStream"), _SCS("set_stream"), _SCS("get_stream") );
- ADD_PROPERTY( PropertyInfo(Variant::BOOL, "play"), _SCS("_set_play"), _SCS("_get_play") );
- ADD_PROPERTY( PropertyInfo(Variant::BOOL, "loop"), _SCS("set_loop"), _SCS("has_loop") );
- ADD_PROPERTY( PropertyInfo(Variant::REAL, "volume_db", PROPERTY_HINT_RANGE,"-80,24,0.01"), _SCS("set_volume_db"), _SCS("get_volume_db") );
- ADD_PROPERTY( PropertyInfo(Variant::BOOL, "autoplay"), _SCS("set_autoplay"), _SCS("has_autoplay") );
- ADD_PROPERTY( PropertyInfo(Variant::BOOL, "paused"), _SCS("set_paused"), _SCS("is_paused") );
- ADD_PROPERTY( PropertyInfo(Variant::INT, "loop_restart_time"), _SCS("set_loop_restart_time"), _SCS("get_loop_restart_time") );
- ADD_PROPERTY( PropertyInfo(Variant::INT, "buffering_ms"), _SCS("set_buffering_msec"), _SCS("get_buffering_msec") );
-}
-
-
-SpatialStreamPlayer::SpatialStreamPlayer() {
-
- volume=1;
- loops=false;
- paused=false;
- autoplay=false;
- _play=false;
- server_mix_rate=1;
- internal_stream.player=this;
- stream_rid=AudioServer::get_singleton()->audio_stream_create(&internal_stream);
- buffering_ms=500;
- loop_point=0;
-
-}
-
-SpatialStreamPlayer::~SpatialStreamPlayer() {
- AudioServer::get_singleton()->free(stream_rid);
- resampler.clear();
-
-
-}
diff --git a/scene/3d/spatial_stream_player.h b/scene/3d/spatial_stream_player.h
deleted file mode 100644
index 27533d3f6e..0000000000
--- a/scene/3d/spatial_stream_player.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/*************************************************************************/
-/* spatial_stream_player.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef SPATIAL_STREAM_PLAYER_H
-#define SPATIAL_STREAM_PLAYER_H
-
-#include "scene/resources/audio_stream.h"
-#include "scene/3d/spatial_player.h"
-#include "servers/audio/audio_rb_resampler.h"
-
-class SpatialStreamPlayer : public SpatialPlayer {
-
- GDCLASS(SpatialStreamPlayer,SpatialPlayer);
-
- _THREAD_SAFE_CLASS_
-
- struct InternalStream : public AudioServer::AudioStream {
- SpatialStreamPlayer *player;
- virtual int get_channel_count() const;
- virtual void set_mix_rate(int p_rate); //notify the stream of the mix rate
- virtual bool mix(int32_t *p_buffer,int p_frames);
- virtual void update();
- };
-
-
- InternalStream internal_stream;
- Ref<AudioStreamPlayback> playback;
- Ref<AudioStream> stream;
-
- int sp_get_channel_count() const;
- void sp_set_mix_rate(int p_rate); //notify the stream of the mix rate
- bool sp_mix(int32_t *p_buffer,int p_frames);
- void sp_update();
-
- int server_mix_rate;
-
- RID stream_rid;
- bool paused;
- bool autoplay;
- bool loops;
- float volume;
- float loop_point;
- int buffering_ms;
-
- AudioRBResampler resampler;
-
- bool _play;
- void _set_play(bool p_play);
- bool _get_play() const;
-protected:
- void _notification(int p_what);
-
- static void _bind_methods();
-public:
-
- void set_stream(const Ref<AudioStream> &p_stream);
- Ref<AudioStream> get_stream() const;
-
- void play(float p_from_offset=0);
- void stop();
- bool is_playing() const;
-
- void set_paused(bool p_paused);
- bool is_paused() const;
-
- void set_loop(bool p_enable);
- bool has_loop() const;
-
- void set_volume(float p_vol);
- float get_volume() const;
-
- void set_loop_restart_time(float p_secs);
- float get_loop_restart_time() const;
-
- void set_volume_db(float p_db);
- float get_volume_db() const;
-
- String get_stream_name() const;
-
- int get_loop_count() const;
-
- float get_pos() const;
- void seek_pos(float p_time);
- float get_length() const;
- void set_autoplay(bool p_vol);
- bool has_autoplay() const;
-
- void set_buffering_msec(int p_msec);
- int get_buffering_msec() const;
-
- SpatialStreamPlayer();
- ~SpatialStreamPlayer();
-};
-
-#endif // SPATIAL_STREAM_PLAYER_H
diff --git a/scene/3d/sprite_3d.cpp b/scene/3d/sprite_3d.cpp
index 9f0c91c4b8..479fe1fed9 100644
--- a/scene/3d/sprite_3d.cpp
+++ b/scene/3d/sprite_3d.cpp
@@ -1190,7 +1190,7 @@ void AnimatedSprite3D::set_frame(int p_frame) {
frame=p_frame;
_reset_timeout();
- _queue_update();;
+ _queue_update();
_change_notify("frame");
emit_signal(SceneStringNames::get_singleton()->frame_changed);
@@ -1293,7 +1293,7 @@ void AnimatedSprite3D::set_animation(const StringName& p_animation){
_reset_timeout();
set_frame(0);
_change_notify();
- _queue_update();;
+ _queue_update();
}
StringName AnimatedSprite3D::get_animation() const{
diff --git a/scene/animation/animation_cache.cpp b/scene/animation/animation_cache.cpp
index 25ca74de9f..bcbda5a781 100644
--- a/scene/animation/animation_cache.cpp
+++ b/scene/animation/animation_cache.cpp
@@ -62,7 +62,7 @@ void AnimationCache::_clear_cache() {
connected_nodes.front()->get()->disconnect("tree_exited",this,"_node_exit_tree");
connected_nodes.erase(connected_nodes.front());
}
- path_cache.clear();;
+ path_cache.clear();
cache_valid=false;
cache_dirty=true;
}
diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp
index 8b81c45597..7fa8458fe9 100644
--- a/scene/animation/animation_player.cpp
+++ b/scene/animation/animation_player.cpp
@@ -855,7 +855,7 @@ void AnimationPlayer::rename_animation(const StringName& p_name,const StringName
while(to_erase.size()) {
blend_times.erase(to_erase.front()->get());
- to_erase.pop_front();;
+ to_erase.pop_front();
}
while(to_insert.size()) {
diff --git a/scene/animation/animation_tree_player.cpp b/scene/animation/animation_tree_player.cpp
index c3a05240bb..a3347dadcf 100644
--- a/scene/animation/animation_tree_player.cpp
+++ b/scene/animation/animation_tree_player.cpp
@@ -1643,7 +1643,7 @@ void AnimationTreePlayer::_recompute_caches(const StringName& p_node) {
if (nb->type==NODE_ANIMATION) {
AnimationNode *an = static_cast<AnimationNode*>(nb);
- an->tref.clear();;
+ an->tref.clear();
if (!an->animation.is_null()) {
diff --git a/scene/audio/event_player.cpp b/scene/audio/event_player.cpp
deleted file mode 100644
index c46f4e3b89..0000000000
--- a/scene/audio/event_player.cpp
+++ /dev/null
@@ -1,357 +0,0 @@
-/*************************************************************************/
-/* event_player.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "event_player.h"
-
-
-void EventPlayer::_notification(int p_what) {
-
- switch(p_what) {
-
- case NOTIFICATION_ENTER_TREE: {
-
- //set_idle_process(false); //don't annoy
- if (playback.is_valid() && autoplay && !get_tree()->is_editor_hint())
- play();
- } break;
- case NOTIFICATION_EXIT_TREE: {
-
- stop(); //wathever it may be doing, stop
- } break;
- }
-}
-
-
-
-void EventPlayer::set_stream(const Ref<EventStream> &p_stream) {
-
- stop();
- stream=p_stream;
- if (stream.is_valid())
- playback=stream->instance_playback();
- else
- playback.unref();
-
- if (playback.is_valid()) {
-
- playback->set_loop(loops);
- playback->set_paused(paused);
- playback->set_volume(volume);
- for(int i=0;i<(MIN(MAX_CHANNELS,stream->get_channel_count()));i++)
- playback->set_channel_volume(i,channel_volume[i]);
- }
-
-
-}
-
-Ref<EventStream> EventPlayer::get_stream() const {
-
- return stream;
-}
-
-
-void EventPlayer::play() {
-
- ERR_FAIL_COND(!is_inside_tree());
- if (playback.is_null()) {
- return;
- }
- if (playback->is_playing()) {
- AudioServer::get_singleton()->lock();
- stop();
- AudioServer::get_singleton()->unlock();
- }
-
- AudioServer::get_singleton()->lock();
- playback->play();
- AudioServer::get_singleton()->unlock();
-
-}
-
-void EventPlayer::stop() {
-
- if (!is_inside_tree())
- return;
- if (playback.is_null())
- return;
-
- AudioServer::get_singleton()->lock();
- playback->stop();
- AudioServer::get_singleton()->unlock();
-}
-
-bool EventPlayer::is_playing() const {
-
- if (playback.is_null())
- return false;
-
- return playback->is_playing();
-}
-
-void EventPlayer::set_loop(bool p_enable) {
-
- loops=p_enable;
- if (playback.is_null())
- return;
- playback->set_loop(loops);
-
-}
-bool EventPlayer::has_loop() const {
-
- return loops;
-}
-
-void EventPlayer::set_volume(float p_volume) {
-
- volume=p_volume;
- if (playback.is_valid())
- playback->set_volume(volume);
-}
-
-float EventPlayer::get_volume() const {
-
- return volume;
-}
-
-
-void EventPlayer::set_volume_db(float p_db) {
-
- if (p_db<-79)
- set_volume(0);
- else
- set_volume(Math::db2linear(p_db));
-}
-
-float EventPlayer::get_volume_db() const {
-
- if (volume==0)
- return -80;
- else
- return Math::linear2db(volume);
-}
-
-void EventPlayer::set_pitch_scale(float p_pitch_scale) {
-
- pitch_scale=p_pitch_scale;
- if (playback.is_valid())
- playback->set_pitch_scale(pitch_scale);
-}
-
-float EventPlayer::get_pitch_scale() const {
-
- return pitch_scale;
-}
-
-void EventPlayer::set_tempo_scale(float p_tempo_scale) {
-
- tempo_scale=p_tempo_scale;
- if (playback.is_valid())
- playback->set_tempo_scale(tempo_scale);
-}
-
-float EventPlayer::get_tempo_scale() const {
-
- return tempo_scale;
-}
-
-
-String EventPlayer::get_stream_name() const {
-
- if (stream.is_null())
- return "<No Stream>";
- return stream->get_name();
-
-}
-
-int EventPlayer::get_loop_count() const {
-
- if (playback.is_null())
- return 0;
- return playback->get_loop_count();
-
-}
-
-float EventPlayer::get_pos() const {
-
- if (playback.is_null())
- return 0;
- return playback->get_pos();
-
-}
-
-float EventPlayer::get_length() const {
-
- if (stream.is_null())
- return 0;
- return stream->get_length();
-}
-void EventPlayer::seek_pos(float p_time) {
-
- if (playback.is_null())
- return;
- return playback->seek_pos(p_time);
-
-}
-
-void EventPlayer::set_autoplay(bool p_enable) {
-
- autoplay=p_enable;
-}
-
-bool EventPlayer::has_autoplay() const {
-
- return autoplay;
-}
-
-void EventPlayer::set_paused(bool p_paused) {
-
- paused=p_paused;
- if (playback.is_valid())
- playback->set_paused(p_paused);
-}
-
-bool EventPlayer::is_paused() const {
-
- return paused;
-}
-
-void EventPlayer::_set_play(bool p_play) {
-
- _play=p_play;
- if (is_inside_tree()) {
- if(_play)
- play();
- else
- stop();
- }
-
-}
-
-bool EventPlayer::_get_play() const{
-
- return _play;
-}
-
-void EventPlayer::set_channel_volume(int p_channel,float p_volume) {
-
- ERR_FAIL_INDEX(p_channel,MAX_CHANNELS);
- channel_volume[p_channel]=p_volume;
- if (playback.is_valid())
- playback->set_channel_volume(p_channel,p_volume);
-}
-
-float EventPlayer::get_channel_volume(int p_channel) const{
-
- ERR_FAIL_INDEX_V(p_channel,MAX_CHANNELS,0);
- return channel_volume[p_channel];
-
-}
-
-float EventPlayer::get_channel_last_note_time(int p_channel) const {
-
- if (playback.is_valid())
- return playback->get_last_note_time(p_channel);
-
- return 0;
-}
-
-void EventPlayer::_bind_methods() {
-
- ClassDB::bind_method(_MD("set_stream","stream:EventStream"),&EventPlayer::set_stream);
- ClassDB::bind_method(_MD("get_stream:EventStream"),&EventPlayer::get_stream);
-
- ClassDB::bind_method(_MD("play"),&EventPlayer::play);
- ClassDB::bind_method(_MD("stop"),&EventPlayer::stop);
-
- ClassDB::bind_method(_MD("is_playing"),&EventPlayer::is_playing);
-
- ClassDB::bind_method(_MD("set_paused","paused"),&EventPlayer::set_paused);
- ClassDB::bind_method(_MD("is_paused"),&EventPlayer::is_paused);
-
- ClassDB::bind_method(_MD("set_loop","enabled"),&EventPlayer::set_loop);
- ClassDB::bind_method(_MD("has_loop"),&EventPlayer::has_loop);
-
- ClassDB::bind_method(_MD("set_volume","volume"),&EventPlayer::set_volume);
- ClassDB::bind_method(_MD("get_volume"),&EventPlayer::get_volume);
-
- ClassDB::bind_method(_MD("set_pitch_scale","pitch_scale"),&EventPlayer::set_pitch_scale);
- ClassDB::bind_method(_MD("get_pitch_scale"),&EventPlayer::get_pitch_scale);
-
- ClassDB::bind_method(_MD("set_tempo_scale","tempo_scale"),&EventPlayer::set_tempo_scale);
- ClassDB::bind_method(_MD("get_tempo_scale"),&EventPlayer::get_tempo_scale);
-
- ClassDB::bind_method(_MD("set_volume_db","db"),&EventPlayer::set_volume_db);
- ClassDB::bind_method(_MD("get_volume_db"),&EventPlayer::get_volume_db);
-
- ClassDB::bind_method(_MD("get_stream_name"),&EventPlayer::get_stream_name);
- ClassDB::bind_method(_MD("get_loop_count"),&EventPlayer::get_loop_count);
-
- ClassDB::bind_method(_MD("get_pos"),&EventPlayer::get_pos);
- ClassDB::bind_method(_MD("seek_pos","time"),&EventPlayer::seek_pos);
-
- ClassDB::bind_method(_MD("get_length"),&EventPlayer::get_length);
-
- ClassDB::bind_method(_MD("set_autoplay","enabled"),&EventPlayer::set_autoplay);
- ClassDB::bind_method(_MD("has_autoplay"),&EventPlayer::has_autoplay);
-
- ClassDB::bind_method(_MD("set_channel_volume","channel","channel_volume"),&EventPlayer::set_channel_volume);
- ClassDB::bind_method(_MD("get_channel_volume","channel"),&EventPlayer::get_channel_volume);
- ClassDB::bind_method(_MD("get_channel_last_note_time","channel"),&EventPlayer::get_channel_last_note_time);
-
- ClassDB::bind_method(_MD("_set_play","play"),&EventPlayer::_set_play);
- ClassDB::bind_method(_MD("_get_play"),&EventPlayer::_get_play);
-
- ADD_PROPERTY( PropertyInfo(Variant::OBJECT, "stream", PROPERTY_HINT_RESOURCE_TYPE,"EventStream"), _SCS("set_stream"), _SCS("get_stream") );
- ADD_PROPERTY( PropertyInfo(Variant::BOOL, "play"), _SCS("_set_play"), _SCS("_get_play") );
- ADD_PROPERTY( PropertyInfo(Variant::BOOL, "loop"), _SCS("set_loop"), _SCS("has_loop") );
- ADD_PROPERTY( PropertyInfo(Variant::REAL, "volume_db", PROPERTY_HINT_RANGE,"-80,24,0.01"), _SCS("set_volume_db"), _SCS("get_volume_db") );
- ADD_PROPERTY( PropertyInfo(Variant::REAL, "pitch_scale", PROPERTY_HINT_RANGE,"0.001,16,0.001"), _SCS("set_pitch_scale"), _SCS("get_pitch_scale") );
- ADD_PROPERTY( PropertyInfo(Variant::REAL, "tempo_scale", PROPERTY_HINT_RANGE,"0.001,16,0.001"), _SCS("set_tempo_scale"), _SCS("get_tempo_scale") );
- ADD_PROPERTY( PropertyInfo(Variant::BOOL, "autoplay"), _SCS("set_autoplay"), _SCS("has_autoplay") );
- ADD_PROPERTY( PropertyInfo(Variant::BOOL, "paused"), _SCS("set_paused"), _SCS("is_paused") );
-}
-
-
-EventPlayer::EventPlayer() {
-
- volume=1;
- loops=false;
- paused=false;
- autoplay=false;
- _play=false;
- pitch_scale=1.0;
- tempo_scale=1.0;
- for(int i=0;i<MAX_CHANNELS;i++)
- channel_volume[i]=1.0;
-
-}
-
-EventPlayer::~EventPlayer() {
-
-
-}
diff --git a/scene/audio/event_player.h b/scene/audio/event_player.h
deleted file mode 100644
index 715017e0d6..0000000000
--- a/scene/audio/event_player.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/*************************************************************************/
-/* event_player.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef EVENT_PLAYER_H
-#define EVENT_PLAYER_H
-
-
-#include "scene/main/node.h"
-#include "scene/resources/event_stream.h"
-class EventPlayer : public Node {
-
- GDCLASS(EventPlayer,Node);
-
-
- enum {
- MAX_CHANNELS=256
- };
-
- Ref<EventStreamPlayback> playback;
- Ref<EventStream> stream;
- bool paused;
- bool autoplay;
- bool loops;
- float volume;
-
- float tempo_scale;
- float pitch_scale;
-
- float channel_volume[MAX_CHANNELS];
- bool _play;
- void _set_play(bool p_play);
- bool _get_play() const;
-protected:
- void _notification(int p_what);
-
- static void _bind_methods();
-
-public:
-
- void set_stream(const Ref<EventStream> &p_stream);
- Ref<EventStream> get_stream() const;
-
- void play();
- void stop();
- bool is_playing() const;
-
- void set_paused(bool p_paused);
- bool is_paused() const;
-
- void set_loop(bool p_enable);
- bool has_loop() const;
-
- void set_volume(float p_vol);
- float get_volume() const;
-
- void set_volume_db(float p_db);
- float get_volume_db() const;
-
- void set_pitch_scale(float p_scale);
- float get_pitch_scale() const;
-
- void set_tempo_scale(float p_scale);
- float get_tempo_scale() const;
-
- String get_stream_name() const;
-
- int get_loop_count() const;
-
- float get_pos() const;
- void seek_pos(float p_time);
- float get_length() const;
- void set_autoplay(bool p_vol);
- bool has_autoplay() const;
-
- void set_channel_volume(int p_channel,float p_volume);
- float get_channel_volume(int p_channel) const;
-
- float get_channel_last_note_time(int p_channel) const;
-
- EventPlayer();
- ~EventPlayer();
-};
-
-#endif // EVENT_PLAYER_H
diff --git a/scene/audio/sample_player.cpp b/scene/audio/sample_player.cpp
deleted file mode 100644
index ba2d379311..0000000000
--- a/scene/audio/sample_player.cpp
+++ /dev/null
@@ -1,718 +0,0 @@
-/*************************************************************************/
-/* sample_player.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "sample_player.h"
-
-#include "servers/audio_server.h"
-
-
-bool SamplePlayer::_set(const StringName& p_name, const Variant& p_value) {
-
- String name=p_name;
-
- if (name=="play/play") {
- if (library.is_valid()) {
-
- String what=p_value;
- if (what=="")
- stop_all();
- else
- play(what);
-
- played_back=what;
- }
- } else if (name=="config/samples")
- set_sample_library(p_value);
- else if (name=="config/polyphony")
- set_polyphony(p_value);
- else if (name.begins_with("default/")) {
-
- String what=name.right(8);
-
- if (what=="volume_db")
- set_default_volume_db(p_value);
- else if (what=="pitch_scale")
- set_default_pitch_scale(p_value);
- else if (what=="pan")
- _default.pan=p_value;
- else if (what=="depth")
- _default.depth=p_value;
- else if (what=="height")
- _default.height=p_value;
- else if (what=="filter/type")
- _default.filter_type=FilterType(p_value.operator int());
- else if (what=="filter/cutoff")
- _default.filter_cutoff=p_value;
- else if (what=="filter/resonance")
- _default.filter_resonance=p_value;
- else if (what=="filter/gain")
- _default.filter_gain=p_value;
- else if (what=="reverb_room")
- _default.reverb_room=ReverbRoomType(p_value.operator int());
- else if (what=="reverb_send")
- _default.reverb_send=p_value;
- else if (what=="chorus_send")
- _default.chorus_send=p_value;
- else
- return false;
-
-
- } else
- return false;
-
- return true;
-}
-
-bool SamplePlayer::_get(const StringName& p_name,Variant &r_ret) const {
-
-
- String name=p_name;
-
- if (name=="play/play") {
- r_ret=played_back;
- } else if (name=="config/polyphony") {
- r_ret= get_polyphony();
- } else if (name=="config/samples") {
-
- r_ret= get_sample_library();
- } else if (name.begins_with("default/")) {
-
- String what=name.right(8);
-
- if (what=="volume_db")
- r_ret= get_default_volume_db();
- else if (what=="pitch_scale")
- r_ret= get_default_pitch_scale();
- else if (what=="pan")
- r_ret= _default.pan;
- else if (what=="depth")
- r_ret= _default.depth;
- else if (what=="height")
- r_ret= _default.height;
- else if (what=="filter/type")
- r_ret= _default.filter_type;
- else if (what=="filter/cutoff")
- r_ret= _default.filter_cutoff;
- else if (what=="filter/resonance")
- r_ret= _default.filter_resonance;
- else if (what=="filter/gain")
- r_ret= _default.filter_gain;
- else if (what=="reverb_room")
- r_ret= _default.reverb_room;
- else if (what=="reverb_send")
- r_ret= _default.reverb_send;
- else if (what=="chorus_send")
- r_ret= _default.chorus_send;
- else
- return false;
-
-
- } else
- return false;
-
- return true;
-}
-
-void SamplePlayer::_get_property_list(List<PropertyInfo> *p_list) const {
-
- String en="";
- if (library.is_valid()) {
- List<StringName> samples;
- Ref<SampleLibrary> ncl=library;
- ncl->get_sample_list(&samples);
- for (List<StringName>::Element *E=samples.front();E;E=E->next()) {
-
- en+=",";
- en+=E->get();
- }
- }
-
- p_list->push_back( PropertyInfo( Variant::STRING, "play/play", PROPERTY_HINT_ENUM, en,PROPERTY_USAGE_EDITOR|PROPERTY_USAGE_ANIMATE_AS_TRIGGER));
- p_list->push_back( PropertyInfo( Variant::INT, "config/polyphony", PROPERTY_HINT_RANGE, "1,256,1"));
- p_list->push_back( PropertyInfo( Variant::OBJECT, "config/samples", PROPERTY_HINT_RESOURCE_TYPE, "SampleLibrary"));
- p_list->push_back( PropertyInfo( Variant::REAL, "default/volume_db", PROPERTY_HINT_RANGE, "-80,24,0.01"));
- p_list->push_back( PropertyInfo( Variant::REAL, "default/pitch_scale", PROPERTY_HINT_RANGE, "0.01,48,0.01"));
- p_list->push_back( PropertyInfo( Variant::REAL, "default/pan", PROPERTY_HINT_RANGE, "-1,1,0.01"));
- p_list->push_back( PropertyInfo( Variant::REAL, "default/depth", PROPERTY_HINT_RANGE, "-1,1,0.01"));
- p_list->push_back( PropertyInfo( Variant::REAL, "default/height", PROPERTY_HINT_RANGE, "-1,1,0.01"));
- p_list->push_back( PropertyInfo( Variant::INT, "default/filter/type", PROPERTY_HINT_ENUM, "Disabled,Lowpass,Bandpass,Highpass,Notch,Peak,BandLimit,LowShelf,HighShelf"));
- p_list->push_back( PropertyInfo( Variant::REAL, "default/filter/cutoff", PROPERTY_HINT_RANGE, "20,16384.0,0.01"));
- p_list->push_back( PropertyInfo( Variant::REAL, "default/filter/resonance", PROPERTY_HINT_RANGE, "0,4,0.01"));
- p_list->push_back( PropertyInfo( Variant::REAL, "default/filter/gain", PROPERTY_HINT_RANGE, "0,2,0.01"));
- p_list->push_back( PropertyInfo( Variant::INT, "default/reverb_room", PROPERTY_HINT_ENUM, "Small,Medium,Large,Hall"));
- p_list->push_back( PropertyInfo( Variant::REAL, "default/reverb_send", PROPERTY_HINT_RANGE, "0,1,0.01"));
- p_list->push_back( PropertyInfo( Variant::REAL, "default/chorus_send", PROPERTY_HINT_RANGE, "0,1,0.01"));
-
-
-}
-
-
-SamplePlayer::Voice::Voice() {
-
- voice=AudioServer::get_singleton()->voice_create();
- clear();
-}
-
-
-void SamplePlayer::Voice::clear() {
-
- check=0;
-
- mix_rate=44100;
- volume=1;
- pan=0;
- pan_depth=0;
- pan_height=0;
- filter_type=FILTER_NONE;
- filter_cutoff=0;
- filter_resonance=0;
- chorus_send=0;
- reverb_room=REVERB_HALL;
- reverb_send=0;
- active=false;
-
-}
-SamplePlayer::Voice::~Voice() {
-
- AudioServer::get_singleton()->free(voice);
-}
-
-
-void SamplePlayer::set_polyphony(int p_voice_count) {
-
- ERR_FAIL_COND( p_voice_count <1 || p_voice_count >0xFFFE );
-
- voices.resize(p_voice_count);
-}
-
-int SamplePlayer::get_polyphony() const {
-
- return voices.size();
-}
-
-SamplePlayer::VoiceID SamplePlayer::play(const String& p_name,bool unique) {
-
- if (library.is_null())
- return INVALID_VOICE_ID;
- ERR_FAIL_COND_V( !library->has_sample(p_name), INVALID_VOICE_ID );
-
- Ref<Sample> sample = library->get_sample(p_name);
- float vol_change = library->sample_get_volume_db(p_name);
- float pitch_change = library->sample_get_pitch_scale(p_name);
-
- last_check++;
- last_id = (last_id + 1) % voices.size();
-
- Voice&v = voices[last_id];
- v.clear();
-
-
- v.mix_rate=sample->get_mix_rate()*(_default.pitch_scale*pitch_change);
- v.sample_mix_rate=sample->get_mix_rate();
- v.check=last_check;
- v.volume=Math::db2linear(_default.volume_db+vol_change);
- v.pan=_default.pan;
- v.pan_depth=_default.depth;
- v.pan_height=_default.height;
- v.filter_type=_default.filter_type;
- v.filter_cutoff=_default.filter_cutoff;
- v.filter_resonance=_default.filter_resonance;
- v.filter_gain=_default.filter_gain;
- v.chorus_send=_default.chorus_send;
- v.reverb_room=_default.reverb_room;
- v.reverb_send=_default.reverb_send;
-
- AudioServer::get_singleton()->voice_play(v.voice,sample->get_rid());
- AudioServer::get_singleton()->voice_set_mix_rate(v.voice,v.mix_rate);
- AudioServer::get_singleton()->voice_set_volume(v.voice,v.volume);
- AudioServer::get_singleton()->voice_set_pan(v.voice,v.pan,v.pan_depth,v.pan_height);
- AudioServer::get_singleton()->voice_set_filter(v.voice,(AudioServer::FilterType)v.filter_type,v.filter_cutoff,v.filter_resonance,v.filter_gain);
- AudioServer::get_singleton()->voice_set_chorus(v.voice,v.chorus_send);
- AudioServer::get_singleton()->voice_set_reverb(v.voice,(AudioServer::ReverbRoomType)v.reverb_room,v.reverb_send);
-
- v.active=true;
-
- if (unique) {
-
- for(int i=0;i<voices.size();i++) {
-
- if (!voices[i].active || uint32_t(i)==last_id)
- continue;
-
- AudioServer::get_singleton()->voice_stop(voices[i].voice);
-
- voices[i].clear();
- }
-
- }
-
- return last_id | (last_check<<16);
-}
-
-void SamplePlayer::stop_all() {
-
-
- for(int i=0;i<voices.size();i++) {
-
- if (!voices[i].active)
- continue;
-
- AudioServer::get_singleton()->voice_stop(voices[i].voice);
- voices[i].clear();
- }
-
-}
-
-#define _GET_VOICE\
- uint32_t voice=p_voice&0xFFFF;\
- ERR_FAIL_COND(voice >= (uint32_t)voices.size());\
- Voice &v=voices[voice];\
- if (v.check!=uint32_t(p_voice>>16))\
- return;\
- ERR_FAIL_COND(!v.active);
-
-void SamplePlayer::stop(VoiceID p_voice) {
-
- _GET_VOICE
-
- AudioServer::get_singleton()->voice_stop(v.voice);
- v.active=false;
-
-}
-
-void SamplePlayer::set_mix_rate(VoiceID p_voice, int p_mix_rate) {
-
- _GET_VOICE
-
- v.mix_rate=p_mix_rate;
- AudioServer::get_singleton()->voice_set_mix_rate(v.voice,v.mix_rate);
-
-}
-void SamplePlayer::set_pitch_scale(VoiceID p_voice, float p_pitch_scale) {
-
- _GET_VOICE
-
- v.mix_rate=v.sample_mix_rate*p_pitch_scale;
- AudioServer::get_singleton()->voice_set_mix_rate(v.voice,v.mix_rate);
-
-}
-void SamplePlayer::set_volume(VoiceID p_voice, float p_volume) {
-
-
- _GET_VOICE
- v.volume=p_volume;
- AudioServer::get_singleton()->voice_set_volume(v.voice,v.volume);
-
-}
-
-void SamplePlayer::set_volume_db(VoiceID p_voice, float p_db) {
-
- //@TODO handle 0 volume as -80db or something
- _GET_VOICE
- v.volume=Math::db2linear(p_db);
- AudioServer::get_singleton()->voice_set_volume(v.voice,v.volume);
-
-}
-
-void SamplePlayer::set_pan(VoiceID p_voice, float p_pan,float p_pan_depth,float p_pan_height) {
-
- _GET_VOICE
- v.pan=p_pan;
- v.pan_depth=p_pan_depth;
- v.pan_height=p_pan_height;
-
- AudioServer::get_singleton()->voice_set_pan(v.voice,v.pan,v.pan_depth,v.pan_height);
-
-}
-
-void SamplePlayer::set_filter(VoiceID p_voice,FilterType p_filter,float p_cutoff,float p_resonance,float p_gain) {
-
- _GET_VOICE
- v.filter_type=p_filter;
- v.filter_cutoff=p_cutoff;
- v.filter_resonance=p_resonance;
- v.filter_gain=p_gain;
-
- AudioServer::get_singleton()->voice_set_filter(v.voice,(AudioServer::FilterType)p_filter,p_cutoff,p_resonance);
-
-}
-void SamplePlayer::set_chorus(VoiceID p_voice,float p_send) {
-
- _GET_VOICE
- v.chorus_send=p_send;
-
- AudioServer::get_singleton()->voice_set_chorus(v.voice,p_send);
-
-}
-void SamplePlayer::set_reverb(VoiceID p_voice,ReverbRoomType p_room,float p_send) {
-
- _GET_VOICE
- v.reverb_room=p_room;
- v.reverb_send=p_send;
-
- AudioServer::get_singleton()->voice_set_reverb(v.voice,(AudioServer::ReverbRoomType)p_room,p_send);
-
-}
-
-#define _GET_VOICE_V(m_ret)\
- uint32_t voice=p_voice&0xFFFF;\
- ERR_FAIL_COND_V(voice >= (uint32_t)voices.size(),m_ret);\
- const Voice &v=voices[voice];\
- if (v.check!=(p_voice>>16))\
- return m_ret;\
- ERR_FAIL_COND_V(!v.active,m_ret);
-
-
-int SamplePlayer::get_mix_rate(VoiceID p_voice) const {
-
- _GET_VOICE_V(0);
-
- return v.mix_rate;
-}
-float SamplePlayer::get_pitch_scale(VoiceID p_voice) const {
-
- _GET_VOICE_V(0);
- return v.sample_mix_rate/(float)v.mix_rate;
-}
-float SamplePlayer::get_volume(VoiceID p_voice) const {
-
- _GET_VOICE_V(0);
- return v.volume;
-}
-
-
-float SamplePlayer::get_volume_db(VoiceID p_voice) const {
-
- _GET_VOICE_V(0);
- return Math::linear2db(v.volume);
-}
-
-float SamplePlayer::get_pan(VoiceID p_voice) const {
-
- _GET_VOICE_V(0);
- return v.pan;
-}
-float SamplePlayer::get_pan_depth(VoiceID p_voice) const {
-
-
- _GET_VOICE_V(0);
- return v.pan_depth;
-}
-float SamplePlayer::get_pan_height(VoiceID p_voice) const {
-
- _GET_VOICE_V(0);
-
- return v.pan_height;
-}
-SamplePlayer::FilterType SamplePlayer::get_filter_type(VoiceID p_voice) const {
-
- _GET_VOICE_V(FILTER_NONE);
-
- return v.filter_type;
-}
-float SamplePlayer::get_filter_cutoff(VoiceID p_voice) const {
-
- _GET_VOICE_V(0);
-
- return v.filter_cutoff;
-}
-float SamplePlayer::get_filter_resonance(VoiceID p_voice) const {
-
- _GET_VOICE_V(0);
-
- return v.filter_resonance;
-}
-
-float SamplePlayer::get_filter_gain(VoiceID p_voice) const {
-
- _GET_VOICE_V(0);
-
- return v.filter_gain;
-}
-float SamplePlayer::get_chorus(VoiceID p_voice) const {
-
- _GET_VOICE_V(0);
-
- return v.chorus_send;
-}
-SamplePlayer::ReverbRoomType SamplePlayer::get_reverb_room(VoiceID p_voice) const {
-
- _GET_VOICE_V(REVERB_SMALL);
-
- return v.reverb_room;
-}
-
-float SamplePlayer::get_reverb(VoiceID p_voice) const {
-
- _GET_VOICE_V(0);
-
- return v.reverb_send;
-}
-
-bool SamplePlayer::is_voice_active(VoiceID p_voice) const {
-
- _GET_VOICE_V(false);
- return v.active && AudioServer::get_singleton()->voice_is_active(v.voice);
-
-}
-bool SamplePlayer::is_active() const {
-
- for(int i=0;i<voices.size();i++) {
-
- if (voices[i].active && AudioServer::get_singleton()->voice_is_active(voices[i].voice))
- return true;
-
-
- }
-
- return false;
-}
-
-
-
-void SamplePlayer::set_sample_library(const Ref<SampleLibrary>& p_library) {
-
- library=p_library;
- _change_notify();
-}
-
-Ref<SampleLibrary> SamplePlayer::get_sample_library() const {
-
- return library;
-}
-
-
-
-void SamplePlayer::set_default_pitch_scale(float p_pitch_scale) {
-
- _default.pitch_scale=p_pitch_scale;
-}
-void SamplePlayer::set_default_volume(float p_volume) {
-
- _default.volume_db=Math::linear2db(p_volume);
-}
-void SamplePlayer::set_default_volume_db(float p_db) {
-
- _default.volume_db=p_db;
-}
-void SamplePlayer::set_default_pan(float p_pan,float p_pan_depth,float p_pan_height) {
-
- _default.pan=p_pan;
- _default.depth=p_pan_depth;
- _default.height=p_pan_height;
-
-}
-void SamplePlayer::set_default_filter(FilterType p_filter,float p_cutoff,float p_resonance,float p_gain) {
-
- _default.filter_type=p_filter;
- _default.filter_cutoff=p_cutoff;
- _default.filter_resonance=p_resonance;
- _default.filter_gain=p_gain;
-}
-void SamplePlayer::set_default_chorus(float p_send) {
-
- _default.chorus_send=p_send;
-
-}
-void SamplePlayer::set_default_reverb(ReverbRoomType p_room,float p_send) {
-
- _default.reverb_room=p_room;
- _default.reverb_send=p_send;
-}
-
-float SamplePlayer::get_default_volume() const {
-
- return Math::db2linear(_default.volume_db);
-}
-float SamplePlayer::get_default_volume_db() const {
-
- return _default.volume_db;
-}
-float SamplePlayer::get_default_pitch_scale() const {
-
- return _default.pitch_scale;
-}
-
-
-float SamplePlayer::get_default_pan() const {
-
- return _default.pan;
-}
-float SamplePlayer::get_default_pan_depth() const {
-
- return _default.depth;
-}
-float SamplePlayer::get_default_pan_height() const {
-
- return _default.height;
-}
-SamplePlayer::FilterType SamplePlayer::get_default_filter_type() const {
-
- return _default.filter_type;
-}
-float SamplePlayer::get_default_filter_cutoff() const {
-
- return _default.filter_cutoff;
-}
-float SamplePlayer::get_default_filter_resonance() const {
-
- return _default.filter_resonance;
-}
-float SamplePlayer::get_default_filter_gain() const {
-
- return _default.filter_gain;
-}
-float SamplePlayer::get_default_chorus() const {
-
- return _default.chorus_send;
-}
-SamplePlayer::ReverbRoomType SamplePlayer::get_default_reverb_room() const {
-
- return _default.reverb_room;
-}
-float SamplePlayer::get_default_reverb() const {
-
- return _default.reverb_send;
-}
-
-String SamplePlayer::get_configuration_warning() const {
-
- if (library.is_null()) {
- return TTR("A SampleLibrary resource must be created or set in the 'samples' property in order for SamplePlayer to play sound.");
- }
-
- return String();
-}
-
-void SamplePlayer::_bind_methods() {
-
- ClassDB::bind_method(_MD("set_sample_library","library:SampleLibrary"),&SamplePlayer::set_sample_library );
- ClassDB::bind_method(_MD("get_sample_library:SampleLibrary"),&SamplePlayer::get_sample_library );
-
- ClassDB::bind_method(_MD("set_polyphony","max_voices"),&SamplePlayer::set_polyphony );
- ClassDB::bind_method(_MD("get_polyphony"),&SamplePlayer::get_polyphony );
-
- ClassDB::bind_method(_MD("play","name","unique"),&SamplePlayer::play, DEFVAL(false) );
- ClassDB::bind_method(_MD("stop","voice"),&SamplePlayer::stop );
- ClassDB::bind_method(_MD("stop_all"),&SamplePlayer::stop_all );
-
- ClassDB::bind_method(_MD("set_mix_rate","voice","hz"),&SamplePlayer::set_mix_rate );
- ClassDB::bind_method(_MD("set_pitch_scale","voice","ratio"),&SamplePlayer::set_pitch_scale );
- ClassDB::bind_method(_MD("set_volume","voice","volume"),&SamplePlayer::set_volume );
- ClassDB::bind_method(_MD("set_volume_db","voice","db"),&SamplePlayer::set_volume_db );
- ClassDB::bind_method(_MD("set_pan","voice","pan","depth","height"),&SamplePlayer::set_pan,DEFVAL(0),DEFVAL(0) );
- ClassDB::bind_method(_MD("set_filter","voice","type","cutoff_hz","resonance","gain"),&SamplePlayer::set_filter,DEFVAL(0) );
- ClassDB::bind_method(_MD("set_chorus","voice","send"),&SamplePlayer::set_chorus );
- ClassDB::bind_method(_MD("set_reverb","voice","room_type","send"),&SamplePlayer::set_reverb );
-
- ClassDB::bind_method(_MD("get_mix_rate","voice"),&SamplePlayer::get_mix_rate );
- ClassDB::bind_method(_MD("get_pitch_scale","voice"),&SamplePlayer::get_pitch_scale );
- ClassDB::bind_method(_MD("get_volume","voice"),&SamplePlayer::get_volume );
- ClassDB::bind_method(_MD("get_volume_db","voice"),&SamplePlayer::get_volume_db );
- ClassDB::bind_method(_MD("get_pan","voice"),&SamplePlayer::get_pan );
- ClassDB::bind_method(_MD("get_pan_depth","voice"),&SamplePlayer::get_pan_depth );
- ClassDB::bind_method(_MD("get_pan_height","voice"),&SamplePlayer::get_pan_height );
- ClassDB::bind_method(_MD("get_filter_type","voice"),&SamplePlayer::get_filter_type );
- ClassDB::bind_method(_MD("get_filter_cutoff","voice"),&SamplePlayer::get_filter_cutoff );
- ClassDB::bind_method(_MD("get_filter_resonance","voice"),&SamplePlayer::get_filter_resonance );
- ClassDB::bind_method(_MD("get_filter_gain","voice"),&SamplePlayer::get_filter_gain );
- ClassDB::bind_method(_MD("get_chorus","voice"),&SamplePlayer::get_chorus );
- ClassDB::bind_method(_MD("get_reverb_room","voice"),&SamplePlayer::get_reverb_room );
- ClassDB::bind_method(_MD("get_reverb","voice"),&SamplePlayer::get_reverb );
-
- ClassDB::bind_method(_MD("set_default_pitch_scale","ratio"),&SamplePlayer::set_default_pitch_scale );
- ClassDB::bind_method(_MD("set_default_volume","volume"),&SamplePlayer::set_default_volume );
- ClassDB::bind_method(_MD("set_default_volume_db","db"),&SamplePlayer::set_default_volume_db );
- ClassDB::bind_method(_MD("set_default_pan","pan","depth","height"),&SamplePlayer::set_default_pan,DEFVAL(0),DEFVAL(0) );
- ClassDB::bind_method(_MD("set_default_filter","type","cutoff_hz","resonance","gain"),&SamplePlayer::set_default_filter,DEFVAL(0) );
- ClassDB::bind_method(_MD("set_default_chorus","send"),&SamplePlayer::set_default_chorus );
- ClassDB::bind_method(_MD("set_default_reverb","room_type","send"),&SamplePlayer::set_default_reverb );
-
- ClassDB::bind_method(_MD("get_default_pitch_scale"),&SamplePlayer::get_default_pitch_scale );
- ClassDB::bind_method(_MD("get_default_volume"),&SamplePlayer::get_default_volume );
- ClassDB::bind_method(_MD("get_default_volume_db"),&SamplePlayer::get_default_volume_db );
- ClassDB::bind_method(_MD("get_default_pan"),&SamplePlayer::get_default_pan );
- ClassDB::bind_method(_MD("get_default_pan_depth"),&SamplePlayer::get_default_pan_depth );
- ClassDB::bind_method(_MD("get_default_pan_height"),&SamplePlayer::get_default_pan_height );
- ClassDB::bind_method(_MD("get_default_filter_type"),&SamplePlayer::get_default_filter_type );
- ClassDB::bind_method(_MD("get_default_filter_cutoff"),&SamplePlayer::get_default_filter_cutoff );
- ClassDB::bind_method(_MD("get_default_filter_resonance"),&SamplePlayer::get_default_filter_resonance );
- ClassDB::bind_method(_MD("get_default_filter_gain"),&SamplePlayer::get_default_filter_gain );
- ClassDB::bind_method(_MD("get_default_chorus"),&SamplePlayer::get_default_chorus );
- ClassDB::bind_method(_MD("get_default_reverb_room"),&SamplePlayer::get_default_reverb_room );
- ClassDB::bind_method(_MD("get_default_reverb"),&SamplePlayer::get_default_reverb );
-
- ClassDB::bind_method(_MD("is_active"),&SamplePlayer::is_active );
- ClassDB::bind_method(_MD("is_voice_active","voice"),&SamplePlayer::is_voice_active );
-
- BIND_CONSTANT( FILTER_NONE);
- BIND_CONSTANT( FILTER_LOWPASS);
- BIND_CONSTANT( FILTER_BANDPASS);
- BIND_CONSTANT( FILTER_HIPASS);
- BIND_CONSTANT( FILTER_NOTCH);
- BIND_CONSTANT( FILTER_PEAK);
- BIND_CONSTANT( FILTER_BANDLIMIT); ///< cutoff is LP resonace is HP
- BIND_CONSTANT( FILTER_LOW_SHELF);
- BIND_CONSTANT( FILTER_HIGH_SHELF);
-
- BIND_CONSTANT( REVERB_SMALL );
- BIND_CONSTANT( REVERB_MEDIUM );
- BIND_CONSTANT( REVERB_LARGE );
- BIND_CONSTANT( REVERB_HALL );
-
- BIND_CONSTANT( INVALID_VOICE_ID );
-
-}
-
-
-SamplePlayer::SamplePlayer() {
-
- voices.resize(1);
-
- _default.pitch_scale=1;
- _default.volume_db=0;
- _default.pan=0;
- _default.depth=0;
- _default.height=0;
- _default.filter_type=FILTER_NONE;
- _default.filter_cutoff=5000;
- _default.filter_resonance=1;
- _default.filter_gain=1;
- _default.chorus_send=0;
- _default.reverb_room=REVERB_LARGE;
- _default.reverb_send=0;
- last_id=0;
- last_check=0;
-
-
-}
-
-SamplePlayer::~SamplePlayer() {
-
-
-}
diff --git a/scene/audio/sample_player.h b/scene/audio/sample_player.h
deleted file mode 100644
index 8c4e6418aa..0000000000
--- a/scene/audio/sample_player.h
+++ /dev/null
@@ -1,200 +0,0 @@
-/*************************************************************************/
-/* sample_player.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef SAMPLE_PLAYER_H
-#define SAMPLE_PLAYER_H
-
-#include "scene/main/node.h"
-#include "scene/resources/sample_library.h"
-
-class SamplePlayer : public Node {
-
- GDCLASS( SamplePlayer, Node );
- OBJ_CATEGORY("Audio Nodes");
-public:
-
-
- enum FilterType {
- FILTER_NONE,
- FILTER_LOWPASS,
- FILTER_BANDPASS,
- FILTER_HIPASS,
- FILTER_NOTCH,
- FILTER_PEAK,
- FILTER_BANDLIMIT, ///< cutoff is LP resonace is HP
- FILTER_LOW_SHELF,
- FILTER_HIGH_SHELF,
- };
-
- enum ReverbRoomType {
-
- REVERB_SMALL,
- REVERB_MEDIUM,
- REVERB_LARGE,
- REVERB_HALL
- };
-
- enum {
-
- INVALID_VOICE_ID=0xFFFFFFFF
- };
-
- typedef uint32_t VoiceID;
-
-private:
-
- Ref<SampleLibrary> library;
-
- struct Voice {
-
- RID voice;
- uint32_t check;
- bool active;
-
- int sample_mix_rate;
- int mix_rate;
- float volume;
- float pan;
- float pan_depth;
- float pan_height;
- FilterType filter_type;
- float filter_cutoff;
- float filter_resonance;
- float filter_gain;
- float chorus_send;
- ReverbRoomType reverb_room;
- float reverb_send;
-
- void clear();
- Voice();
- ~Voice();
- };
-
- Vector<Voice> voices;
-
- struct Default {
-
- float reverb_send;
- float pitch_scale;
- float volume_db;
- float pan;
- float depth;
- float height;
- FilterType filter_type;
- float filter_cutoff;
- float filter_resonance;
- float filter_gain;
- float chorus_send;
- ReverbRoomType reverb_room;
-
- } _default;
-
- uint32_t last_id;
- uint16_t last_check;
- String played_back;
-protected:
-
- bool _set(const StringName& p_name, const Variant& p_value);
- bool _get(const StringName& p_name,Variant &r_ret) const;
- void _get_property_list(List<PropertyInfo> *p_list) const;
-
- static void _bind_methods();
-
-public:
-
- void set_sample_library(const Ref<SampleLibrary>& p_library);
- Ref<SampleLibrary> get_sample_library() const;
-
- void set_polyphony(int p_voice_count);
- int get_polyphony() const;
-
- VoiceID play(const String& p_name,bool unique=false);
- void stop(VoiceID p_voice);
- void stop_all();
- bool is_voice_active(VoiceID) const;
- bool is_active() const;
-
- void set_mix_rate(VoiceID p_voice, int p_mix_rate);
- void set_pitch_scale(VoiceID p_voice, float p_pitch_scale);
- void set_volume(VoiceID p_voice, float p_volume);
- void set_volume_db(VoiceID p_voice, float p_db);
- void set_pan(VoiceID p_voice, float p_pan,float p_pan_depth=0,float p_pan_height=0);
- void set_filter(VoiceID p_voice,FilterType p_filter,float p_cutoff,float p_resonance,float p_gain);
- void set_chorus(VoiceID p_voice,float p_send);
- void set_reverb(VoiceID p_voice,ReverbRoomType p_room,float p_send);
-
- int get_mix_rate(VoiceID p_voice) const;
- float get_pitch_scale(VoiceID p_voice) const;
- float get_volume(VoiceID p_voice) const;
- float get_volume_db(VoiceID p_voice) const;
-
- float get_pan(VoiceID p_voice) const;
- float get_pan_depth(VoiceID p_voice) const;
- float get_pan_height(VoiceID p_voice) const;
- FilterType get_filter_type(VoiceID p_voice) const;
- float get_filter_cutoff(VoiceID p_voice) const;
- float get_filter_resonance(VoiceID p_voice) const;
- float get_filter_gain(VoiceID p_voice) const;
- float get_chorus(VoiceID p_voice) const;
- ReverbRoomType get_reverb_room(VoiceID p_voice) const;
- float get_reverb(VoiceID p_voice) const;
-
-
-
- void set_default_pitch_scale(float p_pitch_scale);
- void set_default_volume(float p_volume);
- void set_default_volume_db(float p_db);
- void set_default_pan(float p_pan,float p_pan_depth=0,float p_pan_height=0);
- void set_default_filter(FilterType p_filter,float p_cutoff,float p_resonance,float p_gain);
- void set_default_chorus(float p_send);
- void set_default_reverb(ReverbRoomType p_room,float p_send);
-
- float get_default_volume() const;
- float get_default_volume_db() const;
- float get_default_pitch_scale() const;
- float get_default_pan() const;
- float get_default_pan_depth() const;
- float get_default_pan_height() const;
- FilterType get_default_filter_type() const;
- float get_default_filter_cutoff() const;
- float get_default_filter_resonance() const;
- float get_default_filter_gain() const;
- float get_default_chorus() const;
- ReverbRoomType get_default_reverb_room() const;
- float get_default_reverb() const;
-
- String get_configuration_warning() const;
-
- SamplePlayer();
- ~SamplePlayer();
-};
-
-VARIANT_ENUM_CAST( SamplePlayer::FilterType );
-VARIANT_ENUM_CAST( SamplePlayer::ReverbRoomType );
-
-#endif // SAMPLE_PLAYER_H
diff --git a/scene/audio/sound_room_params.cpp b/scene/audio/sound_room_params.cpp
deleted file mode 100644
index d08bc5d6b8..0000000000
--- a/scene/audio/sound_room_params.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-/*************************************************************************/
-/* sound_room_params.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "sound_room_params.h"
-
-#include "scene/main/viewport.h"
-
-#ifndef _3D_DISABLED
-void SoundRoomParams::_update_sound_room() {
-
- if (!room.is_valid())
- return;
-
- for(int i=0;i<PARAM_MAX;i++) {
-
- SpatialSoundServer::get_singleton()->room_set_param(room,SpatialSoundServer::RoomParam(i),params[i]);
-
- }
-
- SpatialSoundServer::get_singleton()->room_set_reverb(room,SpatialSoundServer::RoomReverb(reverb));
- SpatialSoundServer::get_singleton()->room_set_force_params_to_all_sources(room,force_params_for_all_sources);
-}
-
-
-void SoundRoomParams::_notification(int p_what) {
-
-
- switch(p_what) {
-
-
- case NOTIFICATION_ENTER_TREE: {
-//#if 0
- Node *n=this;
- Room *room_instance=NULL;
- while(n) {
-
- room_instance=n->cast_to<Room>();
- if (room_instance) {
-
- break;
- }
- if (n->cast_to<Viewport>())
- break;
-
- n=n->get_parent();
- }
-
-
- if (room_instance) {
- room=room_instance->get_sound_room();
- } else {
- room=get_viewport()->find_world()->get_sound_space();
- }
-
- _update_sound_room();
-//#endif
-
- } break;
- case NOTIFICATION_EXIT_TREE: {
-
- room=RID();
-
- } break;
- }
-}
-
-
-void SoundRoomParams::set_param(Params p_param, float p_value) {
-
- ERR_FAIL_INDEX(p_param,PARAM_MAX);
- params[p_param]=p_value;
- if (room.is_valid())
- SpatialSoundServer::get_singleton()->room_set_param(room,SpatialSoundServer::RoomParam(p_param),p_value);
-}
-
-float SoundRoomParams::get_param(Params p_param) const {
-
- ERR_FAIL_INDEX_V(p_param,PARAM_MAX,0);
- return params[p_param];
-}
-
-
-void SoundRoomParams::set_reverb_mode(Reverb p_mode) {
-
- ERR_FAIL_INDEX(p_mode,4);
- reverb=p_mode;
- if (room.is_valid())
- SpatialSoundServer::get_singleton()->room_set_reverb(room,SpatialSoundServer::RoomReverb(p_mode));
-}
-
-SoundRoomParams::Reverb SoundRoomParams::get_reverb_mode() const {
-
- return reverb;
-}
-
-
-void SoundRoomParams::set_force_params_to_all_sources(bool p_force) {
-
- force_params_for_all_sources=p_force;
- if (room.is_valid())
- SpatialSoundServer::get_singleton()->room_set_force_params_to_all_sources(room,p_force);
-}
-
-bool SoundRoomParams::is_forcing_params_to_all_sources() {
-
- return force_params_for_all_sources;
-}
-
-
-void SoundRoomParams::_bind_methods() {
-
- ClassDB::bind_method(_MD("set_param","param","value"),&SoundRoomParams::set_param );
- ClassDB::bind_method(_MD("get_param","param"),&SoundRoomParams::get_param );
-
- ClassDB::bind_method(_MD("set_reverb_mode","reverb_mode","value"),&SoundRoomParams::set_reverb_mode );
- ClassDB::bind_method(_MD("get_reverb_mode","reverb_mode"),&SoundRoomParams::get_reverb_mode );
-
- ClassDB::bind_method(_MD("set_force_params_to_all_sources","enabled"),&SoundRoomParams::set_force_params_to_all_sources );
- ClassDB::bind_method(_MD("is_forcing_params_to_all_sources"),&SoundRoomParams::is_forcing_params_to_all_sources );
-
-
- ADD_PROPERTY( PropertyInfo( Variant::INT, "reverb/mode", PROPERTY_HINT_ENUM, "Small,Medium,Large,Hall"), _SCS("set_reverb_mode"), _SCS("get_reverb_mode") );
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/speed_of_scale", PROPERTY_HINT_RANGE, "0.01,16,0.01"), _SCS("set_param"), _SCS("get_param"), PARAM_SPEED_OF_SOUND_SCALE);
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/doppler_factor",PROPERTY_HINT_RANGE, "0.01,16,0.01"), _SCS("set_param"), _SCS("get_param"), PARAM_DOPPLER_FACTOR );
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/pitch_scale",PROPERTY_HINT_RANGE, "0.01,32,0.01"), _SCS("set_param"), _SCS("get_param"), PARAM_PITCH_SCALE );
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/volume_scale_db",PROPERTY_HINT_RANGE, "-80,24,0.01"), _SCS("set_param"), _SCS("get_param"), PARAM_VOLUME_SCALE_DB );
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/reverb_send",PROPERTY_HINT_RANGE, "0,1,0.01"), _SCS("set_param"), _SCS("get_param"), PARAM_REVERB_SEND );
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/chorus_send",PROPERTY_HINT_RANGE, "0,1,0.01"), _SCS("set_param"), _SCS("get_param"), PARAM_CHORUS_SEND );
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/attenuation_scale",PROPERTY_HINT_RANGE, "0.01,32,0.01"), _SCS("set_param"), _SCS("get_param"), PARAM_ATTENUATION_SCALE );
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/attenuation_hf_cutoff",PROPERTY_HINT_RANGE, "30,16384,1"), _SCS("set_param"), _SCS("get_param"), PARAM_ATTENUATION_HF_CUTOFF );
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/attenuation_hf_floor_db",PROPERTY_HINT_RANGE, "-80,24,0.01"), _SCS("set_param"), _SCS("get_param"), PARAM_ATTENUATION_HF_FLOOR_DB );
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/attenuation_hf_ratio_exp",PROPERTY_HINT_RANGE, "0.01,32,0.01"), _SCS("set_param"), _SCS("get_param"), PARAM_ATTENUATION_HF_RATIO_EXP );
- ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/attenuation_reverb_scale",PROPERTY_HINT_RANGE, "0.01,32,0.01"), _SCS("set_param"), _SCS("get_param"), PARAM_ATTENUATION_REVERB_SCALE );
- ADD_PROPERTY( PropertyInfo( Variant::BOOL, "force_to_all_sources"),_SCS("set_force_params_to_all_sources"),_SCS("is_forcing_params_to_all_sources") );
-
-}
-
-
-SoundRoomParams::SoundRoomParams() {
-
- reverb=REVERB_HALL;
- params[PARAM_SPEED_OF_SOUND_SCALE]=1;
- params[PARAM_DOPPLER_FACTOR]=1.0;
- params[PARAM_PITCH_SCALE]=1.0;
- params[PARAM_VOLUME_SCALE_DB]=0;
- params[PARAM_REVERB_SEND]=0;
- params[PARAM_CHORUS_SEND]=0;
- params[PARAM_ATTENUATION_SCALE]=1.0;
- params[PARAM_ATTENUATION_HF_CUTOFF]=5000;
- params[PARAM_ATTENUATION_HF_FLOOR_DB]=-24.0;
- params[PARAM_ATTENUATION_HF_RATIO_EXP]=1.0;
- params[PARAM_ATTENUATION_REVERB_SCALE]=0.0;
- force_params_for_all_sources=false;
-}
-#endif
diff --git a/scene/audio/sound_room_params.h b/scene/audio/sound_room_params.h
deleted file mode 100644
index 3cdffda652..0000000000
--- a/scene/audio/sound_room_params.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*************************************************************************/
-/* sound_room_params.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef SOUND_ROOM_PARAMS_H
-#define SOUND_ROOM_PARAMS_H
-
-#include "scene/main/node.h"
-#include "servers/spatial_sound_server.h"
-
-
-#ifndef _3D_DISABLED
-
-#include "scene/3d/room_instance.h"
-class SoundRoomParams : public Node {
-
- GDCLASS( SoundRoomParams, Node );
-public:
-
- enum Params {
- PARAM_SPEED_OF_SOUND_SCALE=SpatialSoundServer::ROOM_PARAM_SPEED_OF_SOUND_SCALE,
- PARAM_DOPPLER_FACTOR=SpatialSoundServer::ROOM_PARAM_DOPPLER_FACTOR,
- PARAM_PITCH_SCALE=SpatialSoundServer::ROOM_PARAM_PITCH_SCALE,
- PARAM_VOLUME_SCALE_DB=SpatialSoundServer::ROOM_PARAM_VOLUME_SCALE_DB,
- PARAM_REVERB_SEND=SpatialSoundServer::ROOM_PARAM_REVERB_SEND,
- PARAM_CHORUS_SEND=SpatialSoundServer::ROOM_PARAM_CHORUS_SEND,
- PARAM_ATTENUATION_SCALE=SpatialSoundServer::ROOM_PARAM_ATTENUATION_SCALE,
- PARAM_ATTENUATION_HF_CUTOFF=SpatialSoundServer::ROOM_PARAM_ATTENUATION_HF_CUTOFF,
- PARAM_ATTENUATION_HF_FLOOR_DB=SpatialSoundServer::ROOM_PARAM_ATTENUATION_HF_FLOOR_DB,
- PARAM_ATTENUATION_HF_RATIO_EXP=SpatialSoundServer::ROOM_PARAM_ATTENUATION_HF_RATIO_EXP,
- PARAM_ATTENUATION_REVERB_SCALE=SpatialSoundServer::ROOM_PARAM_ATTENUATION_REVERB_SCALE,
- PARAM_MAX=SpatialSoundServer::ROOM_PARAM_MAX
- };
-
- enum Reverb {
- REVERB_SMALL,
- REVERB_MEDIUM,
- REVERB_LARGE,
- REVERB_HALL
- };
-private:
-
- RID room;
-
- float params[PARAM_MAX];
- Reverb reverb;
- bool force_params_for_all_sources;
- void _update_sound_room();
-
-
-protected:
-
- void _notification(int p_what);
- static void _bind_methods();
-
-public:
-
-
- void set_param(Params p_param, float p_value);
- float get_param(Params p_param) const;
-
- void set_reverb_mode(Reverb p_mode);
- Reverb get_reverb_mode() const;
-
- void set_force_params_to_all_sources(bool p_force);
- bool is_forcing_params_to_all_sources();
-
- SoundRoomParams();
-};
-
-VARIANT_ENUM_CAST(SoundRoomParams::Params);
-VARIANT_ENUM_CAST(SoundRoomParams::Reverb);
-
-#endif
-
-#endif // SOUND_ROOM_PARAMS_H
diff --git a/scene/audio/stream_player.cpp b/scene/audio/stream_player.cpp
deleted file mode 100644
index 9e506034a6..0000000000
--- a/scene/audio/stream_player.cpp
+++ /dev/null
@@ -1,428 +0,0 @@
-/*************************************************************************/
-/* stream_player.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "stream_player.h"
-
-int StreamPlayer::InternalStream::get_channel_count() const {
-
- return player->sp_get_channel_count();
-}
-void StreamPlayer::InternalStream::set_mix_rate(int p_rate){
-
- return player->sp_set_mix_rate(p_rate);
-}
-bool StreamPlayer::InternalStream::mix(int32_t *p_buffer,int p_frames){
-
- return player->sp_mix(p_buffer,p_frames);
-}
-void StreamPlayer::InternalStream::update(){
-
- player->sp_update();
-}
-
-
-int StreamPlayer::sp_get_channel_count() const {
-
- return playback->get_channels();
-}
-
-void StreamPlayer::sp_set_mix_rate(int p_rate){
-
- server_mix_rate=p_rate;
-}
-
-bool StreamPlayer::sp_mix(int32_t *p_buffer,int p_frames) {
-
- if (resampler.is_ready() && !paused) {
- return resampler.mix(p_buffer,p_frames);
- }
-
- return false;
-}
-
-void StreamPlayer::sp_update() {
-
- //_THREAD_SAFE_METHOD_
- if (!paused && resampler.is_ready() && playback.is_valid()) {
-
- if (!playback->is_playing()) {
- //stream depleted data, but there's still audio in the ringbuffer
- //check that all this audio has been flushed before stopping the stream
- int to_mix = resampler.get_total() - resampler.get_todo();
- if (to_mix==0) {
- if (!stop_request) {
- stop_request=true;
- call_deferred("_do_stop");
- }
- return;
- }
-
- return;
- }
-
- int todo =resampler.get_todo();
- int wrote = playback->mix(resampler.get_write_buffer(),todo);
- resampler.write(wrote);
- }
-}
-
-void StreamPlayer::_do_stop() {
- stop();
- emit_signal("finished");
-}
-
-void StreamPlayer::_notification(int p_what) {
-
- switch(p_what) {
-
- case NOTIFICATION_ENTER_TREE: {
-
- //set_idle_process(false); //don't annoy
- if (stream.is_valid() && !get_tree()->is_editor_hint()) {
- if (resume_pos>=0) {
- play(resume_pos);
- resume_pos=-1;
- } else if (autoplay) {
- play();
- autoplay = false; //this line fix autoplay issues
- }
- }
-
- } break;
- case NOTIFICATION_EXIT_TREE: {
-
- if (is_playing()) {
- resume_pos=get_pos();
- }
- stop(); //wathever it may be doing, stop
- } break;
- }
-}
-
-
-
-void StreamPlayer::set_stream(const Ref<AudioStream> &p_stream) {
-
- stop();
-
- stream=p_stream;
-
- if (!stream.is_null()) {
- playback=stream->instance_playback();
- playback->set_loop(loops);
- playback->set_loop_restart_time(loop_point);
- AudioServer::get_singleton()->lock();
- resampler.setup(playback->get_channels(),playback->get_mix_rate(),server_mix_rate,buffering_ms,playback->get_minimum_buffer_size());
- AudioServer::get_singleton()->unlock();
- } else {
- AudioServer::get_singleton()->lock();
- resampler.clear();
- playback.unref();
- AudioServer::get_singleton()->unlock();
- }
-}
-
-Ref<AudioStream> StreamPlayer::get_stream() const {
-
- return stream;
-}
-
-
-void StreamPlayer::play(float p_from_offset) {
-
- ERR_FAIL_COND(!is_inside_tree());
- if (playback.is_null())
- return;
- //if (is_playing())
- stop();
-
- //_THREAD_SAFE_METHOD_
- playback->play(p_from_offset);
- //feed the ringbuffer as long as no update callback is going on
- sp_update();
- AudioServer::get_singleton()->stream_set_active(stream_rid,true);
- AudioServer::get_singleton()->stream_set_volume_scale(stream_rid,volume);
- /*
- if (stream->get_update_mode()!=AudioStream::UPDATE_NONE)
- set_idle_process(true);
- */
-
-}
-
-void StreamPlayer::stop() {
-
- if (!is_inside_tree())
- return;
- if (playback.is_null())
- return;
-
- //_THREAD_SAFE_METHOD_
- AudioServer::get_singleton()->stream_set_active(stream_rid,false);
- stop_request=false;
- playback->stop();
- resampler.flush();
-
-
- //set_idle_process(false);
-}
-
-bool StreamPlayer::is_playing() const {
-
- if (playback.is_null())
- return false;
-
- return playback->is_playing() || resampler.has_data();
-}
-
-void StreamPlayer::set_loop(bool p_enable) {
-
- loops=p_enable;
- if (playback.is_null())
- return;
- playback->set_loop(loops);
-
-}
-bool StreamPlayer::has_loop() const {
-
- return loops;
-}
-
-void StreamPlayer::set_volume(float p_vol) {
-
- volume=p_vol;
- if (stream_rid.is_valid())
- AudioServer::get_singleton()->stream_set_volume_scale(stream_rid,volume);
-}
-
-float StreamPlayer::get_volume() const {
-
- return volume;
-}
-
-void StreamPlayer::set_loop_restart_time(float p_secs) {
-
- loop_point=p_secs;
- if (playback.is_valid())
- playback->set_loop_restart_time(p_secs);
-}
-
-float StreamPlayer::get_loop_restart_time() const {
-
- return loop_point;
-}
-
-
-void StreamPlayer::set_volume_db(float p_db) {
-
- if (p_db<-79)
- set_volume(0);
- else
- set_volume(Math::db2linear(p_db));
-}
-
-float StreamPlayer::get_volume_db() const {
-
- if (volume==0)
- return -80;
- else
- return Math::linear2db(volume);
-}
-
-
-String StreamPlayer::get_stream_name() const {
-
- if (stream.is_null())
- return "<No Stream>";
- return stream->get_name();
-
-}
-
-int StreamPlayer::get_loop_count() const {
-
- if (playback.is_null())
- return 0;
- return playback->get_loop_count();
-
-}
-
-float StreamPlayer::get_pos() const {
-
- if (playback.is_null())
- return 0;
- return playback->get_pos();
-
-}
-
-float StreamPlayer::get_length() const {
-
- if (playback.is_null())
- return 0;
- return playback->get_length();
-}
-void StreamPlayer::seek_pos(float p_time) {
-
- if (playback.is_null())
- return;
- //works better...
- stop();
- playback->play(p_time);
-
-}
-
-void StreamPlayer::set_autoplay(bool p_enable) {
-
- autoplay=p_enable;
-}
-
-bool StreamPlayer::has_autoplay() const {
-
- return autoplay;
-}
-
-void StreamPlayer::set_paused(bool p_paused) {
-
- paused=p_paused;
- /*
- if (stream.is_valid())
- stream->set_paused(p_paused);
- */
-}
-
-bool StreamPlayer::is_paused() const {
-
- return paused;
-}
-
-void StreamPlayer::_set_play(bool p_play) {
-
- _play=p_play;
- if (is_inside_tree()) {
- if(_play)
- play();
- else
- stop();
- }
-
-}
-
-bool StreamPlayer::_get_play() const{
-
- return _play;
-}
-
-void StreamPlayer::set_buffering_msec(int p_msec) {
-
- buffering_ms=p_msec;
-}
-
-int StreamPlayer::get_buffering_msec() const{
-
- return buffering_ms;
-}
-
-
-
-void StreamPlayer::_bind_methods() {
-
- ClassDB::bind_method(_MD("set_stream","stream:AudioStream"),&StreamPlayer::set_stream);
- ClassDB::bind_method(_MD("get_stream:AudioStream"),&StreamPlayer::get_stream);
-
- ClassDB::bind_method(_MD("play","offset"),&StreamPlayer::play,DEFVAL(0));
- ClassDB::bind_method(_MD("stop"),&StreamPlayer::stop);
-
- ClassDB::bind_method(_MD("is_playing"),&StreamPlayer::is_playing);
-
- ClassDB::bind_method(_MD("set_paused","paused"),&StreamPlayer::set_paused);
- ClassDB::bind_method(_MD("is_paused"),&StreamPlayer::is_paused);
-
- ClassDB::bind_method(_MD("set_loop","enabled"),&StreamPlayer::set_loop);
- ClassDB::bind_method(_MD("has_loop"),&StreamPlayer::has_loop);
-
- ClassDB::bind_method(_MD("set_volume","volume"),&StreamPlayer::set_volume);
- ClassDB::bind_method(_MD("get_volume"),&StreamPlayer::get_volume);
-
- ClassDB::bind_method(_MD("set_volume_db","db"),&StreamPlayer::set_volume_db);
- ClassDB::bind_method(_MD("get_volume_db"),&StreamPlayer::get_volume_db);
-
- ClassDB::bind_method(_MD("set_buffering_msec","msec"),&StreamPlayer::set_buffering_msec);
- ClassDB::bind_method(_MD("get_buffering_msec"),&StreamPlayer::get_buffering_msec);
-
- ClassDB::bind_method(_MD("set_loop_restart_time","secs"),&StreamPlayer::set_loop_restart_time);
- ClassDB::bind_method(_MD("get_loop_restart_time"),&StreamPlayer::get_loop_restart_time);
-
- ClassDB::bind_method(_MD("get_stream_name"),&StreamPlayer::get_stream_name);
- ClassDB::bind_method(_MD("get_loop_count"),&StreamPlayer::get_loop_count);
-
- ClassDB::bind_method(_MD("get_pos"),&StreamPlayer::get_pos);
- ClassDB::bind_method(_MD("seek_pos","time"),&StreamPlayer::seek_pos);
-
- ClassDB::bind_method(_MD("set_autoplay","enabled"),&StreamPlayer::set_autoplay);
- ClassDB::bind_method(_MD("has_autoplay"),&StreamPlayer::has_autoplay);
-
- ClassDB::bind_method(_MD("get_length"),&StreamPlayer::get_length);
-
- ClassDB::bind_method(_MD("_set_play","play"),&StreamPlayer::_set_play);
- ClassDB::bind_method(_MD("_get_play"),&StreamPlayer::_get_play);
- ClassDB::bind_method(_MD("_do_stop"),&StreamPlayer::_do_stop);
-
- ADD_PROPERTY( PropertyInfo(Variant::OBJECT, "stream", PROPERTY_HINT_RESOURCE_TYPE,"AudioStream"), _SCS("set_stream"), _SCS("get_stream") );
- ADD_PROPERTY( PropertyInfo(Variant::BOOL, "play"), _SCS("_set_play"), _SCS("_get_play") );
- ADD_PROPERTY( PropertyInfo(Variant::BOOL, "loop"), _SCS("set_loop"), _SCS("has_loop") );
- ADD_PROPERTY( PropertyInfo(Variant::REAL, "volume_db", PROPERTY_HINT_RANGE,"-80,24,0.01"), _SCS("set_volume_db"), _SCS("get_volume_db") );
- ADD_PROPERTY( PropertyInfo(Variant::BOOL, "autoplay"), _SCS("set_autoplay"), _SCS("has_autoplay") );
- ADD_PROPERTY( PropertyInfo(Variant::BOOL, "paused"), _SCS("set_paused"), _SCS("is_paused") );
- ADD_PROPERTY( PropertyInfo(Variant::REAL, "loop_restart_time"), _SCS("set_loop_restart_time"), _SCS("get_loop_restart_time") );
- ADD_PROPERTY( PropertyInfo(Variant::INT, "buffering_ms"), _SCS("set_buffering_msec"), _SCS("get_buffering_msec") );
-
- ADD_SIGNAL(MethodInfo("finished"));
-}
-
-
-StreamPlayer::StreamPlayer() {
-
- volume=1;
- loops=false;
- paused=false;
- autoplay=false;
- _play=false;
- server_mix_rate=1;
- internal_stream.player=this;
- stream_rid=AudioServer::get_singleton()->audio_stream_create(&internal_stream);
- buffering_ms=500;
- loop_point=0;
- stop_request=false;
- resume_pos=-1;
-
-}
-
-StreamPlayer::~StreamPlayer() {
- AudioServer::get_singleton()->free(stream_rid);
- resampler.clear();
-
-
-}
diff --git a/scene/audio/stream_player.h b/scene/audio/stream_player.h
deleted file mode 100644
index 6031d86aa2..0000000000
--- a/scene/audio/stream_player.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/*************************************************************************/
-/* stream_player.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef STREAM_PLAYER_H
-#define STREAM_PLAYER_H
-
-#include "scene/resources/audio_stream.h"
-#include "scene/main/node.h"
-#include "servers/audio/audio_rb_resampler.h"
-
-class StreamPlayer : public Node {
-
- GDCLASS(StreamPlayer,Node);
-
- //_THREAD_SAFE_CLASS_
-
- struct InternalStream : public AudioServer::AudioStream {
- StreamPlayer *player;
- virtual int get_channel_count() const;
- virtual void set_mix_rate(int p_rate); //notify the stream of the mix rate
- virtual bool mix(int32_t *p_buffer,int p_frames);
- virtual void update();
- };
-
-
- InternalStream internal_stream;
- Ref<AudioStreamPlayback> playback;
- Ref<AudioStream> stream;
-
- int sp_get_channel_count() const;
- void sp_set_mix_rate(int p_rate); //notify the stream of the mix rate
- bool sp_mix(int32_t *p_buffer,int p_frames);
- void sp_update();
-
- int server_mix_rate;
-
- RID stream_rid;
- bool paused;
- bool autoplay;
- bool loops;
- float volume;
- float loop_point;
- int buffering_ms;
- volatile bool stop_request;
- float resume_pos;
-
- AudioRBResampler resampler;
-
- void _do_stop();
-
- bool _play;
- void _set_play(bool p_play);
- bool _get_play() const;
-protected:
- void _notification(int p_what);
-
- static void _bind_methods();
-public:
-
- void set_stream(const Ref<AudioStream> &p_stream);
- Ref<AudioStream> get_stream() const;
-
- void play(float p_from_offset=0);
- void stop();
- bool is_playing() const;
-
- void set_paused(bool p_paused);
- bool is_paused() const;
-
- void set_loop(bool p_enable);
- bool has_loop() const;
-
- void set_volume(float p_vol);
- float get_volume() const;
-
- void set_loop_restart_time(float p_secs);
- float get_loop_restart_time() const;
-
- void set_volume_db(float p_db);
- float get_volume_db() const;
-
- String get_stream_name() const;
-
- int get_loop_count() const;
-
- float get_pos() const;
- void seek_pos(float p_time);
- float get_length() const;
- void set_autoplay(bool p_vol);
- bool has_autoplay() const;
-
- void set_buffering_msec(int p_msec);
- int get_buffering_msec() const;
-
- StreamPlayer();
- ~StreamPlayer();
-};
-
-#endif // AUDIO_STREAM_PLAYER_H
diff --git a/scene/gui/box_container.cpp b/scene/gui/box_container.cpp
index 7ca44ac27b..9c5ddb3e7c 100644
--- a/scene/gui/box_container.cpp
+++ b/scene/gui/box_container.cpp
@@ -42,7 +42,7 @@ void BoxContainer::_resort() {
/** First pass, determine minimum size AND amount of stretchable elements */
- Size2i new_size=get_size();;
+ Size2i new_size=get_size();
int sep=get_constant("separation");//,vertical?"VBoxContainer":"HBoxContainer");
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp
index 533d24f998..e012874f5b 100644
--- a/scene/gui/control.cpp
+++ b/scene/gui/control.cpp
@@ -1715,7 +1715,7 @@ Control *Control::find_next_valid_focus() const {
if (!next_child) {
- next_child=const_cast<Control*>(this);;
+ next_child=const_cast<Control*>(this);
while(next_child) {
if (next_child->data.SI || next_child->data.RI)
diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp
index a3ed0a91cf..a42ef08bf3 100644
--- a/scene/gui/item_list.cpp
+++ b/scene/gui/item_list.cpp
@@ -300,7 +300,7 @@ void ItemList::move_item(int p_item,int p_to_pos) {
ERR_FAIL_INDEX(p_to_pos,items.size()+1);
Item it=items[p_item];
- items.remove(p_item);;
+ items.remove(p_item);
if (p_to_pos>p_item) {
p_to_pos--;
@@ -905,7 +905,7 @@ void ItemList::_notification(int p_what) {
Vector2 ofs;
int col=0;
int max_h=0;
- separators.clear();;
+ separators.clear();
for(int i=0;i<items.size();i++) {
if (current_columns>1 && items[i].rect_cache.size.width+ofs.x > fit_size) {
diff --git a/scene/gui/label.cpp b/scene/gui/label.cpp
index cd500a62bc..d32b4c6de4 100644
--- a/scene/gui/label.cpp
+++ b/scene/gui/label.cpp
@@ -204,7 +204,7 @@ void Label::_notification(int p_what) {
} break;
case ALIGN_CENTER: {
- x_ofs=int(size.width-(taken+spaces*space_w))/2;;
+ x_ofs=int(size.width-(taken+spaces*space_w))/2;
} break;
case ALIGN_RIGHT: {
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp
index 3a72e0e445..fe242ee708 100644
--- a/scene/gui/line_edit.cpp
+++ b/scene/gui/line_edit.cpp
@@ -1320,7 +1320,7 @@ void LineEdit::_bind_methods() {
ADD_PROPERTYNZ( PropertyInfo( Variant::STRING, "placeholder_text" ), _SCS("set_placeholder"),_SCS("get_placeholder") );
ADD_PROPERTYNZ( PropertyInfo( Variant::REAL, "placeholder_alpha",PROPERTY_HINT_RANGE,"0,1,0.001" ), _SCS("set_placeholder_alpha"),_SCS("get_placeholder_alpha") );
ADD_GROUP("Caret","caret_");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "caret_blink"), _SCS("cursor_set_blink_enabled"), _SCS("cursor_get_blink_enabled"));;
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "caret_blink"), _SCS("cursor_set_blink_enabled"), _SCS("cursor_get_blink_enabled"));
ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "caret_blink_speed",PROPERTY_HINT_RANGE,"0.1,10,0.1"), _SCS("cursor_set_blink_speed"),_SCS("cursor_get_blink_speed") );
}
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp
index 434fb36e24..5fe5f47d1b 100644
--- a/scene/gui/rich_text_label.cpp
+++ b/scene/gui/rich_text_label.cpp
@@ -103,7 +103,7 @@ void RichTextLabel::_process_line(ItemFrame *p_frame,const Vector2& p_ofs,int &y
int line_ofs=0;
int margin=_find_margin(it,p_base_font);
- Align align=_find_align(it);;
+ Align align=_find_align(it);
int line=0;
int spaces=0;
diff --git a/scene/gui/separator.h b/scene/gui/separator.h
index 5fb17e1c2e..56d8a9724f 100644
--- a/scene/gui/separator.h
+++ b/scene/gui/separator.h
@@ -45,7 +45,7 @@ protected:
void _notification(int p_what);
public:
- virtual Size2 get_minimum_size() const;;
+ virtual Size2 get_minimum_size() const;
Separator();
~Separator();
diff --git a/scene/gui/tab_container.cpp b/scene/gui/tab_container.cpp
index 52d26b29de..11802ab0fb 100644
--- a/scene/gui/tab_container.cpp
+++ b/scene/gui/tab_container.cpp
@@ -40,7 +40,7 @@ int TabContainer::_get_top_margin() const {
int h = MAX( tab_bg->get_minimum_size().height,tab_fg->get_minimum_size().height);
- int ch = font->get_height();;
+ int ch = font->get_height();
for(int i=0;i<get_child_count();i++) {
Control *c = get_child(i)->cast_to<Control>();
@@ -99,7 +99,7 @@ void TabContainer::_gui_input(const InputEvent& p_event) {
pp_pos.y+=menu->get_height();
popup->set_global_pos( pp_pos );
- popup->popup();;
+ popup->popup();
return;
}
pos.x-=tabs_ofs_cache;
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp
index 8efff21fc9..d1a8c458ba 100644
--- a/scene/gui/text_edit.cpp
+++ b/scene/gui/text_edit.cpp
@@ -247,7 +247,7 @@ void TextEdit::Text::clear_caches() {
void TextEdit::Text::clear() {
- text.clear();;
+ text.clear();
insert(0,"");
}
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp
index 58c829690f..2cfebb7c1e 100644
--- a/scene/gui/tree.cpp
+++ b/scene/gui/tree.cpp
@@ -611,7 +611,7 @@ void TreeItem::clear_custom_color(int p_column) {
ERR_FAIL_INDEX( p_column, cells.size() );
cells[p_column].custom_color=false;
- cells[p_column].color=Color();;
+ cells[p_column].color=Color();
_changed_notify(p_column);
}
@@ -642,7 +642,7 @@ void TreeItem::clear_custom_bg_color(int p_column) {
ERR_FAIL_INDEX( p_column, cells.size() );
cells[p_column].custom_bg_color=false;
- cells[p_column].bg_color=Color();;
+ cells[p_column].bg_color=Color();
_changed_notify(p_column);
}
@@ -1258,7 +1258,7 @@ int Tree::draw_item(const Point2i& p_pos,const Point2& p_draw_ofs, const Size2&
icon_ofs+=item_rect.pos;
- draw_texture_rect(p_item->cells[i].icon,Rect2(icon_ofs,icon_size));;
+ draw_texture_rect(p_item->cells[i].icon,Rect2(icon_ofs,icon_size));
//p_item->cells[i].icon->draw(ci, icon_ofs);
} break;
@@ -2675,7 +2675,7 @@ void Tree::_notification(int p_what) {
if (p_what==NOTIFICATION_ENTER_TREE) {
- update_cache();;
+ update_cache();
}
if (p_what==NOTIFICATION_DRAG_END) {
@@ -3330,7 +3330,7 @@ TreeItem* Tree::_find_item_at_pos(TreeItem*p_item, const Point2& p_pos,int& r_co
if (root!=p_item || ! hide_root) {
- h = compute_item_height(p_item)+cache.vseparation;;
+ h = compute_item_height(p_item)+cache.vseparation;
if (pos.y<h) {
if (drop_mode_flags==DROP_MODE_ON_ITEM) {
diff --git a/scene/gui/video_player.cpp b/scene/gui/video_player.cpp
index 4c177ea53c..907b5a771f 100644
--- a/scene/gui/video_player.cpp
+++ b/scene/gui/video_player.cpp
@@ -28,7 +28,7 @@
/*************************************************************************/
#include "video_player.h"
#include "os/os.h"
-
+/*
int VideoPlayer::InternalStream::get_channel_count() const {
@@ -46,7 +46,7 @@ void VideoPlayer::InternalStream::update(){
player->sp_update();
}
-
+*/
int VideoPlayer::sp_get_channel_count() const {
@@ -234,8 +234,8 @@ void VideoPlayer::play() {
playback->stop();
playback->play();
set_process_internal(true);
- AudioServer::get_singleton()->stream_set_active(stream_rid,true);
- AudioServer::get_singleton()->stream_set_volume_scale(stream_rid,volume);
+// AudioServer::get_singleton()->stream_set_active(stream_rid,true);
+// AudioServer::get_singleton()->stream_set_volume_scale(stream_rid,volume);
last_audio_time=0;
};
@@ -247,7 +247,7 @@ void VideoPlayer::stop() {
return;
playback->stop();
- AudioServer::get_singleton()->stream_set_active(stream_rid,false);
+// AudioServer::get_singleton()->stream_set_active(stream_rid,false);
resampler.flush();
set_process_internal(false);
last_audio_time=0;
@@ -416,16 +416,16 @@ VideoPlayer::VideoPlayer() {
buffering_ms=500;
server_mix_rate=44100;
- internal_stream.player=this;
- stream_rid=AudioServer::get_singleton()->audio_stream_create(&internal_stream);
+// internal_stream.player=this;
+// stream_rid=AudioServer::get_singleton()->audio_stream_create(&internal_stream);
last_audio_time=0;
};
VideoPlayer::~VideoPlayer() {
- if (stream_rid.is_valid())
- AudioServer::get_singleton()->free(stream_rid);
+// if (stream_rid.is_valid())
+// AudioServer::get_singleton()->free(stream_rid);
resampler.clear(); //Not necessary here, but make in consistent with other "stream_player" classes
};
diff --git a/scene/gui/video_player.h b/scene/gui/video_player.h
index 694cb253a4..168ea805b1 100644
--- a/scene/gui/video_player.h
+++ b/scene/gui/video_player.h
@@ -37,16 +37,16 @@ class VideoPlayer : public Control {
GDCLASS(VideoPlayer,Control);
- struct InternalStream : public AudioServer::AudioStream {
+/* struct InternalStream : public AudioServer::AudioStream {
VideoPlayer *player;
virtual int get_channel_count() const;
virtual void set_mix_rate(int p_rate); //notify the stream of the mix rate
virtual bool mix(int32_t *p_buffer,int p_frames);
virtual void update();
};
+*/
-
- InternalStream internal_stream;
+// InternalStream internal_stream;
Ref<VideoStreamPlayback> playback;
Ref<VideoStream> stream;
diff --git a/scene/io/resource_format_wav.cpp b/scene/io/resource_format_wav.cpp
index 0a19e6f72b..1e14d01f4e 100644
--- a/scene/io/resource_format_wav.cpp
+++ b/scene/io/resource_format_wav.cpp
@@ -26,6 +26,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+#if 0
#include "resource_format_wav.h"
#include "os/file_access.h"
#include "scene/resources/sample.h"
@@ -272,3 +273,4 @@ String ResourceFormatLoaderWAV::get_resource_type(const String &p_path) const {
return "";
}
+#endif
diff --git a/scene/io/resource_format_wav.h b/scene/io/resource_format_wav.h
index 3a278b455b..fd274625f9 100644
--- a/scene/io/resource_format_wav.h
+++ b/scene/io/resource_format_wav.h
@@ -29,6 +29,7 @@
#ifndef RESOURCE_FORMAT_WAV_H
#define RESOURCE_FORMAT_WAV_H
+#if 0
#include "io/resource_loader.h"
class ResourceFormatLoaderWAV : public ResourceFormatLoader {
@@ -40,4 +41,5 @@ public:
};
+#endif
#endif // RESOURCE_FORMAT_WAV_H
diff --git a/scene/main/node.cpp b/scene/main/node.cpp
index aba8afd727..039dce37de 100644
--- a/scene/main/node.cpp
+++ b/scene/main/node.cpp
@@ -1631,7 +1631,7 @@ Node *Node::_get_node(const NodePath& p_path) const {
current=const_cast<Node*>(this); //start from this
} else {
- root=const_cast<Node*>(this);;
+ root=const_cast<Node*>(this);
while (root->data.parent)
root=root->data.parent; //start from root
}
diff --git a/scene/main/node.h b/scene/main/node.h
index 14fd19a76f..d88db8ecb0 100644
--- a/scene/main/node.h
+++ b/scene/main/node.h
@@ -33,7 +33,7 @@
#include "object.h"
#include "path_db.h"
#include "map.h"
-#include "object_type_db.h"
+#include "class_db.h"
#include "script_language.h"
#include "scene/main/scene_main_loop.h"
diff --git a/scene/main/scene_main_loop.cpp b/scene/main/scene_main_loop.cpp
index 147409a862..9db1d3fd77 100644
--- a/scene/main/scene_main_loop.cpp
+++ b/scene/main/scene_main_loop.cpp
@@ -35,7 +35,7 @@
#include "globals.h"
#include <stdio.h>
#include "os/keyboard.h"
-#include "servers/spatial_sound_2d_server.h"
+//#include "servers/spatial_sound_2d_server.h"
#include "servers/physics_2d_server.h"
#include "servers/physics_server.h"
#include "scene/scene_string_names.h"
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index c3ece76b05..14acf9583d 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -33,8 +33,7 @@
#include "servers/physics_2d_server.h"
//#include "scene/3d/camera.h"
-#include "servers/spatial_sound_server.h"
-#include "servers/spatial_sound_2d_server.h"
+
#include "scene/gui/control.h"
#include "scene/3d/camera.h"
#include "scene/3d/listener.h"
@@ -468,7 +467,7 @@ void Viewport::_notification(int p_what) {
*/
VisualServer::get_singleton()->viewport_set_scenario(viewport,RID());
- SpatialSoundServer::get_singleton()->listener_set_space(internal_listener, RID());
+// SpatialSoundServer::get_singleton()->listener_set_space(internal_listener, RID());
VisualServer::get_singleton()->viewport_remove_canvas(viewport,current_canvas);
if (contact_2d_debug.is_valid()) {
VisualServer::get_singleton()->free(contact_2d_debug);
@@ -783,23 +782,24 @@ Size2 Viewport::get_size() const {
void Viewport::_update_listener() {
-
+/*
if (is_inside_tree() && audio_listener && (camera || listener) && (!get_parent() || (get_parent()->cast_to<Control>() && get_parent()->cast_to<Control>()->is_visible_in_tree()))) {
SpatialSoundServer::get_singleton()->listener_set_space(internal_listener, find_world()->get_sound_space());
} else {
SpatialSoundServer::get_singleton()->listener_set_space(internal_listener, RID());
}
-
+*/
}
void Viewport::_update_listener_2d() {
+ /*
if (is_inside_tree() && audio_listener && (!get_parent() || (get_parent()->cast_to<Control>() && get_parent()->cast_to<Control>()->is_visible_in_tree())))
SpatialSound2DServer::get_singleton()->listener_set_space(internal_listener_2d, find_world_2d()->get_sound_space());
else
SpatialSound2DServer::get_singleton()->listener_set_space(internal_listener_2d, RID());
-
+*/
}
@@ -842,12 +842,12 @@ void Viewport::set_canvas_transform(const Transform2D& p_transform) {
Transform2D xform = (global_canvas_transform * canvas_transform).affine_inverse();
Size2 ss = get_visible_rect().size;
- SpatialSound2DServer::get_singleton()->listener_set_transform(internal_listener_2d, Transform2D(0, xform.xform(ss*0.5)));
+ /*SpatialSound2DServer::get_singleton()->listener_set_transform(internal_listener_2d, Transform2D(0, xform.xform(ss*0.5)));
Vector2 ss2 = ss*xform.get_scale();
float panrange = MAX(ss2.x,ss2.y);
SpatialSound2DServer::get_singleton()->listener_set_param(internal_listener_2d, SpatialSound2DServer::LISTENER_PARAM_PAN_RANGE, panrange);
-
+*/
}
@@ -867,12 +867,12 @@ void Viewport::_update_global_transform() {
Transform2D xform = (sxform * canvas_transform).affine_inverse();
Size2 ss = get_visible_rect().size;
- SpatialSound2DServer::get_singleton()->listener_set_transform(internal_listener_2d, Transform2D(0, xform.xform(ss*0.5)));
+ /*SpatialSound2DServer::get_singleton()->listener_set_transform(internal_listener_2d, Transform2D(0, xform.xform(ss*0.5)));
Vector2 ss2 = ss*xform.get_scale();
float panrange = MAX(ss2.x,ss2.y);
SpatialSound2DServer::get_singleton()->listener_set_param(internal_listener_2d, SpatialSound2DServer::LISTENER_PARAM_PAN_RANGE, panrange);
-
+*/
}
@@ -893,8 +893,8 @@ Transform2D Viewport::get_global_canvas_transform() const{
void Viewport::_listener_transform_changed_notify() {
#ifndef _3D_DISABLED
- if (listener)
- SpatialSoundServer::get_singleton()->listener_set_transform(internal_listener, listener->get_listener_transform());
+ //if (listener)
+// SpatialSoundServer::get_singleton()->listener_set_transform(internal_listener, listener->get_listener_transform());
#endif
}
@@ -957,8 +957,8 @@ void Viewport::_camera_transform_changed_notify() {
#ifndef _3D_DISABLED
// If there is an active listener in the scene, it takes priority over the camera
- if (camera && !listener)
- SpatialSoundServer::get_singleton()->listener_set_transform(internal_listener, camera->get_camera_transform());
+// if (camera && !listener)
+// SpatialSoundServer::get_singleton()->listener_set_transform(internal_listener, camera->get_camera_transform());
#endif
}
@@ -1777,7 +1777,7 @@ Control* Viewport::_gui_find_control_at_pos(CanvasItem* p_node,const Point2& p_g
if (!ci || ci->is_set_as_toplevel())
continue;
- Control *ret=_gui_find_control_at_pos(ci,p_global,matrix,r_inv_xform);;
+ Control *ret=_gui_find_control_at_pos(ci,p_global,matrix,r_inv_xform);
if (ret)
return ret;
}
@@ -2006,7 +2006,7 @@ void Viewport::_gui_input_event(InputEvent p_event) {
// D&D
if (!gui.drag_attempted && gui.mouse_focus && p_event.mouse_motion.button_mask&BUTTON_MASK_LEFT) {
- gui.drag_accum+=Point2(p_event.mouse_motion.relative_x,p_event.mouse_motion.relative_y);;
+ gui.drag_accum+=Point2(p_event.mouse_motion.relative_x,p_event.mouse_motion.relative_y);
float len = gui.drag_accum.length();
if (len>10) {
gui.drag_data=gui.mouse_focus->get_drag_data(gui.focus_inv_xform.xform(mpos)-gui.drag_accum);
@@ -2861,9 +2861,9 @@ Viewport::Viewport() {
default_texture->vp=const_cast<Viewport*>(this);
viewport_textures.insert(default_texture.ptr());
- internal_listener = SpatialSoundServer::get_singleton()->listener_create();
+ //internal_listener = SpatialSoundServer::get_singleton()->listener_create();
audio_listener=false;
- internal_listener_2d = SpatialSound2DServer::get_singleton()->listener_create();
+ //internal_listener_2d = SpatialSound2DServer::get_singleton()->listener_create();
audio_listener_2d=false;
transparent_bg=false;
parent=NULL;
@@ -2930,8 +2930,8 @@ Viewport::~Viewport() {
E->get()->vp=NULL;
}
VisualServer::get_singleton()->free( viewport );
- SpatialSoundServer::get_singleton()->free(internal_listener);
- SpatialSound2DServer::get_singleton()->free(internal_listener_2d);
+ //SpatialSoundServer::get_singleton()->free(internal_listener);
+ //SpatialSound2DServer::get_singleton()->free(internal_listener_2d);
}
diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp
index f68e5ca959..1932f9cbf6 100644
--- a/scene/register_scene_types.cpp
+++ b/scene/register_scene_types.cpp
@@ -34,7 +34,7 @@
//#include "scene/io/scene_format_script.h"
#include "resources/default_theme/default_theme.h"
-#include "object_type_db.h"
+#include "class_db.h"
#include "scene/main/canvas_layer.h"
#include "scene/main/instance_placeholder.h"
#include "scene/main/viewport.h"
@@ -109,8 +109,8 @@
#include "scene/2d/collision_polygon_2d.h"
#include "scene/2d/parallax_background.h"
#include "scene/2d/parallax_layer.h"
-#include "scene/2d/sound_player_2d.h"
-#include "scene/2d/sample_player_2d.h"
+//#include "scene/2d/sound_player_2d.h"
+//#include "scene/2d/sample_player_2d.h"
#include "scene/2d/screen_button.h"
#include "scene/2d/remote_transform_2d.h"
#include "scene/2d/y_sort.h"
@@ -139,9 +139,9 @@
#include "scene/main/timer.h"
-#include "scene/audio/stream_player.h"
-#include "scene/audio/event_player.h"
-#include "scene/audio/sound_room_params.h"
+//#include "scene/audio/stream_player.h"
+//#include "scene/audio/event_player.h"
+//#include "scene/audio/sound_room_params.h"
#include "scene/resources/sphere_shape.h"
#include "scene/resources/ray_shape.h"
#include "scene/resources/box_shape.h"
@@ -163,8 +163,8 @@
#include "scene/resources/polygon_path_finder.h"
-#include "scene/resources/sample.h"
-#include "scene/audio/sample_player.h"
+//#include "scene/resources/sample.h"
+//#include "scene/audio/sample_player.h"
#include "scene/resources/texture.h"
#include "scene/resources/sky_box.h"
#include "scene/resources/material.h"
@@ -176,7 +176,7 @@
#include "scene/resources/world.h"
#include "scene/resources/world_2d.h"
-#include "scene/resources/sample_library.h"
+//#include "scene/resources/sample_library.h"
#include "scene/resources/audio_stream.h"
#include "scene/resources/gibberish_stream.h"
#include "scene/resources/bit_mask.h"
@@ -220,8 +220,8 @@
#include "scene/3d/ray_cast.h"
#include "scene/3d/immediate_geometry.h"
#include "scene/3d/sprite_3d.h"
-#include "scene/3d/spatial_sample_player.h"
-#include "scene/3d/spatial_stream_player.h"
+//#include "scene/3d/spatial_sample_player.h"
+//#include "scene/3d/spatial_stream_player.h"
#include "scene/3d/proximity_group.h"
#include "scene/3d/navigation_mesh.h"
#include "scene/3d/navigation.h"
@@ -231,7 +231,7 @@
#include "scene/resources/scene_format_text.h"
static ResourceFormatLoaderImage *resource_loader_image=NULL;
-static ResourceFormatLoaderWAV *resource_loader_wav=NULL;
+//static ResourceFormatLoaderWAV *resource_loader_wav=NULL;
#ifdef TOOLS_ENABLED
@@ -258,8 +258,8 @@ void register_scene_types() {
resource_loader_image = memnew( ResourceFormatLoaderImage );
ResourceLoader::add_resource_format_loader( resource_loader_image );
- resource_loader_wav = memnew( ResourceFormatLoaderWAV );
- ResourceLoader::add_resource_format_loader( resource_loader_wav );
+ //resource_loader_wav = memnew( ResourceFormatLoaderWAV );
+ //ResourceLoader::add_resource_format_loader( resource_loader_wav );
resource_loader_dynamic_font = memnew( ResourceFormatLoaderDynamicFont );
ResourceLoader::add_resource_format_loader( resource_loader_dynamic_font );
@@ -474,18 +474,12 @@ void register_scene_types() {
OS::get_singleton()->yield(); //may take time to init
- ClassDB::register_class<SpatialSamplePlayer>();
- ClassDB::register_class<SpatialStreamPlayer>();
- ClassDB::register_class<SoundRoomParams>();
#endif
ClassDB::register_class<MeshLibrary>();
AcceptDialog::set_swap_ok_cancel( GLOBAL_DEF("gui/common/swap_ok_cancel",bool(OS::get_singleton()->get_swap_ok_cancel())) );
- ClassDB::register_class<SamplePlayer>();
- ClassDB::register_class<StreamPlayer>();
- ClassDB::register_class<EventPlayer>();
ClassDB::register_class<CanvasItemMaterial>();
@@ -527,8 +521,6 @@ void register_scene_types() {
ClassDB::register_class<TileMap>();
ClassDB::register_class<ParallaxBackground>();
ClassDB::register_class<ParallaxLayer>();
- ClassDB::register_virtual_class<SoundPlayer2D>();
- ClassDB::register_class<SamplePlayer2D>();
ClassDB::register_class<TouchScreenButton>();
ClassDB::register_class<RemoteTransform2D>();
@@ -600,8 +592,6 @@ void register_scene_types() {
OS::get_singleton()->yield(); //may take time to init
- ClassDB::register_class<Sample>();
- ClassDB::register_class<SampleLibrary>();
ClassDB::register_virtual_class<AudioStream>();
ClassDB::register_virtual_class<AudioStreamPlayback>();
//TODO: Adapt to the new AudioStream API or drop (GH-3307)
@@ -657,7 +647,7 @@ void unregister_scene_types() {
clear_default_theme();
memdelete( resource_loader_image );
- memdelete( resource_loader_wav );
+// memdelete( resource_loader_wav );
memdelete( resource_loader_dynamic_font );
diff --git a/scene/resources/dynamic_font.cpp b/scene/resources/dynamic_font.cpp
index 63a7829d26..ba4b12900f 100644
--- a/scene/resources/dynamic_font.cpp
+++ b/scene/resources/dynamic_font.cpp
@@ -938,7 +938,7 @@ RES ResourceFormatLoaderDynamicFont::load(const String &p_path, const String& p_
*r_error=ERR_FILE_CANT_OPEN;
Ref<DynamicFontData> dfont;
- dfont.instance();;
+ dfont.instance();
dfont->set_font_path(p_path);
diff --git a/scene/resources/event_stream.cpp b/scene/resources/event_stream.cpp
deleted file mode 100644
index 521f305327..0000000000
--- a/scene/resources/event_stream.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*************************************************************************/
-/* event_stream.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "event_stream.h"
-
-
-Error EventStreamPlayback::play() {
- if (stream.is_valid())
- stop();
-
- Error err = _play();
- if (err)
- return err;
-
-
- playing=true;
- AudioServer::get_singleton()->stream_set_active(stream,true);
-
- return OK;
-}
-
-void EventStreamPlayback::stop(){
-
- if (!playing)
- return;
-
- AudioServer::get_singleton()->stream_set_active(stream,false);
- _stop();
- playing=false;
-
-
-}
-bool EventStreamPlayback::is_playing() const{
-
- return playing;
-}
-
-
-EventStreamPlayback::EventStreamPlayback() {
-
- playing=false;
- estream.playback=this;
- stream=AudioServer::get_singleton()->event_stream_create(&estream);
-
-}
-
-EventStreamPlayback::~EventStreamPlayback() {
-
- AudioServer::get_singleton()->free(stream);
-
-}
-
-
-
-EventStream::EventStream()
-{
-
-
-}
-
diff --git a/scene/resources/event_stream.h b/scene/resources/event_stream.h
deleted file mode 100644
index 40af78fcce..0000000000
--- a/scene/resources/event_stream.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/*************************************************************************/
-/* event_stream.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef EVENT_STREAM_H
-#define EVENT_STREAM_H
-
-#include "resource.h"
-#include "servers/audio_server.h"
-
-class EventStreamPlayback : public Reference {
-
- GDCLASS(EventStreamPlayback,Reference);
-
- class InternalEventStream : public AudioServer::EventStream {
- public:
- AudioMixer *_get_mixer(){ return get_mixer(); }
- EventStreamPlayback *playback;
- virtual void update(uint64_t p_usec) {
-
- playback->_update(get_mixer(),p_usec);
- }
-
-
- virtual ~InternalEventStream() {}
- };
-
-
- InternalEventStream estream;
-
- RID stream;
- bool playing;
-
-
-protected:
-
- virtual AudioMixer* _get_mixer() { return estream._get_mixer(); }
- virtual Error _play()=0;
- virtual bool _update(AudioMixer* p_mixer, uint64_t p_usec)=0;
- virtual void _stop()=0;
-public:
-
- virtual Error play();
- virtual void stop();
- virtual bool is_playing() const;
-
- virtual void set_paused(bool p_paused)=0;
- virtual bool is_paused() const=0;
-
- virtual void set_loop(bool p_loop)=0;
- virtual bool is_loop_enabled() const=0;
-
- virtual int get_loop_count() const=0;
-
- virtual float get_pos() const=0;
- virtual void seek_pos(float p_time)=0;
-
- virtual void set_volume(float p_vol)=0;
- virtual float get_volume() const=0;
-
- virtual void set_pitch_scale(float p_pitch_scale)=0;
- virtual float get_pitch_scale() const=0;
-
- virtual void set_tempo_scale(float p_tempo_scale)=0;
- virtual float get_tempo_scale() const=0;
-
- virtual void set_channel_volume(int p_channel,float p_volume)=0;
- virtual float get_channel_volume(int p_channel) const=0;
-
- virtual float get_last_note_time(int p_channel) const=0;
- EventStreamPlayback();
- ~EventStreamPlayback();
-
-};
-
-class EventStream : public Resource {
-
- GDCLASS(EventStream,Resource);
- OBJ_SAVE_TYPE( EventStream ); //children are all saved as EventStream, so they can be exchanged
-
-public:
-
- virtual Ref<EventStreamPlayback> instance_playback()=0;
-
- virtual String get_stream_name() const=0;
- virtual float get_length() const=0;
- virtual int get_channel_count() const=0;
-
-
-
- EventStream();
-};
-
-#endif // EVENT_STREAM_H
diff --git a/scene/resources/packed_scene.cpp b/scene/resources/packed_scene.cpp
index 5cefca348b..2707dd6198 100644
--- a/scene/resources/packed_scene.cpp
+++ b/scene/resources/packed_scene.cpp
@@ -332,7 +332,7 @@ Node *SceneState::instance(GenEditState p_edit_state) const {
//remove nodes that could not be added, likely as a result that
while(stray_instances.size()) {
memdelete(stray_instances.front()->get());
- stray_instances.pop_front();;
+ stray_instances.pop_front();
}
for(int i=0;i<editable_instances.size();i++) {
diff --git a/scene/resources/polygon_path_finder.cpp b/scene/resources/polygon_path_finder.cpp
index 2156487407..568f086d34 100644
--- a/scene/resources/polygon_path_finder.cpp
+++ b/scene/resources/polygon_path_finder.cpp
@@ -419,7 +419,7 @@ Vector<Vector2> PolygonPathFinder::find_path(const Vector2& p_from, const Vector
path.push_back(points[at].pos);
} while (at!=aidx);
- path.invert();;
+ path.invert();
}
for(int i=0;i<points.size()-2;i++) {
diff --git a/scene/resources/sample.cpp b/scene/resources/sample.cpp
deleted file mode 100644
index e07e4d3767..0000000000
--- a/scene/resources/sample.cpp
+++ /dev/null
@@ -1,248 +0,0 @@
-/*************************************************************************/
-/* sample.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "sample.h"
-
-
-void Sample::_set_data(const Dictionary& p_data) {
-
- ERR_FAIL_COND(!p_data.has("packing"));
- String packing = p_data["packing"];
-
- if (packing=="raw") {
-
- ERR_FAIL_COND( !p_data.has("stereo"));
- ERR_FAIL_COND( !p_data.has("format"));
- ERR_FAIL_COND( !p_data.has("length"));
- bool stereo=p_data["stereo"];
- int length=p_data["length"];
- Format fmt;
- String fmtstr=p_data["format"];
- if (fmtstr=="pcm8")
- fmt=FORMAT_PCM8;
- else if (fmtstr=="pcm16")
- fmt=FORMAT_PCM16;
- else if (fmtstr=="ima_adpcm")
- fmt=FORMAT_IMA_ADPCM;
- else {
- ERR_EXPLAIN("Invalid format for sample: "+fmtstr);
- ERR_FAIL();
- }
-
- ERR_FAIL_COND(!p_data.has("data"));
-
- create(fmt,stereo,length);
- set_data(p_data["data"]);
- } else {
-
- ERR_EXPLAIN("Invalid packing for sample data: "+packing);
- ERR_FAIL();
- }
-}
-
-Dictionary Sample::_get_data() const {
-
- Dictionary d;
- switch(get_format()) {
-
- case FORMAT_PCM8: d["format"]="pcm8"; break;
- case FORMAT_PCM16: d["format"]="pcm16"; break;
- case FORMAT_IMA_ADPCM: d["format"]="ima_adpcm"; break;
- }
-
- d["stereo"]=is_stereo();
- d["length"]=get_length();
- d["packing"]="raw";
- d["data"]=get_data();
- return d;
-
-}
-
-void Sample::create(Format p_format, bool p_stereo, int p_length) {
-
- if (p_length<1)
- return;
-
- if (sample.is_valid())
- AudioServer::get_singleton()->free(sample);
-
-
- mix_rate=44100;
- stereo=p_stereo;
- length=p_length;
- format=p_format;
- loop_format=LOOP_NONE;
- loop_begin=0;
- loop_end=0;
-
- sample=AudioServer::get_singleton()->sample_create((AudioServer::SampleFormat)p_format,p_stereo,p_length);
-}
-
-
-Sample::Format Sample::get_format() const {
-
- return format;
-}
-bool Sample::is_stereo() const {
-
-
- return stereo;
-}
-int Sample::get_length() const {
-
-
- return length;
-}
-
-void Sample::set_data(const PoolVector<uint8_t>& p_buffer) {
-
- if (sample.is_valid())
- AudioServer::get_singleton()->sample_set_data(sample,p_buffer);
-
-}
-PoolVector<uint8_t> Sample::get_data() const {
-
- if (sample.is_valid())
- return AudioServer::get_singleton()->sample_get_data(sample);
-
- return PoolVector<uint8_t>();
-
-}
-
-void Sample::set_mix_rate(int p_rate) {
-
- mix_rate=p_rate;
- if (sample.is_valid())
- return AudioServer::get_singleton()->sample_set_mix_rate(sample,mix_rate);
-
-}
-int Sample::get_mix_rate() const {
-
- return mix_rate;
-}
-
-void Sample::set_loop_format(LoopFormat p_format) {
-
- if (sample.is_valid())
- AudioServer::get_singleton()->sample_set_loop_format(sample,(AudioServer::SampleLoopFormat)p_format);
- loop_format=p_format;
-}
-
-Sample::LoopFormat Sample::get_loop_format() const {
-
- return loop_format;
-}
-
-void Sample::set_loop_begin(int p_pos) {
-
- if (sample.is_valid())
- AudioServer::get_singleton()->sample_set_loop_begin(sample,p_pos);
- loop_begin=p_pos;
-
-}
-int Sample::get_loop_begin() const {
-
- return loop_begin;
-}
-
-void Sample::set_loop_end(int p_pos) {
-
- if (sample.is_valid())
- AudioServer::get_singleton()->sample_set_loop_end(sample,p_pos);
- loop_end=p_pos;
-}
-
-int Sample::get_loop_end() const {
-
- return loop_end;
-}
-
-RID Sample::get_rid() const {
-
- return sample;
-}
-
-
-
-void Sample::_bind_methods(){
-
-
- ClassDB::bind_method(_MD("create","format","stereo","length"),&Sample::create);
- ClassDB::bind_method(_MD("get_format"),&Sample::get_format);
- ClassDB::bind_method(_MD("is_stereo"),&Sample::is_stereo);
- ClassDB::bind_method(_MD("get_length"),&Sample::get_length);
- ClassDB::bind_method(_MD("set_data","data"),&Sample::set_data);
- ClassDB::bind_method(_MD("get_data"),&Sample::get_data);
- ClassDB::bind_method(_MD("set_mix_rate","hz"),&Sample::set_mix_rate);
- ClassDB::bind_method(_MD("get_mix_rate"),&Sample::get_mix_rate);
- ClassDB::bind_method(_MD("set_loop_format","format"),&Sample::set_loop_format);
- ClassDB::bind_method(_MD("get_loop_format"),&Sample::get_loop_format);
- ClassDB::bind_method(_MD("set_loop_begin","pos"),&Sample::set_loop_begin);
- ClassDB::bind_method(_MD("get_loop_begin"),&Sample::get_loop_begin);
- ClassDB::bind_method(_MD("set_loop_end","pos"),&Sample::set_loop_end);
- ClassDB::bind_method(_MD("get_loop_end"),&Sample::get_loop_end);
-
- ClassDB::bind_method(_MD("_set_data"),&Sample::_set_data);
- ClassDB::bind_method(_MD("_get_data"),&Sample::_get_data);
-
- ADD_PROPERTY( PropertyInfo( Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), _SCS("_set_data"), _SCS("_get_data") );
- ADD_PROPERTY( PropertyInfo( Variant::BOOL, "stereo"), _SCS(""), _SCS("is_stereo") );
- ADD_PROPERTY( PropertyInfo( Variant::INT, "length",PROPERTY_HINT_RANGE,"0,999999999"), _SCS(""), _SCS("get_length") );
- ADD_PROPERTY( PropertyInfo( Variant::INT, "mix_rate", PROPERTY_HINT_RANGE,"1,192000,1" ), _SCS("set_mix_rate"), _SCS("get_mix_rate") );
- ADD_PROPERTY( PropertyInfo( Variant::INT, "loop_format", PROPERTY_HINT_ENUM,"None,Forward,PingPong" ), _SCS("set_loop_format"), _SCS("get_loop_format") );
- ADD_PROPERTY( PropertyInfo( Variant::INT, "loop_begin", PROPERTY_HINT_RANGE,"0,"+itos(999999999)+",1"), _SCS("set_loop_begin"), _SCS("get_loop_begin") );
- ADD_PROPERTY( PropertyInfo( Variant::INT, "loop_end", PROPERTY_HINT_RANGE,"0,"+itos(999999999)+",1"), _SCS("set_loop_end"), _SCS("get_loop_end") );
-
- BIND_CONSTANT( FORMAT_PCM8 );
- BIND_CONSTANT( FORMAT_PCM16 );
- BIND_CONSTANT( FORMAT_IMA_ADPCM );
-
- BIND_CONSTANT( LOOP_NONE );
- BIND_CONSTANT( LOOP_FORWARD );
- BIND_CONSTANT( LOOP_PING_PONG );
-
-}
-
-Sample::Sample() {
-
- format=FORMAT_PCM8;
- length=0;
- stereo=false;
-
- loop_format=LOOP_NONE;
- loop_begin=0;
- loop_end=0;
- mix_rate=44100;
-
-}
-
-Sample::~Sample() {
-
- if (sample.is_valid())
- AudioServer::get_singleton()->free(sample);
-}
diff --git a/scene/resources/sample.h b/scene/resources/sample.h
deleted file mode 100644
index be2cf67954..0000000000
--- a/scene/resources/sample.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*************************************************************************/
-/* sample.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef SAMPLE_H
-#define SAMPLE_H
-
-#include "servers/audio_server.h"
-#include "resource.h"
-
-class Sample : public Resource {
-
- GDCLASS(Sample, Resource );
- RES_BASE_EXTENSION("smp");
-public:
-
- enum Format {
-
- FORMAT_PCM8,
- FORMAT_PCM16,
- FORMAT_IMA_ADPCM
- };
-
- enum LoopFormat {
- LOOP_NONE,
- LOOP_FORWARD,
- LOOP_PING_PONG // not supported in every platform
-
- };
-
-private:
-
- Format format;
- int length;
- bool stereo;
-
- LoopFormat loop_format;
- int loop_begin;
- int loop_end;
- int mix_rate;
-
- RID sample;
-
-
- void _set_data(const Dictionary& p_data);
- Dictionary _get_data() const;
-
-protected:
-
- static void _bind_methods();
-
-public:
-
-
- void create(Format p_format, bool p_stereo, int p_length);
-
- Format get_format() const;
- bool is_stereo() const;
- int get_length() const;
-
- void set_data(const PoolVector<uint8_t>& p_buffer);
- PoolVector<uint8_t> get_data() const;
-
- void set_mix_rate(int p_rate);
- int get_mix_rate() const;
-
- void set_loop_format(LoopFormat p_format);
- LoopFormat get_loop_format() const;
-
- void set_loop_begin(int p_pos);
- int get_loop_begin() const;
-
- void set_loop_end(int p_pos);
- int get_loop_end() const;
-
- virtual RID get_rid() const;
- Sample();
- ~Sample();
-};
-
-VARIANT_ENUM_CAST( Sample::Format );
-VARIANT_ENUM_CAST( Sample::LoopFormat );
-
-#endif // SAMPLE_H
diff --git a/scene/resources/sample_library.cpp b/scene/resources/sample_library.cpp
deleted file mode 100644
index 44895df8fa..0000000000
--- a/scene/resources/sample_library.cpp
+++ /dev/null
@@ -1,215 +0,0 @@
-/*************************************************************************/
-/* sample_library.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "sample_library.h"
-
-
-bool SampleLibrary::_set(const StringName& p_name, const Variant& p_value) {
-
-
- if (String(p_name).begins_with("samples/")) {
-
- String name=String(p_name).get_slicec('/',1);
- if (p_value.get_type()==Variant::NIL)
- sample_map.erase(name);
- else {
- SampleData sd;
-
- if (p_value.get_type()==Variant::OBJECT)
- sd.sample=p_value;
- else if (p_value.get_type()==Variant::DICTIONARY) {
-
- Dictionary d = p_value;
- ERR_FAIL_COND_V(!d.has("sample"),false);
- ERR_FAIL_COND_V(!d.has("pitch"),false);
- ERR_FAIL_COND_V(!d.has("db"),false);
- sd.sample=d["sample"];
- sd.pitch_scale=d["pitch"];
- sd.db=d["db"];
- }
-
- sample_map[name]=sd;
- }
-
- return true;
- }
-
- return false;
-}
-
-bool SampleLibrary::_get(const StringName& p_name,Variant &r_ret) const {
-
- if (String(p_name).begins_with("samples/")) {
-
- String name=String(p_name).get_slicec('/',1);
- if(sample_map.has(name)) {
- Dictionary d;
- d["sample"]=sample_map[name].sample;
- d["pitch"]=sample_map[name].pitch_scale;
- d["db"]=sample_map[name].db;
- r_ret=d;
- } else {
- return false;
- }
-
- return true;
- }
-
- return false;
-
-
-}
-
-void SampleLibrary::add_sample(const StringName& p_name, const Ref<Sample>& p_sample) {
-
- ERR_FAIL_COND(p_sample.is_null());
-
- SampleData sd;
- sd.sample=p_sample;
- sample_map[p_name]=sd;
-}
-
-Ref<Sample> SampleLibrary::get_sample(const StringName& p_name) const {
-
- ERR_FAIL_COND_V(!sample_map.has(p_name),Ref<Sample>());
-
- return sample_map[p_name].sample;
-}
-
-void SampleLibrary::remove_sample(const StringName& p_name) {
-
- sample_map.erase(p_name);
-}
-
-void SampleLibrary::get_sample_list(List<StringName> *p_samples) const {
-
- for(const Map<StringName,SampleData >::Element *E=sample_map.front();E;E=E->next()) {
-
- p_samples->push_back(E->key());
- }
-
-}
-
-bool SampleLibrary::has_sample(const StringName& p_name) const {
-
- return sample_map.has(p_name);
-}
-
-void SampleLibrary::_get_property_list(List<PropertyInfo> *p_list) const {
-
-
- List<PropertyInfo> tpl;
- for(Map<StringName,SampleData>::Element *E=sample_map.front();E;E=E->next()) {
-
- tpl.push_back( PropertyInfo( Variant::DICTIONARY, "samples/"+E->key(),PROPERTY_HINT_RESOURCE_TYPE,"Sample",PROPERTY_USAGE_NOEDITOR ) );
- }
-
- tpl.sort();
- //sort so order is kept
- for(List<PropertyInfo>::Element *E=tpl.front();E;E=E->next()) {
- p_list->push_back(E->get());
- }
-}
-
-StringName SampleLibrary::get_sample_idx(int p_idx) const {
-
- int idx=0;
- for (Map<StringName, SampleData >::Element *E=sample_map.front();E;E=E->next()) {
-
- if (p_idx==idx)
- return E->key();
- idx++;
- }
-
- return "";
-}
-
-void SampleLibrary::sample_set_volume_db(const StringName& p_name, float p_db) {
-
- ERR_FAIL_COND( !sample_map.has(p_name) );
- sample_map[p_name].db=p_db;
-
-}
-
-float SampleLibrary::sample_get_volume_db(const StringName& p_name) const{
-
- ERR_FAIL_COND_V( !sample_map.has(p_name),0 );
-
- return sample_map[p_name].db;
-}
-
-void SampleLibrary::sample_set_pitch_scale(const StringName& p_name, float p_pitch){
-
- ERR_FAIL_COND( !sample_map.has(p_name) );
-
- sample_map[p_name].pitch_scale=p_pitch;
-}
-
-float SampleLibrary::sample_get_pitch_scale(const StringName& p_name) const{
-
- ERR_FAIL_COND_V( !sample_map.has(p_name),0 );
-
- return sample_map[p_name].pitch_scale;
-}
-
-Array SampleLibrary::_get_sample_list() const {
-
- List<StringName> snames;
- get_sample_list(&snames);
-
- snames.sort_custom<StringName::AlphCompare>();
-
- Array ret;
- for (List<StringName>::Element *E=snames.front();E;E=E->next()) {
- ret.push_back(E->get());
- }
-
- return ret;
-}
-
-void SampleLibrary::_bind_methods() {
-
- ClassDB::bind_method(_MD("add_sample","name","sample:Sample"),&SampleLibrary::add_sample );
- ClassDB::bind_method(_MD("get_sample:Sample","name"),&SampleLibrary::get_sample );
- ClassDB::bind_method(_MD("has_sample","name"),&SampleLibrary::has_sample );
- ClassDB::bind_method(_MD("remove_sample","name"),&SampleLibrary::remove_sample );
-
- ClassDB::bind_method(_MD("get_sample_list"),&SampleLibrary::_get_sample_list );
-
- ClassDB::bind_method(_MD("sample_set_volume_db","name","db"),&SampleLibrary::sample_set_volume_db );
- ClassDB::bind_method(_MD("sample_get_volume_db","name"),&SampleLibrary::sample_get_volume_db );
-
- ClassDB::bind_method(_MD("sample_set_pitch_scale","name","pitch"),&SampleLibrary::sample_set_pitch_scale );
- ClassDB::bind_method(_MD("sample_get_pitch_scale","name"),&SampleLibrary::sample_get_pitch_scale );
-
-
-}
-
-SampleLibrary::SampleLibrary()
-{
-}
diff --git a/scene/resources/sample_library.h b/scene/resources/sample_library.h
deleted file mode 100644
index d09eea64c5..0000000000
--- a/scene/resources/sample_library.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*************************************************************************/
-/* sample_library.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef SAMPLE_LIBRARY_H
-#define SAMPLE_LIBRARY_H
-
-#include "resource.h"
-#include "scene/resources/sample.h"
-#include "map.h"
-
-class SampleLibrary : public Resource {
-
- GDCLASS(SampleLibrary,Resource);
-
- struct SampleData {
-
- Ref<Sample> sample;
- float db;
- float pitch_scale;
-
- SampleData() { db=0; pitch_scale=1; }
- };
-
- Map<StringName,SampleData > sample_map;
-
- Array _get_sample_list() const;
-protected:
-
- bool _set(const StringName& p_name, const Variant& p_value);
- bool _get(const StringName& p_name,Variant &r_ret) const;
- void _get_property_list(List<PropertyInfo> *p_list) const;
-
- static void _bind_methods();
-
-public:
-
-
-
- void add_sample(const StringName& p_name, const Ref<Sample>& p_sample);
- bool has_sample(const StringName& p_name) const;
- void sample_set_volume_db(const StringName& p_name, float p_db);
- float sample_get_volume_db(const StringName& p_name) const;
- void sample_set_pitch_scale(const StringName& p_name, float p_pitch);
- float sample_get_pitch_scale(const StringName& p_name) const;
- Ref<Sample> get_sample(const StringName& p_name) const;
- void get_sample_list(List<StringName> *p_samples) const;
- void remove_sample(const StringName& p_name);
- StringName get_sample_idx(int p_idx) const;
-
- SampleLibrary();
-};
-
-#endif // SAMPLE_LIBRARY_H
diff --git a/scene/resources/shader_graph.cpp b/scene/resources/shader_graph.cpp
index 10f852f17c..22ee253b1a 100644
--- a/scene/resources/shader_graph.cpp
+++ b/scene/resources/shader_graph.cpp
@@ -1993,8 +1993,7 @@ void ShaderGraph::_plot_curve(const Vector2& p_a,const Vector2& p_b,const Vector
/* compose the basis and geometry matrices */
- static const float CR_basis[4][4] =
- {
+ static const float CR_basis[4][4] = {
{ -0.5, 1.5, -1.5, 0.5 },
{ 1.0, -2.5, 2.0, -0.5 },
{ -0.5, 0.0, 0.5, 0.0 },
@@ -2161,7 +2160,7 @@ void ShaderGraph::_add_node_code(ShaderType p_type,Node *p_node,const Vector<Str
case SCALAR_OP_ATAN2: optxt = "atan2("+p_inputs[0]+","+p_inputs[1]+");"; break;
}
- code+=OUTNAME(p_node->id,0)+"="+optxt+"\n";;
+ code+=OUTNAME(p_node->id,0)+"="+optxt+"\n";
}break;
case NODE_VEC_OP: {
@@ -2364,7 +2363,7 @@ void ShaderGraph::_add_node_code(ShaderType p_type,Node *p_node,const Vector<Str
code+="\t"+OUTVAR(p_node->id,0)+"=vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n";
code+="}\n";
} else if (func==VEC_FUNC_HSV2RGB) {
- code += OUTNAME(p_node->id,0)+";\n";;
+ code += OUTNAME(p_node->id,0)+";\n";
code+="{\n";
code+="\tvec3 c = "+p_inputs[0]+";\n";
code+="\tvec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n";
diff --git a/scene/resources/surface_tool.cpp b/scene/resources/surface_tool.cpp
index 27cc7e131b..1d0d323546 100644
--- a/scene/resources/surface_tool.cpp
+++ b/scene/resources/surface_tool.cpp
@@ -852,7 +852,7 @@ void SurfaceTool::clear() {
begun=false;
primitive=Mesh::PRIMITIVE_LINES;
format=0;
- last_bones.clear();;
+ last_bones.clear();
last_weights.clear();
index_array.clear();
vertex_array.clear();
diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp
index d950407f54..4793f8143b 100644
--- a/scene/resources/theme.cpp
+++ b/scene/resources/theme.cpp
@@ -233,7 +233,7 @@ void Theme::set_default_theme_font( const Ref<Font>& p_default_font ) {
}
_change_notify();
- emit_changed();;
+ emit_changed();
}
@@ -275,7 +275,7 @@ void Theme::set_icon(const StringName& p_name,const StringName& p_type,const Ref
if (new_value) {
_change_notify();
- emit_changed();;
+ emit_changed();
}
}
Ref<Texture> Theme::get_icon(const StringName& p_name,const StringName& p_type) const {
@@ -301,7 +301,7 @@ void Theme::clear_icon(const StringName& p_name,const StringName& p_type) {
icon_map[p_type].erase(p_name);
_change_notify();
- emit_changed();;
+ emit_changed();
}
@@ -326,7 +326,7 @@ void Theme::set_shader(const StringName &p_name,const StringName &p_type,const R
if (new_value) {
_change_notify();
- emit_changed();;
+ emit_changed();
}
}
@@ -348,7 +348,7 @@ void Theme::clear_shader(const StringName &p_name, const StringName &p_type) {
shader_map[p_type].erase(p_name);
_change_notify();
- emit_changed();;
+ emit_changed();
}
void Theme::get_shader_list(const StringName &p_type, List<StringName> *p_list) const {
@@ -375,7 +375,7 @@ void Theme::set_stylebox(const StringName& p_name,const StringName& p_type,const
if (new_value)
_change_notify();
- emit_changed();;
+ emit_changed();
}
@@ -403,7 +403,7 @@ void Theme::clear_stylebox(const StringName& p_name,const StringName& p_type) {
style_map[p_type].erase(p_name);
_change_notify();
- emit_changed();;
+ emit_changed();
}
@@ -447,7 +447,7 @@ void Theme::set_font(const StringName& p_name,const StringName& p_type,const Ref
if (new_value) {
_change_notify();
- emit_changed();;
+ emit_changed();
}
}
Ref<Font> Theme::get_font(const StringName& p_name,const StringName& p_type) const {
@@ -477,7 +477,7 @@ void Theme::clear_font(const StringName& p_name,const StringName& p_type) {
font_map[p_type].erase(p_name);
_change_notify();
- emit_changed();;
+ emit_changed();
}
@@ -503,7 +503,7 @@ void Theme::set_color(const StringName& p_name,const StringName& p_type,const Co
if (new_value) {
_change_notify();
- emit_changed();;
+ emit_changed();
}
}
@@ -531,7 +531,7 @@ void Theme::clear_color(const StringName& p_name,const StringName& p_type) {
color_map[p_type].erase(p_name);
_change_notify();
- emit_changed();;
+ emit_changed();
}
@@ -556,7 +556,7 @@ void Theme::set_constant(const StringName& p_name,const StringName& p_type,int p
if (new_value) {
_change_notify();
- emit_changed();;
+ emit_changed();
}
}
@@ -582,7 +582,7 @@ void Theme::clear_constant(const StringName& p_name,const StringName& p_type) {
constant_map[p_type].erase(p_name);
_change_notify();
- emit_changed();;
+ emit_changed();
}
@@ -611,7 +611,7 @@ void Theme::copy_default_theme() {
color_map=default_theme->color_map;
constant_map=default_theme->constant_map;
_change_notify();
- emit_changed();;
+ emit_changed();
}
diff --git a/scene/resources/world.cpp b/scene/resources/world.cpp
index 3f7261c312..72cb8cc906 100644
--- a/scene/resources/world.cpp
+++ b/scene/resources/world.cpp
@@ -287,10 +287,6 @@ RID World::get_scenario() const{
return scenario;
}
-RID World::get_sound_space() const{
-
- return sound_space;
-}
void World::set_environment(const Ref<Environment>& p_environment) {
@@ -316,7 +312,6 @@ void World::_bind_methods() {
ClassDB::bind_method(_MD("get_space"),&World::get_space);
ClassDB::bind_method(_MD("get_scenario"),&World::get_scenario);
- ClassDB::bind_method(_MD("get_sound_space"),&World::get_sound_space);
ClassDB::bind_method(_MD("set_environment","env:Environment"),&World::set_environment);
ClassDB::bind_method(_MD("get_environment:Environment"),&World::get_environment);
ClassDB::bind_method(_MD("get_direct_space_state:PhysicsDirectSpaceState"),&World::get_direct_space_state);
@@ -329,7 +324,6 @@ World::World() {
space = PhysicsServer::get_singleton()->space_create();
scenario = VisualServer::get_singleton()->scenario_create();
- sound_space = SpatialSoundServer::get_singleton()->space_create();
PhysicsServer::get_singleton()->space_set_active(space,true);
PhysicsServer::get_singleton()->area_set_param(space,PhysicsServer::AREA_PARAM_GRAVITY,GLOBAL_DEF("physics/3d/default_gravity",9.8));
@@ -348,7 +342,6 @@ World::~World() {
PhysicsServer::get_singleton()->free(space);
VisualServer::get_singleton()->free(scenario);
- SpatialSoundServer::get_singleton()->free(sound_space);
#ifndef _3D_DISABLED
memdelete( indexer );
diff --git a/scene/resources/world.h b/scene/resources/world.h
index bea07882d7..1ad60f3405 100644
--- a/scene/resources/world.h
+++ b/scene/resources/world.h
@@ -32,7 +32,6 @@
#include "resource.h"
#include "servers/physics_server.h"
#include "servers/visual_server.h"
-#include "servers/spatial_sound_server.h"
#include "scene/resources/environment.h"
class SpatialIndexer;
@@ -45,7 +44,6 @@ class World : public Resource {
private:
RID space;
RID scenario;
- RID sound_space;
SpatialIndexer* indexer;
Ref<Environment> environment;
@@ -71,7 +69,6 @@ public:
RID get_space() const;
RID get_scenario() const;
- RID get_sound_space() const;
void set_environment(const Ref<Environment>& p_environment);
Ref<Environment> get_environment() const;
diff --git a/scene/resources/world_2d.cpp b/scene/resources/world_2d.cpp
index a8a87543c6..d4eff8d2b3 100644
--- a/scene/resources/world_2d.cpp
+++ b/scene/resources/world_2d.cpp
@@ -29,7 +29,7 @@
#include "world_2d.h"
#include "servers/visual_server.h"
#include "servers/physics_2d_server.h"
-#include "servers/spatial_sound_2d_server.h"
+//#include "servers/spatial_sound_2d_server.h"
#include "globals.h"
#include "scene/2d/visibility_notifier_2d.h"
#include "scene/main/viewport.h"
@@ -400,7 +400,6 @@ World2D::World2D() {
canvas = VisualServer::get_singleton()->canvas_create();
space = Physics2DServer::get_singleton()->space_create();
- sound_space = SpatialSound2DServer::get_singleton()->space_create();
//set space2D to be more friendly with pixels than meters, by adjusting some constants
Physics2DServer::get_singleton()->space_set_active(space,true);
@@ -417,6 +416,5 @@ World2D::~World2D() {
VisualServer::get_singleton()->free(canvas);
Physics2DServer::get_singleton()->free(space);
- SpatialSound2DServer::get_singleton()->free(sound_space);
memdelete(indexer);
}
diff --git a/servers/audio/audio_driver_dummy.cpp b/servers/audio/audio_driver_dummy.cpp
index 6fe14b0fcb..6e0c0089ca 100644
--- a/servers/audio/audio_driver_dummy.cpp
+++ b/servers/audio/audio_driver_dummy.cpp
@@ -43,7 +43,7 @@ Error AudioDriverDummy::init() {
mix_rate = 44100;
- output_format = OUTPUT_STEREO;
+ speaker_mode = SPEAKER_MODE_STEREO;
channels = 2;
int latency = GLOBAL_DEF("audio/output_latency",25);
@@ -97,16 +97,18 @@ int AudioDriverDummy::get_mix_rate() const {
return mix_rate;
};
-AudioDriverSW::OutputFormat AudioDriverDummy::get_output_format() const {
+AudioDriver::SpeakerMode AudioDriverDummy::get_speaker_mode() const {
- return output_format;
+ return speaker_mode;
};
+
void AudioDriverDummy::lock() {
if (!thread || !mutex)
return;
mutex->lock();
};
+
void AudioDriverDummy::unlock() {
if (!thread || !mutex)
diff --git a/servers/audio/audio_driver_dummy.h b/servers/audio/audio_driver_dummy.h
index c91a0db43a..78ec41ea09 100644
--- a/servers/audio/audio_driver_dummy.h
+++ b/servers/audio/audio_driver_dummy.h
@@ -29,13 +29,13 @@
#ifndef AUDIO_DRIVER_DUMMY_H
#define AUDIO_DRIVER_DUMMY_H
-#include "servers/audio/audio_server_sw.h"
+#include "servers/audio_server.h"
#include "core/os/thread.h"
#include "core/os/mutex.h"
-class AudioDriverDummy : public AudioDriverSW {
+class AudioDriverDummy : public AudioDriver {
Thread* thread;
Mutex* mutex;
@@ -46,7 +46,7 @@ class AudioDriverDummy : public AudioDriverSW {
int buffer_size;
unsigned int mix_rate;
- OutputFormat output_format;
+ SpeakerMode speaker_mode;
int channels;
@@ -64,7 +64,7 @@ public:
virtual Error init();
virtual void start();
virtual int get_mix_rate() const;
- virtual OutputFormat get_output_format() const;
+ virtual SpeakerMode get_speaker_mode() const;
virtual void lock();
virtual void unlock();
virtual void finish();
diff --git a/servers/audio/audio_effect.cpp b/servers/audio/audio_effect.cpp
new file mode 100644
index 0000000000..372c0cbc13
--- /dev/null
+++ b/servers/audio/audio_effect.cpp
@@ -0,0 +1,6 @@
+#include "audio_effect.h"
+
+AudioEffect::AudioEffect()
+{
+
+}
diff --git a/servers/audio/audio_effect.h b/servers/audio/audio_effect.h
new file mode 100644
index 0000000000..2fcd22251b
--- /dev/null
+++ b/servers/audio/audio_effect.h
@@ -0,0 +1,26 @@
+#ifndef AUDIOEFFECT_H
+#define AUDIOEFFECT_H
+
+#include "audio_frame.h"
+#include "resource.h"
+
+
+class AudioEffectInstance : public Reference {
+ GDCLASS(AudioEffectInstance,Reference)
+
+public:
+
+ virtual void process(AudioFrame *p_frames,int p_frame_count)=0;
+
+};
+
+
+class AudioEffect : public Resource {
+ GDCLASS(AudioEffect,Resource)
+public:
+
+ virtual Ref<AudioEffectInstance> instance()=0;
+ AudioEffect();
+};
+
+#endif // AUDIOEFFECT_H
diff --git a/servers/audio/audio_mixer_sw.cpp b/servers/audio/audio_mixer_sw.cpp
deleted file mode 100644
index 0123b66430..0000000000
--- a/servers/audio/audio_mixer_sw.cpp
+++ /dev/null
@@ -1,1222 +0,0 @@
-/*************************************************************************/
-/* audio_mixer_sw.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "audio_mixer_sw.h"
-#include "print_string.h"
-#include "os/os.h"
-//TODO implement FAST_AUDIO macro
-
-#ifdef FAST_AUDIO
-#define NO_REVERB
-#endif
-
-template<class Depth,bool is_stereo,bool is_ima_adpcm,bool use_filter,bool use_fx,AudioMixerSW::InterpolationType type,AudioMixerSW::MixChannels mix_mode>
-void AudioMixerSW::do_resample(const Depth* p_src, int32_t *p_dst, ResamplerState *p_state) {
-
- // this function will be compiled branchless by any decent compiler
-
- int32_t final,final_r,next,next_r;
- int32_t *reverb_dst = p_state->reverb_buffer;
- while (p_state->amount--) {
-
- int32_t pos=p_state->pos >> MIX_FRAC_BITS;
- if (is_stereo && !is_ima_adpcm)
- pos<<=1;
-
- if (is_ima_adpcm) {
-
- int sample_pos = pos + p_state->ima_adpcm[0].window_ofs;
-
- while(sample_pos>p_state->ima_adpcm[0].last_nibble) {
-
-
- static const int16_t _ima_adpcm_step_table[89] = {
- 7, 8, 9, 10, 11, 12, 13, 14, 16, 17,
- 19, 21, 23, 25, 28, 31, 34, 37, 41, 45,
- 50, 55, 60, 66, 73, 80, 88, 97, 107, 118,
- 130, 143, 157, 173, 190, 209, 230, 253, 279, 307,
- 337, 371, 408, 449, 494, 544, 598, 658, 724, 796,
- 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066,
- 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358,
- 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899,
- 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767
- };
-
- static const int8_t _ima_adpcm_index_table[16] = {
- -1, -1, -1, -1, 2, 4, 6, 8,
- -1, -1, -1, -1, 2, 4, 6, 8
- };
-
- for(int i=0;i<(is_stereo?2:1);i++) {
-
-
- int16_t nibble,diff,step;
-
- p_state->ima_adpcm[i].last_nibble++;
- const uint8_t *src_ptr=p_state->ima_adpcm[i].ptr;
-
-
- uint8_t nbb = src_ptr[ (p_state->ima_adpcm[i].last_nibble>>1) * (is_stereo?2:1) + i ];
- nibble = (p_state->ima_adpcm[i].last_nibble&1)?(nbb>>4):(nbb&0xF);
- step=_ima_adpcm_step_table[p_state->ima_adpcm[i].step_index];
-
-
- p_state->ima_adpcm[i].step_index += _ima_adpcm_index_table[nibble];
- if (p_state->ima_adpcm[i].step_index<0)
- p_state->ima_adpcm[i].step_index=0;
- if (p_state->ima_adpcm[i].step_index>88)
- p_state->ima_adpcm[i].step_index=88;
-
- diff = step >> 3 ;
- if (nibble & 1)
- diff += step >> 2 ;
- if (nibble & 2)
- diff += step >> 1 ;
- if (nibble & 4)
- diff += step ;
- if (nibble & 8)
- diff = -diff ;
-
- p_state->ima_adpcm[i].predictor+=diff;
- if (p_state->ima_adpcm[i].predictor<-0x8000)
- p_state->ima_adpcm[i].predictor=-0x8000;
- else if (p_state->ima_adpcm[i].predictor>0x7FFF)
- p_state->ima_adpcm[i].predictor=0x7FFF;
-
-
- /* store loop if there */
- if (p_state->ima_adpcm[i].last_nibble==p_state->ima_adpcm[i].loop_pos) {
-
- p_state->ima_adpcm[i].loop_step_index = p_state->ima_adpcm[i].step_index;
- p_state->ima_adpcm[i].loop_predictor = p_state->ima_adpcm[i].predictor;
- }
-
- //printf("%i - %i - pred %i\n",int(p_state->ima_adpcm[i].last_nibble),int(nibble),int(p_state->ima_adpcm[i].predictor));
-
- }
-
- }
-
- final=p_state->ima_adpcm[0].predictor;
- if (is_stereo) {
- final_r=p_state->ima_adpcm[1].predictor;
- }
-
- } else {
- final=p_src[pos];
- if (is_stereo)
- final_r=p_src[pos+1];
-
- if (sizeof(Depth)==1) { /* conditions will not exist anymore when compiled! */
- final<<=8;
- if (is_stereo)
- final_r<<=8;
- }
-
- if (type==INTERPOLATION_LINEAR) {
-
- if (is_stereo) {
-
- next=p_src[pos+2];
- next_r=p_src[pos+3];
- } else {
- next=p_src[pos+1];
- }
-
- if (sizeof(Depth)==1) {
- next<<=8;
- if (is_stereo)
- next_r<<=8;
- }
-
- int32_t frac=int32_t(p_state->pos&MIX_FRAC_MASK);
-
- final=final+((next-final)*frac >> MIX_FRAC_BITS);
- if (is_stereo)
- final_r=final_r+((next_r-final_r)*frac >> MIX_FRAC_BITS);
- }
- }
-
- if (use_filter) {
-
- Channel::Mix::Filter *f = p_state->filter_l;
- float finalf=final;
- float pre = finalf;
- finalf = ((finalf*p_state->coefs.b0) + (f->hb[0]*p_state->coefs.b1) + (f->hb[1]*p_state->coefs.b2) + (f->ha[0]*p_state->coefs.a1) + (f->ha[1]*p_state->coefs.a2)
- );
-
- f->ha[1]=f->ha[0];
- f->hb[1]=f->hb[0];
- f->hb[0]=pre;
- f->ha[0]=finalf;
-
- final=Math::fast_ftoi(finalf);
-
- if (is_stereo) {
-
- f = p_state->filter_r;
- finalf=final_r;
- pre = finalf;
- finalf = ((finalf*p_state->coefs.b0) + (f->hb[0]*p_state->coefs.b1) + (f->hb[1]*p_state->coefs.b2) + (f->ha[0]*p_state->coefs.a1) + (f->ha[1]*p_state->coefs.a2)
- );
- f->ha[1]=f->ha[0];
- f->hb[1]=f->hb[0];
- f->hb[0]=pre;
- f->ha[0]=finalf;
-
- final_r=Math::fast_ftoi(finalf);
-
- }
-
- p_state->coefs.b0+=p_state->coefs_inc.b0;
- p_state->coefs.b1+=p_state->coefs_inc.b1;
- p_state->coefs.b2+=p_state->coefs_inc.b2;
- p_state->coefs.a1+=p_state->coefs_inc.a1;
- p_state->coefs.a2+=p_state->coefs_inc.a2;
- }
-
- if (!is_stereo) {
- final_r=final; //copy to right channel if stereo
- }
-
- //convert back to 24 bits and mix to buffers
-
- if (mix_mode==MIX_STEREO) {
- *p_dst++ +=(final*(p_state->vol[0]>>MIX_VOLRAMP_FRAC_BITS))>>MIX_VOL_MOVE_TO_24;
- *p_dst++ +=(final_r*(p_state->vol[1]>>MIX_VOLRAMP_FRAC_BITS))>>MIX_VOL_MOVE_TO_24;
-
- p_state->vol[0]+=p_state->vol_inc[0];
- p_state->vol[1]+=p_state->vol_inc[1];
-
- if (use_fx) {
- *reverb_dst++ +=(final*(p_state->reverb_vol[0]>>MIX_VOLRAMP_FRAC_BITS))>>MIX_VOL_MOVE_TO_24;
- *reverb_dst++ +=(final_r*(p_state->reverb_vol[1]>>MIX_VOLRAMP_FRAC_BITS))>>MIX_VOL_MOVE_TO_24;
- p_state->reverb_vol[0]+=p_state->reverb_vol_inc[0];
- p_state->reverb_vol[1]+=p_state->reverb_vol_inc[1];
- }
-
-
- } else if (mix_mode==MIX_QUAD) {
-
- *p_dst++ +=(final*(p_state->vol[0]>>MIX_VOLRAMP_FRAC_BITS))>>MIX_VOL_MOVE_TO_24;
- *p_dst++ +=(final_r*(p_state->vol[1]>>MIX_VOLRAMP_FRAC_BITS))>>MIX_VOL_MOVE_TO_24;
-
- *p_dst++ +=(final*(p_state->vol[2]>>MIX_VOLRAMP_FRAC_BITS))>>MIX_VOL_MOVE_TO_24;
- *p_dst++ +=(final_r*(p_state->vol[3]>>MIX_VOLRAMP_FRAC_BITS))>>MIX_VOL_MOVE_TO_24;
-
- p_state->vol[0]+=p_state->vol_inc[0];
- p_state->vol[1]+=p_state->vol_inc[1];
- p_state->vol[2]+=p_state->vol_inc[2];
- p_state->vol[3]+=p_state->vol_inc[3];
-
- if (use_fx) {
- *reverb_dst++ +=(final*(p_state->reverb_vol[0]>>MIX_VOLRAMP_FRAC_BITS))>>MIX_VOL_MOVE_TO_24;
- *reverb_dst++ +=(final_r*(p_state->reverb_vol[1]>>MIX_VOLRAMP_FRAC_BITS))>>MIX_VOL_MOVE_TO_24;
- *reverb_dst++ +=(final*(p_state->reverb_vol[2]>>MIX_VOLRAMP_FRAC_BITS))>>MIX_VOL_MOVE_TO_24;
- *reverb_dst++ +=(final_r*(p_state->reverb_vol[3]>>MIX_VOLRAMP_FRAC_BITS))>>MIX_VOL_MOVE_TO_24;
- p_state->reverb_vol[0]+=p_state->reverb_vol_inc[0];
- p_state->reverb_vol[1]+=p_state->reverb_vol_inc[1];
- p_state->reverb_vol[2]+=p_state->reverb_vol_inc[2];
- p_state->reverb_vol[3]+=p_state->reverb_vol_inc[3];
- }
- }
-
- p_state->pos+=p_state->increment;
- }
-}
-
-
-void AudioMixerSW::mix_channel(Channel& c) {
-
-
- if (!sample_manager->is_sample(c.sample)) {
- // sample is gone!
- c.active=false;
- return;
- }
-
-
- /* some 64-bit fixed point precaches */
-
- int64_t loop_begin_fp=((int64_t)sample_manager->sample_get_loop_begin(c.sample) << MIX_FRAC_BITS);
- int64_t loop_end_fp=((int64_t)sample_manager->sample_get_loop_end(c.sample) << MIX_FRAC_BITS);
- int64_t length_fp=((int64_t)sample_manager->sample_get_length(c.sample) << MIX_FRAC_BITS);
- int64_t begin_limit=(sample_manager->sample_get_loop_format(c.sample)!=AS::SAMPLE_LOOP_NONE)?loop_begin_fp:0;
- int64_t end_limit=(sample_manager->sample_get_loop_format(c.sample)!=AS::SAMPLE_LOOP_NONE)?loop_end_fp:length_fp;
- bool is_stereo=sample_manager->sample_is_stereo(c.sample);
-
- int32_t todo=mix_chunk_size;
- //int mixed=0;
- bool use_filter=false;
-
- ResamplerState rstate;
-
- /* compute voume ramps, increment, etc */
-
-
-
- for(int i=0;i<mix_channels;i++) {
- c.mix.old_vol[i]=c.mix.vol[i];
- c.mix.old_reverb_vol[i]=c.mix.reverb_vol[i];
- c.mix.old_chorus_vol[i]=c.mix.chorus_vol[i];
- }
-
- float vol = c.vol*channel_nrg;
-
- float reverb_vol = c.reverb_send*channel_nrg;
- float chorus_vol = c.chorus_send*channel_nrg;
-
- if (mix_channels==2) {
- //stereo pan
- float pan = c.pan * 0.5 + 0.5;
- float panv[2]={
- (1.0 - pan)*(1<<MIX_VOL_FRAC_BITS),
- (pan)*(1<<MIX_VOL_FRAC_BITS)
- };
-
- for(int i=0;i<2;i++) {
-
- c.mix.vol[i]=Math::fast_ftoi(vol*panv[i]);
- c.mix.reverb_vol[i]=Math::fast_ftoi(reverb_vol*panv[i]);
- c.mix.chorus_vol[i]=Math::fast_ftoi(chorus_vol*panv[i]);
- }
-
- } else {
- //qudra pan
- float panx = c.pan * 0.5 + 0.5;
- float pany = c.depth * 0.5 + 0.5;
- // with this model every speaker plays at 0.25 energy at the center.. i'm not sure if it's correct but it seems to be balanced
- float panv[4]={
- (1.0-pany)*(1.0-panx)*(1<<MIX_VOL_FRAC_BITS),
- (1.0-pany)*( panx)*(1<<MIX_VOL_FRAC_BITS),
- ( pany)*(1.0-panx)*(1<<MIX_VOL_FRAC_BITS),
- ( pany)*( panx)*(1<<MIX_VOL_FRAC_BITS)
- };
-
- for(int i=0;i<4;i++) {
-
- c.mix.vol[i]=Math::fast_ftoi(vol*panv[i]);
- c.mix.reverb_vol[i]=Math::fast_ftoi(reverb_vol*panv[i]);
- c.mix.chorus_vol[i]=Math::fast_ftoi(chorus_vol*panv[i]);
- }
-
- }
-
- if (c.first_mix) { // avoid ramp up
-
- for(int i=0;i<mix_channels;i++) {
- c.mix.old_vol[i]=c.mix.vol[i];
- c.mix.old_reverb_vol[i]=c.mix.reverb_vol[i];
- c.mix.old_chorus_vol[i]=c.mix.chorus_vol[i];
- }
-
- c.first_mix=false;
- }
-
-
-
- Channel::Filter::Coefs filter_coefs;
- Channel::Filter::Coefs filter_inc;
-
- if (c.filter.type!=AudioMixer::FILTER_NONE) {
-
- filter_coefs=c.filter.old_coefs;
- filter_inc.b0=(c.filter.coefs.b0-filter_coefs.b0)/(1<<mix_chunk_bits);
- filter_inc.b1=(c.filter.coefs.b1-filter_coefs.b1)/(1<<mix_chunk_bits);
- filter_inc.b2=(c.filter.coefs.b2-filter_coefs.b2)/(1<<mix_chunk_bits);
- filter_inc.a1=(c.filter.coefs.a1-filter_coefs.a1)/(1<<mix_chunk_bits);
- filter_inc.a2=(c.filter.coefs.a2-filter_coefs.a2)/(1<<mix_chunk_bits);
- use_filter=true;
- }
-
- if (c.mix.increment>0)
- c.mix.increment=((int64_t)c.speed<<MIX_FRAC_BITS)/mix_rate;
- else
- c.mix.increment=-((int64_t)c.speed<<MIX_FRAC_BITS)/mix_rate;
-
- //volume ramp
-
-
- for(int i=0;i<mix_channels;i++) {
- rstate.vol_inc[i]=((c.mix.vol[i]-c.mix.old_vol[i])<<MIX_VOLRAMP_FRAC_BITS)>>mix_chunk_bits;
- rstate.vol[i]=c.mix.old_vol[i]<<MIX_VOLRAMP_FRAC_BITS;
- rstate.reverb_vol_inc[i]=((c.mix.reverb_vol[i]-c.mix.old_reverb_vol[i])<<MIX_VOLRAMP_FRAC_BITS)>>mix_chunk_bits;
- rstate.reverb_vol[i]=c.mix.old_reverb_vol[i]<<MIX_VOLRAMP_FRAC_BITS;
- rstate.chorus_vol_inc[i]=((c.mix.chorus_vol[i]-c.mix.old_chorus_vol[i])<<MIX_VOLRAMP_FRAC_BITS)>>mix_chunk_bits;
- rstate.chorus_vol[i]=c.mix.old_chorus_vol[i]<<MIX_VOLRAMP_FRAC_BITS;
- }
-
-
- //looping
-
- AS::SampleLoopFormat loop_format=sample_manager->sample_get_loop_format(c.sample);
- AS::SampleFormat format=sample_manager->sample_get_format(c.sample);
-
- bool use_fx=false;
-
- if (fx_enabled) {
-
- for(int i=0;i<mix_channels;i++) {
- if (c.mix.old_reverb_vol[i] || c.mix.reverb_vol[i] || c.mix.old_chorus_vol[i] || c.mix.chorus_vol[i] ) {
- use_fx=true;
- break;
- }
- }
- }
-
- /* audio data */
-
- const void *data=sample_manager->sample_get_data_ptr(c.sample);
- int32_t *dst_buff=mix_buffer;
-
-#ifndef NO_REVERB
- rstate.reverb_buffer=reverb_state[c.reverb_room].buffer;
-#endif
-
- /* @TODO validar loops al registrar? */
-
- rstate.coefs=filter_coefs;
- rstate.coefs_inc=filter_inc;
- rstate.filter_l=&c.mix.filter_l;
- rstate.filter_r=&c.mix.filter_r;
-
- if (format==AS::SAMPLE_FORMAT_IMA_ADPCM) {
-
- rstate.ima_adpcm=c.mix.ima_adpcm;
- if (loop_format!=AS::SAMPLE_LOOP_NONE) {
- c.mix.ima_adpcm[0].loop_pos=loop_begin_fp>>MIX_FRAC_BITS;
- c.mix.ima_adpcm[1].loop_pos=loop_begin_fp>>MIX_FRAC_BITS;
- loop_format=AS::SAMPLE_LOOP_FORWARD;
- }
- }
-
- while (todo>0) {
-
- int64_t limit=0;
- int32_t target=0,aux=0;
-
- /** LOOP CHECKING **/
-
- if ( c.mix.increment < 0 ) {
- /* going backwards */
-
- if ( loop_format!=AS::SAMPLE_LOOP_NONE && c.mix.offset < loop_begin_fp ) {
- /* loopstart reached */
- if ( loop_format==AS::SAMPLE_LOOP_PING_PONG ) {
- /* bounce ping pong */
- c.mix.offset= loop_begin_fp + ( loop_begin_fp-c.mix.offset );
- c.mix.increment=-c.mix.increment;
- } else {
- /* go to loop-end */
- c.mix.offset=loop_end_fp-(loop_begin_fp-c.mix.offset);
- }
- } else {
- /* check for sample not reaching begining */
- if(c.mix.offset < 0) {
-
- c.active=false;
- break;
- }
- }
- } else {
- /* going forward */
- if( loop_format!=AS::SAMPLE_LOOP_NONE && c.mix.offset >= loop_end_fp ) {
- /* loopend reached */
-
- if ( loop_format==AS::SAMPLE_LOOP_PING_PONG ) {
- /* bounce ping pong */
- c.mix.offset=loop_end_fp-(c.mix.offset-loop_end_fp);
- c.mix.increment=-c.mix.increment;
- } else {
- /* go to loop-begin */
-
- if (format==AS::SAMPLE_FORMAT_IMA_ADPCM) {
- for(int i=0;i<2;i++) {
- c.mix.ima_adpcm[i].step_index=c.mix.ima_adpcm[i].loop_step_index;
- c.mix.ima_adpcm[i].predictor=c.mix.ima_adpcm[i].loop_predictor;
- c.mix.ima_adpcm[i].last_nibble=loop_begin_fp>>MIX_FRAC_BITS;
- }
- c.mix.offset=loop_begin_fp;
- } else {
- c.mix.offset=loop_begin_fp+(c.mix.offset-loop_end_fp);
- }
-
- }
- } else {
- /* no loop, check for end of sample */
- if(c.mix.offset >= length_fp) {
-
- c.active=false;
- break;
- }
- }
- }
-
- /** MIXCOUNT COMPUTING **/
-
- /* next possible limit (looppoints or sample begin/end */
- limit=(c.mix.increment < 0) ?begin_limit:end_limit;
-
- /* compute what is shorter, the todo or the limit? */
- aux=(limit-c.mix.offset)/c.mix.increment+1;
- target=(aux<todo)?aux:todo; /* mix target is the shorter buffer */
-
- /* check just in case */
- if ( target<=0 ) {
- c.active=false;
- break;
- }
-
- todo-=target;
-
- int32_t offset=c.mix.offset&mix_chunk_mask; /* strip integer */
- c.mix.offset-=offset;
-
- rstate.increment=c.mix.increment;
- rstate.amount=target;
- rstate.pos=offset;
-
-/* Macros to call the resample function for all possibilities, creating a dedicated-non branchy function call for each thanks to template magic*/
-
-#define CALL_RESAMPLE_FUNC( m_depth, m_stereo, m_ima_adpcm, m_use_filter, m_use_fx, m_interp, m_mode)\
- do_resample<m_depth,m_stereo,m_ima_adpcm, m_use_filter,m_use_fx,m_interp, m_mode>(\
- src_ptr,\
- dst_buff,&rstate);
-
-
-#define CALL_RESAMPLE_INTERP( m_depth, m_stereo, m_ima_adpcm, m_use_filter, m_use_fx, m_interp, m_mode)\
- if(m_interp==INTERPOLATION_RAW) {\
- CALL_RESAMPLE_FUNC(m_depth,m_stereo, m_ima_adpcm,m_use_filter,m_use_fx,INTERPOLATION_RAW,m_mode);\
- } else if(m_interp==INTERPOLATION_LINEAR) {\
- CALL_RESAMPLE_FUNC(m_depth,m_stereo, m_ima_adpcm,m_use_filter,m_use_fx,INTERPOLATION_LINEAR,m_mode);\
- } else if(m_interp==INTERPOLATION_CUBIC) {\
- CALL_RESAMPLE_FUNC(m_depth,m_stereo, m_ima_adpcm,m_use_filter,m_use_fx,INTERPOLATION_CUBIC,m_mode);\
- }\
-
-#define CALL_RESAMPLE_FX( m_depth, m_stereo, m_ima_adpcm, m_use_filter, m_use_fx, m_interp, m_mode)\
- if(m_use_fx) {\
- CALL_RESAMPLE_INTERP(m_depth,m_stereo, m_ima_adpcm,m_use_filter,true,m_interp, m_mode);\
- } else {\
- CALL_RESAMPLE_INTERP(m_depth,m_stereo, m_ima_adpcm,m_use_filter,false,m_interp, m_mode);\
- }\
-
-
-#define CALL_RESAMPLE_FILTER( m_depth, m_stereo, m_ima_adpcm, m_use_filter, m_use_fx, m_interp, m_mode)\
- if(m_use_filter) {\
- CALL_RESAMPLE_FX(m_depth,m_stereo, m_ima_adpcm,true,m_use_fx,m_interp, m_mode);\
- } else {\
- CALL_RESAMPLE_FX(m_depth,m_stereo, m_ima_adpcm,false,m_use_fx,m_interp, m_mode);\
- }\
-
-#define CALL_RESAMPLE_STEREO( m_depth, m_stereo, m_ima_adpcm, m_use_filter, m_use_fx, m_interp, m_mode)\
- if(m_stereo) {\
- CALL_RESAMPLE_FILTER(m_depth,true,m_ima_adpcm, m_use_filter,m_use_fx,m_interp, m_mode);\
- } else {\
- CALL_RESAMPLE_FILTER(m_depth,false,m_ima_adpcm,m_use_filter,m_use_fx,m_interp, m_mode);\
- }\
-
-#define CALL_RESAMPLE_MODE( m_depth, m_stereo, m_ima_adpcm, m_use_filter, m_use_fx, m_interp, m_mode)\
- if(m_mode==MIX_STEREO) {\
- CALL_RESAMPLE_STEREO(m_depth,m_stereo, m_ima_adpcm,m_use_filter,m_use_fx,m_interp, MIX_STEREO);\
- } else {\
- CALL_RESAMPLE_STEREO(m_depth,m_stereo, m_ima_adpcm,m_use_filter,m_use_fx,m_interp, MIX_QUAD);\
- }\
-
-
-
-
- if (format==AS::SAMPLE_FORMAT_PCM8) {
-
- int8_t *src_ptr = &((int8_t*)data)[(c.mix.offset >> MIX_FRAC_BITS)<<(is_stereo?1:0) ];
- CALL_RESAMPLE_MODE(int8_t,is_stereo,false,use_filter,use_fx,interpolation_type,mix_channels);
-
- } else if (format==AS::SAMPLE_FORMAT_PCM16) {
- int16_t *src_ptr = &((int16_t*)data)[(c.mix.offset >> MIX_FRAC_BITS)<<(is_stereo?1:0) ];
- CALL_RESAMPLE_MODE(int16_t,is_stereo,false,use_filter,use_fx,interpolation_type,mix_channels);
-
- } else if (format==AS::SAMPLE_FORMAT_IMA_ADPCM) {
- for(int i=0;i<2;i++) {
- c.mix.ima_adpcm[i].window_ofs=c.mix.offset>>MIX_FRAC_BITS;
- c.mix.ima_adpcm[i].ptr=(const uint8_t*)data;
- }
- int8_t *src_ptr = NULL;
- CALL_RESAMPLE_MODE(int8_t,is_stereo,true,use_filter,use_fx,interpolation_type,mix_channels);
-
- }
-
- c.mix.offset+=rstate.pos;
- dst_buff+=target*mix_channels;
- rstate.reverb_buffer+=target*mix_channels;
- }
-
- c.filter.old_coefs=c.filter.coefs;
-}
-
-void AudioMixerSW::mix_chunk() {
-
- ERR_FAIL_COND(mix_chunk_left);
-
- inside_mix=true;
-
- // emit tick in usecs
- for (int i=0;i<mix_chunk_size*mix_channels;i++) {
-
- mix_buffer[i]=0;
- }
-#ifndef NO_REVERB
- for(int i=0;i<max_reverbs;i++)
- reverb_state[i].used_in_chunk=false;
-#endif
-
-
- audio_mixer_chunk_call(mix_chunk_size);
-
- int ac=0;
- for (int i=0;i<MAX_CHANNELS;i++) {
-
- if (!channels[i].active)
- continue;
- ac++;
-
- /* process volume */
- Channel&c=channels[i];
-#ifndef NO_REVERB
- bool has_reverb = c.reverb_send>CMP_EPSILON && fx_enabled;
- if (has_reverb || c.had_prev_reverb) {
-
- if (!reverb_state[c.reverb_room].used_in_chunk) {
- //zero the room
- int32_t *buff = reverb_state[c.reverb_room].buffer;
- int len = mix_chunk_size*mix_channels;
- for (int j=0;j<len;j++) {
-
- buff[j]=0; // buffer in use, clear it for appending
- }
- reverb_state[c.reverb_room].used_in_chunk=true;
- }
- }
-#else
- bool has_reverb = false;
-#endif
- bool has_chorus = c.chorus_send>CMP_EPSILON && fx_enabled;
-
-
- mix_channel(c);
-
- c.had_prev_reverb=has_reverb;
- c.had_prev_chorus=has_chorus;
-
- }
-
- //process reverb
-#ifndef NO_REVERB
- if (fx_enabled) {
-
-
- for(int i=0;i<max_reverbs;i++) {
-
- if (!reverb_state[i].enabled && !reverb_state[i].used_in_chunk)
- continue; //this reverb is not in use
-
- int32_t *src=NULL;
-
- if (reverb_state[i].used_in_chunk)
- src=reverb_state[i].buffer;
- else
- src=zero_buffer;
-
- bool in_use=false;
-
- int passes=mix_channels/2;
-
- for(int j=0;j<passes;j++) {
-
- if (reverb_state[i].reverb[j].process((int*)&src[j*2],(int*)&mix_buffer[j*2],mix_chunk_size,passes))
- in_use=true;
- }
-
- if (in_use) {
- reverb_state[i].enabled=true;
- reverb_state[i].frames_idle=0;
- //copy data over
-
- } else {
- reverb_state[i].frames_idle+=mix_chunk_size;
- if (false) { // go idle because too many frames passed
- //disable this reverb, as nothing important happened on it
- reverb_state[i].enabled=false;
- reverb_state[i].frames_idle=0;
- }
- }
-
- }
- }
-#endif
- mix_chunk_left=mix_chunk_size;
- inside_mix=false;
-}
-
-int AudioMixerSW::mix(int32_t *p_buffer,int p_frames) {
-
- int todo=p_frames;
- int mixes=0;
-
- while(todo) {
-
-
- if (!mix_chunk_left) {
-
- if (step_callback)
- step_callback(step_udata);
- mix_chunk();
- mixes++;
- }
-
- int to_mix=MIN(mix_chunk_left,todo);
- int from=mix_chunk_size-mix_chunk_left;
-
- for (int i=0;i<to_mix*2;i++) {
-
- (*p_buffer++)=mix_buffer[from*2+i];
- }
-
- mix_chunk_left-=to_mix;
- todo-=to_mix;
- }
-
- return mixes;
-}
-
-uint64_t AudioMixerSW::get_step_usecs() const {
-
- double mct = (1<<mix_chunk_bits)/double(mix_rate);
- return mct*1000000.0;
-}
-
-int AudioMixerSW::_get_channel(ChannelID p_channel) const {
-
- if (p_channel<0) {
- return -1;
- }
-
- int idx=p_channel%MAX_CHANNELS;
- int check=p_channel/MAX_CHANNELS;
- ERR_FAIL_INDEX_V(idx,MAX_CHANNELS,-1);
- if (channels[idx].check!=check) {
- return -1;
- }
- if (!channels[idx].active) {
- return -1;
- }
-
- return idx;
-}
-
-AudioMixer::ChannelID AudioMixerSW::channel_alloc(RID p_sample) {
-
- ERR_FAIL_COND_V( !sample_manager->is_sample(p_sample), INVALID_CHANNEL );
-
-
- int index=-1;
- for (int i=0;i<MAX_CHANNELS;i++) {
-
- if (!channels[i].active) {
- index=i;
- break;
- }
- }
-
- if (index==-1)
- return INVALID_CHANNEL;
-
- Channel &c=channels[index];
-
- // init variables
- c.sample=p_sample;
- c.vol=1;
- c.pan=0;
- c.depth=0;
- c.height=0;
- c.chorus_send=0;
- c.reverb_send=0;
- c.reverb_room=REVERB_HALL;
- c.positional=false;
- c.filter.type=FILTER_NONE;
- c.speed=sample_manager->sample_get_mix_rate(p_sample);
- c.active=true;
- c.check=channel_id_count++;
- c.first_mix=true;
-
- // init mix variables
-
- c.mix.offset=0;
- c.mix.increment=1;
- //zero everything when this errors
- for(int i=0;i<4;i++) {
- c.mix.vol[i]=0;
- c.mix.reverb_vol[i]=0;
- c.mix.chorus_vol[i]=0;
-
- c.mix.old_vol[i]=0;
- c.mix.old_reverb_vol[i]=0;
- c.mix.old_chorus_vol[i]=0;
- }
-
- c.had_prev_chorus=false;
- c.had_prev_reverb=false;
- c.had_prev_vol=false;
-
-
- if (sample_manager->sample_get_format(c.sample)==AudioServer::SAMPLE_FORMAT_IMA_ADPCM) {
-
- for(int i=0;i<2;i++) {
- c.mix.ima_adpcm[i].step_index=0;
- c.mix.ima_adpcm[i].predictor=0;
- c.mix.ima_adpcm[i].loop_step_index=0;
- c.mix.ima_adpcm[i].loop_predictor=0;
- c.mix.ima_adpcm[i].last_nibble=-1;
- c.mix.ima_adpcm[i].loop_pos=0x7FFFFFFF;
- c.mix.ima_adpcm[i].window_ofs=0;
- c.mix.ima_adpcm[i].ptr=NULL;
- }
- }
-
- ChannelID ret_id = index+c.check*MAX_CHANNELS;
-
- return ret_id;
-
-}
-
-void AudioMixerSW::channel_set_volume(ChannelID p_channel, float p_gain) {
-
- if (p_gain>3) // avoid gain going too high
- p_gain=3;
- if (p_gain<0)
- p_gain=0;
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return;
- Channel &c = channels[chan];
-
- //Math::exp( p_db * 0.11512925464970228420089957273422 );
- c.vol=p_gain;
-
-}
-
-void AudioMixerSW::channel_set_pan(ChannelID p_channel, float p_pan, float p_depth,float p_height) {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return;
- Channel &c = channels[chan];
-
- c.pan=p_pan;
- c.depth=p_depth;
- c.height=p_height;
-
-}
-void AudioMixerSW::channel_set_filter(ChannelID p_channel, FilterType p_type, float p_cutoff, float p_resonance, float p_gain) {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return;
-
- Channel &c = channels[chan];
-
- if (c.filter.type==p_type && c.filter.cutoff==p_cutoff && c.filter.resonance==p_resonance && c.filter.gain==p_gain)
- return; //bye
-
-
- bool type_changed = p_type!=c.filter.type;
-
- c.filter.type=p_type;
- c.filter.cutoff=p_cutoff;
- c.filter.resonance=p_resonance;
- c.filter.gain=p_gain;
-
-
- AudioFilterSW filter;
- switch(p_type) {
- case FILTER_NONE: {
-
- return; //do nothing else
- } break;
- case FILTER_LOWPASS: {
- filter.set_mode(AudioFilterSW::LOWPASS);
- } break;
- case FILTER_BANDPASS: {
- filter.set_mode(AudioFilterSW::BANDPASS);
- } break;
- case FILTER_HIPASS: {
- filter.set_mode(AudioFilterSW::HIGHPASS);
- } break;
- case FILTER_NOTCH: {
- filter.set_mode(AudioFilterSW::NOTCH);
- } break;
- case FILTER_PEAK: {
- filter.set_mode(AudioFilterSW::PEAK);
- } break;
- case FILTER_BANDLIMIT: {
- filter.set_mode(AudioFilterSW::BANDLIMIT);
- } break;
- case FILTER_LOW_SHELF: {
- filter.set_mode(AudioFilterSW::LOWSHELF);
- } break;
- case FILTER_HIGH_SHELF: {
- filter.set_mode(AudioFilterSW::HIGHSHELF);
- } break;
- }
-
- filter.set_cutoff(p_cutoff);
- filter.set_resonance(p_resonance);
- filter.set_gain(p_gain);
- filter.set_sampling_rate(mix_rate);
- filter.set_stages(1);
-
- AudioFilterSW::Coeffs coefs;
- filter.prepare_coefficients(&coefs);
-
- if (!type_changed)
- c.filter.old_coefs=c.filter.coefs;
-
- c.filter.coefs.b0=coefs.b0;
- c.filter.coefs.b1=coefs.b1;
- c.filter.coefs.b2=coefs.b2;
- c.filter.coefs.a1=coefs.a1;
- c.filter.coefs.a2=coefs.a2;
-
-
- if (type_changed) {
- //type changed reset filter
- c.filter.old_coefs=c.filter.coefs;
- c.mix.filter_l.ha[0]=0;
- c.mix.filter_l.ha[1]=0;
- c.mix.filter_l.hb[0]=0;
- c.mix.filter_l.hb[1]=0;
- c.mix.filter_r.ha[0]=0;
- c.mix.filter_r.ha[1]=0;
- c.mix.filter_r.hb[0]=0;
- c.mix.filter_r.hb[1]=0;
- }
-
-
-}
-void AudioMixerSW::channel_set_chorus(ChannelID p_channel, float p_chorus ) {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return;
-
- Channel &c = channels[chan];
- c.chorus_send=p_chorus;
-
-}
-void AudioMixerSW::channel_set_reverb(ChannelID p_channel, ReverbRoomType p_room_type, float p_reverb) {
-
- ERR_FAIL_INDEX(p_room_type,MAX_REVERBS);
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return;
-
- Channel &c = channels[chan];
- c.reverb_room=p_room_type;
- c.reverb_send=p_reverb;
-
-}
-
-void AudioMixerSW::channel_set_mix_rate(ChannelID p_channel, int p_mix_rate) {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return;
-
- Channel &c = channels[chan];
- c.speed=p_mix_rate;
-
-}
-void AudioMixerSW::channel_set_positional(ChannelID p_channel, bool p_positional) {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return;
-
- Channel &c = channels[chan];
- c.positional=p_positional;
-}
-
-float AudioMixerSW::channel_get_volume(ChannelID p_channel) const {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return 0;
-
- const Channel &c = channels[chan];
- //Math::log( c.vol ) * 8.6858896380650365530225783783321;
- return c.vol;
-}
-
-float AudioMixerSW::channel_get_pan(ChannelID p_channel) const {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return 0;
-
- const Channel &c = channels[chan];
- return c.pan;
-}
-float AudioMixerSW::channel_get_pan_depth(ChannelID p_channel) const {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return 0;
-
- const Channel &c = channels[chan];
- return c.depth;
-}
-float AudioMixerSW::channel_get_pan_height(ChannelID p_channel) const {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return 0;
-
- const Channel &c = channels[chan];
- return c.height;
-
-}
-AudioMixer::FilterType AudioMixerSW::channel_get_filter_type(ChannelID p_channel) const {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return FILTER_NONE;
-
- const Channel &c = channels[chan];
- return c.filter.type;
-}
-float AudioMixerSW::channel_get_filter_cutoff(ChannelID p_channel) const {
-
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return 0;
-
- const Channel &c = channels[chan];
- return c.filter.cutoff;
-
-}
-float AudioMixerSW::channel_get_filter_resonance(ChannelID p_channel) const {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return 0;
-
- const Channel &c = channels[chan];
- return c.filter.resonance;
-
-}
-
-float AudioMixerSW::channel_get_filter_gain(ChannelID p_channel) const {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return 0;
-
- const Channel &c = channels[chan];
- return c.filter.gain;
-}
-
-
-float AudioMixerSW::channel_get_chorus(ChannelID p_channel) const {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return 0;
-
- const Channel &c = channels[chan];
- return c.chorus_send;
-
-}
-AudioMixer::ReverbRoomType AudioMixerSW::channel_get_reverb_type(ChannelID p_channel) const {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return REVERB_HALL;
-
- const Channel &c = channels[chan];
- return c.reverb_room;
-
-}
-float AudioMixerSW::channel_get_reverb(ChannelID p_channel) const {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return 0;
-
- const Channel &c = channels[chan];
- return c.reverb_send;
-}
-
-int AudioMixerSW::channel_get_mix_rate(ChannelID p_channel) const {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return 0;
-
- const Channel &c = channels[chan];
- return c.speed;
-}
-bool AudioMixerSW::channel_is_positional(ChannelID p_channel) const {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return false;
-
- const Channel &c = channels[chan];
- return c.positional;
-}
-
-bool AudioMixerSW::channel_is_valid(ChannelID p_channel) const {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return false;
- return channels[chan].active;
-}
-
-
-void AudioMixerSW::channel_free(ChannelID p_channel) {
-
- int chan = _get_channel(p_channel);
- if (chan<0 || chan >=MAX_CHANNELS)
- return;
-
- Channel &c=channels[chan];
-
- if (!c.active)
- return;
-
- bool has_vol=false;
-
- for(int i=0;i<mix_channels;i++) {
-
- if (c.mix.vol[i])
- has_vol=true;
- if (c.mix.reverb_vol[i])
- has_vol=true;
- if (c.mix.chorus_vol[i])
- has_vol=true;
- }
- if (c.active && has_vol && inside_mix) {
- // drive voice to zero, and run a chunk, the VRAMP will fade it good
- c.vol=0;
- c.reverb_send=0;
- c.chorus_send=0;
- mix_channel(c);
- }
- /* @TODO RAMP DOWN ON STOP */
- c.active=false;
-}
-
-
-
-AudioMixerSW::AudioMixerSW(SampleManagerSW *p_sample_manager,int p_desired_latency_ms,int p_mix_rate,MixChannels p_mix_channels,bool p_use_fx,InterpolationType p_interp,MixStepCallback p_step_callback,void *p_step_udata) {
-
- if (OS::get_singleton()->is_stdout_verbose()) {
- print_line("AudioServerSW Params: ");
- print_line(" -mix chans: "+itos(p_mix_channels));
- print_line(" -mix rate: "+itos(p_mix_rate));
- print_line(" -latency: "+itos(p_desired_latency_ms));
- print_line(" -fx: "+itos(p_use_fx));
- print_line(" -interp: "+itos(p_interp));
- }
- sample_manager=p_sample_manager;
- mix_channels=p_mix_channels;
- mix_rate=p_mix_rate;
- step_callback=p_step_callback;
- step_udata=p_step_udata;
-
-
- mix_chunk_bits=nearest_shift( p_desired_latency_ms * p_mix_rate / 1000 );
-
- mix_chunk_size=(1<<mix_chunk_bits);
- mix_chunk_mask=mix_chunk_size-1;
- mix_buffer = memnew_arr(int32_t,mix_chunk_size*mix_channels);
-#ifndef NO_REVERB
- zero_buffer = memnew_arr(int32_t,mix_chunk_size*mix_channels);
- for(int i=0;i<mix_chunk_size*mix_channels;i++)
- zero_buffer[i]=0; //zero buffer is zero...
-
- max_reverbs=MAX_REVERBS;
- int reverberators=mix_channels/2;
-
- reverb_state = memnew_arr(ReverbState,max_reverbs);
- for(int i=0;i<max_reverbs;i++) {
- reverb_state[i].enabled=false;
- reverb_state[i].reverb = memnew_arr(ReverbSW,reverberators);
- reverb_state[i].buffer = memnew_arr(int32_t,mix_chunk_size*mix_channels);
- reverb_state[i].frames_idle=0;
- for(int j=0;j<reverberators;j++) {
- static ReverbSW::ReverbMode modes[MAX_REVERBS]={ReverbSW::REVERB_MODE_STUDIO_SMALL,ReverbSW::REVERB_MODE_STUDIO_MEDIUM,ReverbSW::REVERB_MODE_STUDIO_LARGE,ReverbSW::REVERB_MODE_HALL};
- reverb_state[i].reverb[j].set_mix_rate(p_mix_rate);
- reverb_state[i].reverb[j].set_mode(modes[i]);
- }
-
- }
- fx_enabled=p_use_fx;
-#else
- fx_enabled=false;
-#endif
- mix_chunk_left=0;
-
- interpolation_type=p_interp;
- channel_id_count=1;
- inside_mix=false;
- channel_nrg=1.0;
-
-}
-
-void AudioMixerSW::set_mixer_volume(float p_volume) {
-
- channel_nrg=p_volume;
-}
-
-AudioMixerSW::~AudioMixerSW() {
-
- memdelete_arr(mix_buffer);
-
-#ifndef NO_REVERB
- memdelete_arr(zero_buffer);
- for(int i=0;i<max_reverbs;i++) {
- memdelete_arr(reverb_state[i].reverb);
- memdelete_arr(reverb_state[i].buffer);
- }
- memdelete_arr(reverb_state);
-#endif
-
-
-}
diff --git a/servers/audio/audio_mixer_sw.h b/servers/audio/audio_mixer_sw.h
deleted file mode 100644
index 952cad4cfa..0000000000
--- a/servers/audio/audio_mixer_sw.h
+++ /dev/null
@@ -1,264 +0,0 @@
-/*************************************************************************/
-/* audio_mixer_sw.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef AUDIO_MIXER_SW_H
-#define AUDIO_MIXER_SW_H
-
-#include "servers/audio_server.h"
-#include "servers/audio/sample_manager_sw.h"
-#include "servers/audio/audio_filter_sw.h"
-#include "servers/audio/reverb_sw.h"
-
-class AudioMixerSW : public AudioMixer {
-public:
-
- enum InterpolationType {
-
- INTERPOLATION_RAW,
- INTERPOLATION_LINEAR,
- INTERPOLATION_CUBIC
- };
-
- enum MixChannels {
-
- MIX_STEREO=2,
- MIX_QUAD=4
- };
-
- typedef void (*MixStepCallback)(void*);
-
-private:
- SampleManagerSW *sample_manager;
-
- enum {
-
- MAX_CHANNELS=64,
- // fixed point defs
-
- MIX_FRAC_BITS=13,
- MIX_FRAC_LEN=(1<<MIX_FRAC_BITS),
- MIX_FRAC_MASK=MIX_FRAC_LEN-1,
- MIX_VOL_FRAC_BITS=12,
- MIX_VOLRAMP_FRAC_BITS=16,
- MIX_VOLRAMP_FRAC_LEN=(1<<MIX_VOLRAMP_FRAC_BITS),
- MIX_VOLRAMP_FRAC_MASK=MIX_VOLRAMP_FRAC_LEN-1,
- MIX_FILTER_FRAC_BITS=16,
- MIX_FILTER_RAMP_FRAC_BITS=8,
- MIX_VOL_MOVE_TO_24=4
- };
-
-
- struct Channel {
-
- RID sample;
- struct Mix {
- int64_t offset;
- int32_t increment;
-
- int32_t vol[4];
- int32_t reverb_vol[4];
- int32_t chorus_vol[4];
-
- int32_t old_vol[4];
- int32_t old_reverb_vol[4];
- int32_t old_chorus_vol[4];
-
-
- struct Filter { //history (stereo)
- float ha[2],hb[2];
- } filter_l,filter_r;
-
- struct IMA_ADPCM_State {
-
- int16_t step_index;
- int32_t predictor;
- /* values at loop point */
- int16_t loop_step_index;
- int32_t loop_predictor;
- int32_t last_nibble;
- int32_t loop_pos;
- int32_t window_ofs;
- const uint8_t *ptr;
- } ima_adpcm[2];
-
- } mix;
-
- float vol;
- float pan;
- float depth;
- float height;
-
- float chorus_send;
- ReverbRoomType reverb_room;
- float reverb_send;
- int speed;
- int check;
- bool positional;
-
- bool had_prev_reverb;
- bool had_prev_chorus;
- bool had_prev_vol;
-
- struct Filter {
-
- bool dirty;
-
- FilterType type;
- float cutoff;
- float resonance;
- float gain;
-
- struct Coefs {
-
- float a1,a2,b0,b1,b2; // fixed point coefficients
- } coefs,old_coefs;
-
- } filter;
-
- bool first_mix;
- bool active;
- Channel() { active=false; check=-1; first_mix=false; filter.dirty=true; filter.type=FILTER_NONE; filter.cutoff=8000; filter.resonance=0; filter.gain=0; }
- };
-
- Channel channels[MAX_CHANNELS];
-
- uint32_t mix_rate;
- bool fx_enabled;
- InterpolationType interpolation_type;
-
- int mix_chunk_bits;
- int mix_chunk_size;
- int mix_chunk_mask;
-
- int32_t *mix_buffer;
- int32_t *zero_buffer; // fx feed when no input was mixed
-
- struct ResamplerState {
-
- uint32_t amount;
- int32_t increment;
-
-
- int32_t pos;
-
-
- int32_t vol[4];
- int32_t reverb_vol[4];
- int32_t chorus_vol[4];
-
- int32_t vol_inc[4];
- int32_t reverb_vol_inc[4];
- int32_t chorus_vol_inc[4];
-
-
-
- Channel::Mix::Filter *filter_l;
- Channel::Mix::Filter *filter_r;
- Channel::Filter::Coefs coefs;
- Channel::Filter::Coefs coefs_inc;
-
- Channel::Mix::IMA_ADPCM_State *ima_adpcm;
-
- int32_t *reverb_buffer;
- };
-
-
-
- template<class Depth,bool is_stereo,bool use_filter,bool is_ima_adpcm,bool use_fx,InterpolationType type,MixChannels>
- _FORCE_INLINE_ void do_resample(const Depth* p_src, int32_t *p_dst, ResamplerState *p_state);
-
- MixChannels mix_channels;
-
- void mix_channel(Channel& p_channel);
- int mix_chunk_left;
- void mix_chunk();
-
- float channel_nrg;
- int channel_id_count;
- bool inside_mix;
- MixStepCallback step_callback;
- void *step_udata;
- _FORCE_INLINE_ int _get_channel(ChannelID p_channel) const;
-
- int max_reverbs;
- struct ReverbState {
-
- bool used_in_chunk;
- bool enabled;
- ReverbSW *reverb;
- int frames_idle;
- int32_t *buffer; //reverb is sent here
- ReverbState() { enabled=false; frames_idle=0; used_in_chunk=false; }
- };
-
- ReverbState *reverb_state;
-
-
-public:
-
-
- virtual ChannelID channel_alloc(RID p_sample);
-
- virtual void channel_set_volume(ChannelID p_channel, float p_gain);
- virtual void channel_set_pan(ChannelID p_channel, float p_pan, float p_depth=0,float height=0); //pan and depth go from -1 to 1
- virtual void channel_set_filter(ChannelID p_channel, FilterType p_type, float p_cutoff, float p_resonance, float p_gain=1.0);
- virtual void channel_set_chorus(ChannelID p_channel, float p_chorus );
- virtual void channel_set_reverb(ChannelID p_channel, ReverbRoomType p_room_type, float p_reverb);
- virtual void channel_set_mix_rate(ChannelID p_channel, int p_mix_rate);
- virtual void channel_set_positional(ChannelID p_channel, bool p_positional);
-
- virtual float channel_get_volume(ChannelID p_channel) const;
- virtual float channel_get_pan(ChannelID p_channel) const; //pan and depth go from -1 to 1
- virtual float channel_get_pan_depth(ChannelID p_channel) const; //pan and depth go from -1 to 1
- virtual float channel_get_pan_height(ChannelID p_channel) const; //pan and depth go from -1 to 1
- virtual FilterType channel_get_filter_type(ChannelID p_channel) const;
- virtual float channel_get_filter_cutoff(ChannelID p_channel) const;
- virtual float channel_get_filter_resonance(ChannelID p_channel) const;
- virtual float channel_get_filter_gain(ChannelID p_channel) const;
-
- virtual float channel_get_chorus(ChannelID p_channel) const;
- virtual ReverbRoomType channel_get_reverb_type(ChannelID p_channel) const;
- virtual float channel_get_reverb(ChannelID p_channel) const;
-
- virtual int channel_get_mix_rate(ChannelID p_channel) const;
- virtual bool channel_is_positional(ChannelID p_channel) const;
-
- virtual bool channel_is_valid(ChannelID p_channel) const;
-
- virtual void channel_free(ChannelID p_channel);
-
- int mix(int32_t *p_buffer,int p_frames); //return amount of mixsteps
- uint64_t get_step_usecs() const;
-
- virtual void set_mixer_volume(float p_volume);
-
- AudioMixerSW(SampleManagerSW *p_sample_manager,int p_desired_latency_ms,int p_mix_rate,MixChannels p_mix_channels,bool p_use_fx=true,InterpolationType p_interp=INTERPOLATION_LINEAR,MixStepCallback p_step_callback=NULL,void *p_callback_udata=NULL);
- ~AudioMixerSW();
-};
-
-#endif // AUDIO_MIXER_SW_H
diff --git a/servers/audio/audio_server_sw.cpp b/servers/audio/audio_server_sw.cpp
deleted file mode 100644
index f508a130b4..0000000000
--- a/servers/audio/audio_server_sw.cpp
+++ /dev/null
@@ -1,1028 +0,0 @@
-/*************************************************************************/
-/* audio_server_sw.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "audio_server_sw.h"
-#include "globals.h"
-#include "os/os.h"
-
-struct _AudioDriverLock {
-
- _AudioDriverLock() { if (AudioDriverSW::get_singleton()) AudioDriverSW::get_singleton()->lock(); }
- ~_AudioDriverLock() { if (AudioDriverSW::get_singleton()) AudioDriverSW::get_singleton()->unlock(); }
-
-};
-
-#define AUDIO_LOCK _AudioDriverLock _adlock;
-
-AudioMixer *AudioServerSW::get_mixer() {
-
- return mixer;
-}
-
-/* CALLBACKS */
-
-void AudioServerSW::audio_mixer_chunk_callback(int p_frames) {
-/*
- for(List<Stream*>::Element *E=event_streams.front();E;E=E->next()) {
-
- if (E->get()->active)
- E->get()->audio_stream->mix(NULL,p_frames);
- }
-*/
-}
-
-void AudioServerSW::_mixer_callback(void *p_udata) {
-
- AudioServerSW *self = (AudioServerSW*)p_udata;
- for(List<Stream*>::Element *E=self->active_audio_streams.front();E;E=E->next()) {
-
- if (!E->get()->active)
- continue;
-
- EventStream *es=E->get()->event_stream;
- if (!es)
- continue;
-
- es->update(self->mixer_step_usecs);
- }
-
-}
-
-void AudioServerSW::driver_process_chunk(int p_frames,int32_t *p_buffer) {
-
-
-
- int samples=p_frames*internal_buffer_channels;
-
- for(int i=0;i<samples;i++) {
- internal_buffer[i]=0;
- }
-
- while(voice_rb.commands_left()) {
-
- VoiceRBSW::Command cmd = voice_rb.pop_command();
-
- if (cmd.type==VoiceRBSW::Command::CMD_CHANGE_ALL_FX_VOLUMES) {
-
- SelfList<Voice>*al = active_list.first();
- while(al) {
-
- Voice *v=al->self();
- if (v->channel!=AudioMixer::INVALID_CHANNEL) {
- mixer->channel_set_volume(v->channel,v->volume*fx_volume_scale);
- }
- al=al->next();
- }
-
- continue;
- }
- if (!voice_owner.owns(cmd.voice))
- continue;
-
-
- Voice *v = voice_owner.get(cmd.voice);
-
- switch(cmd.type) {
- case VoiceRBSW::Command::CMD_NONE: {
-
-
- } break;
- case VoiceRBSW::Command::CMD_PLAY: {
-
- if (v->channel!=AudioMixer::INVALID_CHANNEL)
- mixer->channel_free(v->channel);
-
- RID sample = cmd.play.sample;
- if (!sample_manager->is_sample(sample))
- continue;
-
- v->channel=mixer->channel_alloc(sample);
- v->volume=1.0;
- mixer->channel_set_volume(v->channel,fx_volume_scale);
- if (v->channel==AudioMixer::INVALID_CHANNEL) {
-#ifdef AUDIO_DEBUG
- WARN_PRINT("AUDIO: all channels used, failed to allocate voice");
-#endif
- v->active=false;
- break; // no voices left?
- }
-
- v->active=true; // this kind of ensures it works
- if (!v->active_item.in_list())
- active_list.add(&v->active_item);
-
- } break;
- case VoiceRBSW::Command::CMD_STOP: {
-
- if (v->channel!=AudioMixer::INVALID_CHANNEL) {
- mixer->channel_free(v->channel);
- if (v->active_item.in_list()) {
- active_list.remove(&v->active_item);
- }
- }
- v->active=false;
- } break;
- case VoiceRBSW::Command::CMD_SET_VOLUME: {
-
-
- if (v->channel!=AudioMixer::INVALID_CHANNEL) {
- v->volume=cmd.volume.volume;
- mixer->channel_set_volume(v->channel,cmd.volume.volume*fx_volume_scale);
- }
-
- } break;
- case VoiceRBSW::Command::CMD_SET_PAN: {
-
- if (v->channel!=AudioMixer::INVALID_CHANNEL)
- mixer->channel_set_pan(v->channel,cmd.pan.pan,cmd.pan.depth,cmd.pan.height);
-
- } break;
- case VoiceRBSW::Command::CMD_SET_FILTER: {
-
-
- if (v->channel!=AudioMixer::INVALID_CHANNEL)
- mixer->channel_set_filter(v->channel,(AudioMixer::FilterType)cmd.filter.type,cmd.filter.cutoff,cmd.filter.resonance,cmd.filter.gain);
- } break;
- case VoiceRBSW::Command::CMD_SET_CHORUS: {
-
- if (v->channel!=AudioMixer::INVALID_CHANNEL)
- mixer->channel_set_chorus(v->channel,cmd.chorus.send);
-
- } break;
- case VoiceRBSW::Command::CMD_SET_REVERB: {
-
- if (v->channel!=AudioMixer::INVALID_CHANNEL)
- mixer->channel_set_reverb(v->channel,(AudioMixer::ReverbRoomType)cmd.reverb.room,cmd.reverb.send);
-
- } break;
- case VoiceRBSW::Command::CMD_SET_MIX_RATE: {
-
- if (v->channel!=AudioMixer::INVALID_CHANNEL)
- mixer->channel_set_mix_rate(v->channel,cmd.mix_rate.mix_rate);
-
- } break;
- case VoiceRBSW::Command::CMD_SET_POSITIONAL: {
-
- if (v->channel!=AudioMixer::INVALID_CHANNEL)
- mixer->channel_set_positional(v->channel,cmd.positional.positional);
-
- } break;
- default: {}
-
- }
- }
-
- mixer->mix(internal_buffer,p_frames);
- //uint64_t stepsize=mixer->get_step_usecs();
-
-
- for(List<Stream*>::Element *E=active_audio_streams.front();E;E=E->next()) {
-
- ERR_CONTINUE(!E->get()->active); // bug?
-
-
- AudioStream *as=E->get()->audio_stream;
- if (!as)
- continue;
-
- int channels=as->get_channel_count();
- if (channels==0)
- continue; // does not want mix
- if (!as->mix(stream_buffer,p_frames))
- continue; //nothing was mixed!!
-
- int32_t stream_vol_scale=(stream_volume*stream_volume_scale*E->get()->volume_scale)*(1<<STREAM_SCALE_BITS);
-
-#define STRSCALE(m_val) (((m_val>>STREAM_SCALE_BITS)*stream_vol_scale)>>8)
- switch(internal_buffer_channels) {
-
- case 2: {
-
- switch(channels) {
- case 1: {
-
- for(int i=0;i<p_frames;i++) {
-
- internal_buffer[(i<<1)+0]+=STRSCALE(stream_buffer[i]);
- internal_buffer[(i<<1)+1]+=STRSCALE(stream_buffer[i]);
- }
- } break;
- case 2: {
-
- for(int i=0;i<p_frames*2;i++) {
-
- internal_buffer[i]+=STRSCALE(stream_buffer[i]);
- }
- } break;
- case 4: {
-
- for(int i=0;i<p_frames;i++) {
-
- internal_buffer[(i<<2)+0]+=STRSCALE((stream_buffer[(i<<2)+0]+stream_buffer[(i<<2)+2])>>1);
- internal_buffer[(i<<2)+1]+=STRSCALE((stream_buffer[(i<<2)+1]+stream_buffer[(i<<2)+3])>>1);
- }
- } break;
-
- } break;
-
- } break;
- case 4: {
-
- switch(channels) {
- case 1: {
-
- for(int i=0;i<p_frames;i++) {
-
- internal_buffer[(i<<2)+0]+=STRSCALE(stream_buffer[i]);
- internal_buffer[(i<<2)+1]+=STRSCALE(stream_buffer[i]);
- internal_buffer[(i<<2)+2]+=STRSCALE(stream_buffer[i]);
- internal_buffer[(i<<2)+3]+=STRSCALE(stream_buffer[i]);
- }
- } break;
- case 2: {
-
- for(int i=0;i<p_frames*2;i++) {
-
- internal_buffer[(i<<2)+0]+=STRSCALE(stream_buffer[(i<<1)+0]);
- internal_buffer[(i<<2)+1]+=STRSCALE(stream_buffer[(i<<1)+1]);
- internal_buffer[(i<<2)+2]+=STRSCALE(stream_buffer[(i<<1)+0]);
- internal_buffer[(i<<2)+3]+=STRSCALE(stream_buffer[(i<<1)+1]);
- }
- } break;
- case 4: {
-
- for(int i=0;i<p_frames*4;i++) {
- internal_buffer[i]+=STRSCALE(stream_buffer[i]);
- }
- } break;
-
- } break;
-
- } break;
- case 6: {
-
-
- } break;
- }
-
-#undef STRSCALE
- }
-
- SelfList<Voice> *activeE=active_list.first();
- while(activeE) {
-
- SelfList<Voice> *activeN=activeE->next();
- if (activeE->self()->channel==AudioMixer::INVALID_CHANNEL || !mixer->channel_is_valid(activeE->self()->channel)) {
-
- active_list.remove(activeE);
- activeE->self()->active=false;
-
- }
- activeE=activeN;
- }
-
- uint32_t peak=0;
- for(int i=0;i<samples;i++) {
- //clamp to (1<<24) using branchless code
- int32_t in = internal_buffer[i];
-#ifdef DEBUG_ENABLED
- {
- int mask = (in >> (32 - 1));
- uint32_t p = (in + mask) ^ mask;
- if (p>peak)
- peak=p;
- }
-#endif
- int32_t lo = -0x800000, hi=0x7FFFFF;
- lo-=in;
- hi-=in;
- in += (lo & ((lo < 0) - 1)) + (hi & ((hi > 0) - 1));
- p_buffer[i]=in<<8;
- }
-
- if (peak>max_peak)
- max_peak=peak;
-}
-
-void AudioServerSW::driver_process(int p_frames,int32_t *p_buffer) {
-
-
- _output_delay=p_frames/double(AudioDriverSW::get_singleton()->get_mix_rate());
- //process in chunks to make sure to never process more than INTERNAL_BUFFER_SIZE
- int todo=p_frames;
- while(todo) {
-
- int tomix=MIN(todo,INTERNAL_BUFFER_SIZE);
- driver_process_chunk(tomix,p_buffer);
- p_buffer+=tomix;
- todo-=tomix;
- }
-
-
-}
-
-/* SAMPLE API */
-
-RID AudioServerSW::sample_create(SampleFormat p_format, bool p_stereo, int p_length) {
-
- AUDIO_LOCK
-
- return sample_manager->sample_create(p_format,p_stereo,p_length);
-}
-
-void AudioServerSW::sample_set_description(RID p_sample, const String& p_description) {
-
- AUDIO_LOCK
- sample_manager->sample_set_description(p_sample,p_description);
-}
-String AudioServerSW::sample_get_description(RID p_sample) const {
-
- AUDIO_LOCK
- return sample_manager->sample_get_description(p_sample);
-}
-
-AS::SampleFormat AudioServerSW::sample_get_format(RID p_sample) const {
- //AUDIO_LOCK
- return sample_manager->sample_get_format(p_sample);
-}
-bool AudioServerSW::sample_is_stereo(RID p_sample) const {
- //AUDIO_LOCK
- return sample_manager->sample_is_stereo(p_sample);
-}
-int AudioServerSW::sample_get_length(RID p_sample) const {
- ///AUDIO_LOCK
- return sample_manager->sample_get_length(p_sample);
-}
-
-const void* AudioServerSW::sample_get_data_ptr(RID p_sample) const {
- ///AUDIO_LOCK
- return sample_manager->sample_get_data_ptr(p_sample);
-}
-
-void AudioServerSW::sample_set_data(RID p_sample, const PoolVector<uint8_t>& p_buffer) {
- AUDIO_LOCK
- sample_manager->sample_set_data(p_sample,p_buffer);
-}
-PoolVector<uint8_t> AudioServerSW::sample_get_data(RID p_sample) const {
- AUDIO_LOCK
- return sample_manager->sample_get_data(p_sample);
-}
-
-void AudioServerSW::sample_set_mix_rate(RID p_sample,int p_rate) {
- AUDIO_LOCK
- sample_manager->sample_set_mix_rate(p_sample,p_rate);
-}
-int AudioServerSW::sample_get_mix_rate(RID p_sample) const {
- AUDIO_LOCK
- return sample_manager->sample_get_mix_rate(p_sample);
-}
-
-void AudioServerSW::sample_set_loop_format(RID p_sample,SampleLoopFormat p_format) {
- AUDIO_LOCK
- sample_manager->sample_set_loop_format(p_sample,p_format);
-}
-AS::SampleLoopFormat AudioServerSW::sample_get_loop_format(RID p_sample) const {
- AUDIO_LOCK
- return sample_manager->sample_get_loop_format(p_sample);
-}
-
-void AudioServerSW::sample_set_loop_begin(RID p_sample,int p_pos) {
- AUDIO_LOCK
- sample_manager->sample_set_loop_begin(p_sample,p_pos);
-}
-int AudioServerSW::sample_get_loop_begin(RID p_sample) const {
- AUDIO_LOCK
- return sample_manager->sample_get_loop_begin(p_sample);
-}
-
-void AudioServerSW::sample_set_loop_end(RID p_sample,int p_pos) {
- AUDIO_LOCK
- sample_manager->sample_set_loop_end(p_sample,p_pos);
-}
-int AudioServerSW::sample_get_loop_end(RID p_sample) const {
- AUDIO_LOCK
- return sample_manager->sample_get_loop_end(p_sample);
-}
-
-/* VOICE API */
-
-RID AudioServerSW::voice_create() {
-
- Voice * v = memnew( Voice );
- v->channel=AudioMixer::INVALID_CHANNEL;
-
- AUDIO_LOCK
- return voice_owner.make_rid(v);
-
-}
-void AudioServerSW::voice_play(RID p_voice, RID p_sample) {
-
- Voice *v = voice_owner.get( p_voice );
- ERR_FAIL_COND(!v);
- v->active=true; // force actvive (will be disabled later i gues..)
-
- //stop old, start new
- VoiceRBSW::Command cmd;
- cmd.type=VoiceRBSW::Command::CMD_PLAY;
- cmd.voice=p_voice;
- cmd.play.sample=p_sample;
- voice_rb.push_command(cmd);
-
-}
-
-void AudioServerSW::voice_set_volume(RID p_voice, float p_volume) {
-
- VoiceRBSW::Command cmd;
- cmd.type=VoiceRBSW::Command::CMD_SET_VOLUME;
- cmd.voice=p_voice;
- cmd.volume.volume=p_volume;
- voice_rb.push_command(cmd);
-
-}
-void AudioServerSW::voice_set_pan(RID p_voice, float p_pan, float p_depth,float p_height) {
-
- VoiceRBSW::Command cmd;
- cmd.type=VoiceRBSW::Command::CMD_SET_PAN;
- cmd.voice=p_voice;
- cmd.pan.pan=p_pan;
- cmd.pan.depth=p_depth;
- cmd.pan.height=p_height;
- voice_rb.push_command(cmd);
-
-}
-void AudioServerSW::voice_set_filter(RID p_voice, FilterType p_type, float p_cutoff, float p_resonance,float p_gain) {
-
- VoiceRBSW::Command cmd;
- cmd.type=VoiceRBSW::Command::CMD_SET_FILTER;
- cmd.voice=p_voice;
- cmd.filter.type=p_type;
- cmd.filter.cutoff=p_cutoff;
- cmd.filter.resonance=p_resonance;
- cmd.filter.gain=p_gain;
- voice_rb.push_command(cmd);
-
-}
-void AudioServerSW::voice_set_chorus(RID p_voice, float p_chorus ) {
-
- VoiceRBSW::Command cmd;
- cmd.type=VoiceRBSW::Command::CMD_SET_CHORUS;
- cmd.voice=p_voice;
- cmd.chorus.send=p_chorus;
- voice_rb.push_command(cmd);
-
-}
-void AudioServerSW::voice_set_reverb(RID p_voice, ReverbRoomType p_room_type, float p_reverb) {
-
- VoiceRBSW::Command cmd;
- cmd.type=VoiceRBSW::Command::CMD_SET_REVERB;
- cmd.voice=p_voice;
- cmd.reverb.room=p_room_type;
- cmd.reverb.send=p_reverb;
-
- voice_rb.push_command(cmd);
-
-}
-void AudioServerSW::voice_set_mix_rate(RID p_voice, int p_mix_rate) {
-
- VoiceRBSW::Command cmd;
- cmd.type=VoiceRBSW::Command::CMD_SET_MIX_RATE;
- cmd.voice=p_voice;
- cmd.mix_rate.mix_rate=p_mix_rate;
- voice_rb.push_command(cmd);
-
-}
-void AudioServerSW::voice_set_positional(RID p_voice, bool p_positional) {
-
- VoiceRBSW::Command cmd;
- cmd.type=VoiceRBSW::Command::CMD_SET_POSITIONAL;
- cmd.voice=p_voice;
- cmd.positional.positional=p_positional;
- voice_rb.push_command(cmd);
-
-}
-
-float AudioServerSW::voice_get_volume(RID p_voice) const {
-
- AUDIO_LOCK
- Voice *v = voice_owner.get( p_voice );
- ERR_FAIL_COND_V(!v, 0);
-
- return mixer->channel_get_volume( v->channel );
-
-}
-float AudioServerSW::voice_get_pan(RID p_voice) const {
-
- AUDIO_LOCK
- Voice *v = voice_owner.get( p_voice );
- ERR_FAIL_COND_V(!v, 0);
-
- return mixer->channel_get_pan( v->channel );
-
-}
-float AudioServerSW::voice_get_pan_depth(RID p_voice) const {
-
- AUDIO_LOCK
- Voice *v = voice_owner.get( p_voice );
- ERR_FAIL_COND_V(!v, 0);
-
- return mixer->channel_get_pan_depth( v->channel );
-
-}
-float AudioServerSW::voice_get_pan_height(RID p_voice) const {
-
- AUDIO_LOCK
- Voice *v = voice_owner.get( p_voice );
- ERR_FAIL_COND_V(!v, 0);
-
- return mixer->channel_get_pan_height( v->channel );
-
-}
-AS::FilterType AudioServerSW::voice_get_filter_type(RID p_voice) const {
-
- AUDIO_LOCK
- Voice *v = voice_owner.get( p_voice );
- ERR_FAIL_COND_V(!v, AS::FILTER_NONE);
-
- return (AS::FilterType)mixer->channel_get_filter_type(v->channel);
-
-}
-float AudioServerSW::voice_get_filter_cutoff(RID p_voice) const {
-
- AUDIO_LOCK
- Voice *v = voice_owner.get( p_voice );
- ERR_FAIL_COND_V(!v, 0);
-
- return mixer->channel_get_filter_cutoff( v->channel );
-
-}
-float AudioServerSW::voice_get_filter_resonance(RID p_voice) const {
-
- AUDIO_LOCK
- Voice *v = voice_owner.get( p_voice );
- ERR_FAIL_COND_V(!v, 0);
-
- return mixer->channel_get_filter_resonance( v->channel );
-
-}
-float AudioServerSW::voice_get_chorus(RID p_voice) const {
-
- AUDIO_LOCK
- Voice *v = voice_owner.get( p_voice );
- ERR_FAIL_COND_V(!v, 0);
-
- return mixer->channel_get_chorus( v->channel );
-
-}
-AS::ReverbRoomType AudioServerSW::voice_get_reverb_type(RID p_voice) const {
-
- AUDIO_LOCK
- Voice *v = voice_owner.get( p_voice );
- ERR_FAIL_COND_V(!v, REVERB_SMALL);
-
- return (AS::ReverbRoomType)mixer->channel_get_reverb_type( v->channel );
-
-}
-float AudioServerSW::voice_get_reverb(RID p_voice) const {
-
- AUDIO_LOCK
- Voice *v = voice_owner.get( p_voice );
- ERR_FAIL_COND_V(!v, 0);
-
- return mixer->channel_get_reverb( v->channel );
-
-}
-
-int AudioServerSW::voice_get_mix_rate(RID p_voice) const {
-
- AUDIO_LOCK
- Voice *v = voice_owner.get( p_voice );
- ERR_FAIL_COND_V(!v, 0);
-
- return mixer->channel_get_mix_rate( v->channel );
-
-}
-bool AudioServerSW::voice_is_positional(RID p_voice) const {
-
- AUDIO_LOCK
- Voice *v = voice_owner.get( p_voice );
- ERR_FAIL_COND_V(!v, 0);
-
- return mixer->channel_is_positional( v->channel );
-
-}
-
-void AudioServerSW::voice_stop(RID p_voice) {
-
- VoiceRBSW::Command cmd;
- cmd.type=VoiceRBSW::Command::CMD_STOP;
- cmd.voice=p_voice;
- voice_rb.push_command(cmd);
-
- //return mixer->channel_free( v->channel );
-
-}
-
-bool AudioServerSW::voice_is_active(RID p_voice) const {
-
- Voice *v = voice_owner.get(p_voice);
- ERR_FAIL_COND_V(!v,false);
- return v->active;
-
-}
-
-/* STREAM API */
-
-RID AudioServerSW::audio_stream_create(AudioStream *p_stream) {
-
- AUDIO_LOCK
- Stream *s = memnew(Stream);
- s->audio_stream=p_stream;
- s->event_stream=NULL;
- s->active=false;
- s->E=NULL;
- s->volume_scale=1.0;
- p_stream->set_mix_rate(AudioDriverSW::get_singleton()->get_mix_rate());
-
- return stream_owner.make_rid(s);
-}
-
-RID AudioServerSW::event_stream_create(EventStream *p_stream) {
-
- AUDIO_LOCK
- Stream *s = memnew(Stream);
- s->audio_stream=NULL;
- s->event_stream=p_stream;
- s->active=false;
- s->E=NULL;
- s->volume_scale=1.0;
- //p_stream->set_mix_rate(AudioDriverSW::get_singleton()->get_mix_rate());
-
- return stream_owner.make_rid(s);
-
-
-}
-
-
-void AudioServerSW::stream_set_active(RID p_stream, bool p_active) {
-
-
- Stream *s = stream_owner.get(p_stream);
- ERR_FAIL_COND(!s);
- _THREAD_SAFE_METHOD_
-
- if (s->active==p_active)
- return;
- AUDIO_LOCK;
- s->active=p_active;
- if (p_active)
- s->E=active_audio_streams.push_back(s);
- else {
- active_audio_streams.erase(s->E);
- s->E=NULL;
- }
-
-
-}
-
-bool AudioServerSW::stream_is_active(RID p_stream) const {
-
- Stream *s = stream_owner.get(p_stream);
- ERR_FAIL_COND_V(!s,false);
- return s->active;
-}
-
-void AudioServerSW::stream_set_volume_scale(RID p_stream, float p_scale) {
-
- Stream *s = stream_owner.get(p_stream);
- ERR_FAIL_COND(!s);
- s->volume_scale=p_scale;
-
-}
-
-float AudioServerSW::stream_set_volume_scale(RID p_stream) const {
-
- Stream *s = stream_owner.get(p_stream);
- ERR_FAIL_COND_V(!s,0);
- return s->volume_scale;
-
-}
-
-
-void AudioServerSW::free(RID p_id) {
-
- if(voice_owner.owns(p_id)) {
-
- Voice *v = voice_owner.get(p_id);
- AUDIO_LOCK
- mixer->channel_free( v->channel );
- voice_owner.free(p_id);
- memdelete(v);
-
- } else if (stream_owner.owns(p_id)) {
-
-
- Stream *s=stream_owner.get(p_id);
-
- if (s->active) {
- stream_set_active(p_id,false);
- }
-
- memdelete(s);
- stream_owner.free(p_id);
-
- } else if (sample_manager->is_sample(p_id)) {
-
- AUDIO_LOCK
- sample_manager->free(p_id);
- }
-
-}
-
-void AudioServerSW::_thread_func(void *self) {
-
- Thread::set_name("AudioServerSW");
-
- AudioServerSW *as=(AudioServerSW *)self;
-
- while (!as->exit_update_thread) {
- as->_update_streams(true);
- OS::get_singleton()->delay_usec(5000);
- }
-
-}
-
-void AudioServerSW::init() {
-
- int latency = GLOBAL_DEF("audio/mixer_latency",10);
- internal_buffer_channels=2; // read from driver
- internal_buffer = memnew_arr(int32_t,INTERNAL_BUFFER_SIZE*internal_buffer_channels);
- stream_buffer = memnew_arr(int32_t,INTERNAL_BUFFER_SIZE*4); //max 4 channels
- AudioMixerSW::MixChannels mix_chans = AudioMixerSW::MIX_STEREO;
-
- switch(AudioDriverSW::get_singleton()->get_output_format()) {
-
- case AudioDriverSW::OUTPUT_MONO:
- case AudioDriverSW::OUTPUT_STEREO:
- mix_chans=AudioMixerSW::MIX_STEREO;
- break;
- case AudioDriverSW::OUTPUT_QUAD:
- case AudioDriverSW::OUTPUT_5_1:
- mix_chans=AudioMixerSW::MIX_QUAD;
- break;
- }
-
- mixer = memnew( AudioMixerSW( sample_manager, latency, AudioDriverSW::get_singleton()->get_mix_rate(),mix_chans,mixer_use_fx,mixer_interp,_mixer_callback,this ) );
- mixer_step_usecs=mixer->get_step_usecs();
-
- _output_delay=0;
-
- stream_volume=0.3;
- // start the audio driver
- if (AudioDriverSW::get_singleton())
- AudioDriverSW::get_singleton()->start();
-
-#ifndef NO_THREADS
- exit_update_thread=false;
- thread = Thread::create(_thread_func,this);
-#endif
-
-}
-
-void AudioServerSW::finish() {
-
-#ifndef NO_THREADS
- exit_update_thread=true;
- Thread::wait_to_finish(thread);
- memdelete(thread);
-#endif
-
- if (AudioDriverSW::get_singleton())
- AudioDriverSW::get_singleton()->finish();
-
- memdelete_arr(internal_buffer);
- memdelete_arr(stream_buffer);
- memdelete(mixer);
-
-}
-
-void AudioServerSW::_update_streams(bool p_thread) {
-
- _THREAD_SAFE_METHOD_
- for(List<Stream*>::Element *E=active_audio_streams.front();E;) { //stream might be removed durnig this callback
-
- List<Stream*>::Element *N=E->next();
-
- if (E->get()->audio_stream && p_thread == E->get()->audio_stream->can_update_mt())
- E->get()->audio_stream->update();
-
- E=N;
- }
-
-}
-
-void AudioServerSW::update() {
-
- _update_streams(false);
-#ifdef NO_THREADS
-
- _update_streams(true);
-#endif
-}
-
-
-void AudioServerSW::lock() {
-
- AudioDriverSW::get_singleton()->lock();
-}
-
-void AudioServerSW::unlock() {
- AudioDriverSW::get_singleton()->unlock();
-
-}
-
-int AudioServerSW::get_default_mix_rate() const {
-
- return AudioDriverSW::get_singleton()->get_mix_rate();
-}
-int AudioServerSW::get_default_channel_count() const {
- return internal_buffer_channels;
-}
-
-void AudioServerSW::set_mixer_params(AudioMixerSW::InterpolationType p_interp, bool p_use_fx) {
-
- mixer_interp=p_interp;
- mixer_use_fx=p_use_fx;
-}
-
-void AudioServerSW::set_stream_global_volume_scale(float p_volume) {
-
- stream_volume_scale=p_volume;
-}
-
-float AudioServerSW::get_stream_global_volume_scale() const {
-
- return stream_volume_scale;
-
-
-}
-
-void AudioServerSW::set_fx_global_volume_scale(float p_volume) {
-
- fx_volume_scale=p_volume;
- //mixer->set_mixer_volume(fx_volume_scale);
- VoiceRBSW::Command cmd;
- cmd.type=VoiceRBSW::Command::CMD_CHANGE_ALL_FX_VOLUMES;
- cmd.voice=RID();
- cmd.volume.volume=p_volume;
- voice_rb.push_command(cmd);
-
-}
-
-
-float AudioServerSW::get_fx_global_volume_scale() const {
-
- return fx_volume_scale;
-}
-
-void AudioServerSW::set_event_voice_global_volume_scale(float p_volume) {
-
- event_voice_volume_scale=p_volume;
- //mixer->set_mixer_volume(event_voice_volume_scale);
-}
-
-
-float AudioServerSW::get_event_voice_global_volume_scale() const {
-
- return event_voice_volume_scale;
-}
-
-double AudioServerSW::get_output_delay() const {
-
- return _output_delay+AudioDriverSW::get_singleton()->get_latency();
-}
-
-double AudioServerSW::get_mix_time() const {
-
- return AudioDriverSW::get_singleton()->get_mix_time();
-}
-
-uint32_t AudioServerSW::read_output_peak() const {
-
- uint32_t val = max_peak;
- uint32_t *p = (uint32_t*)&max_peak;
- *p=0;
- return val;
-}
-
-AudioServerSW::AudioServerSW(SampleManagerSW *p_sample_manager) {
-
- sample_manager=p_sample_manager;
- String interp = GLOBAL_DEF("audio/mixer_interp","linear");
- GlobalConfig::get_singleton()->set_custom_property_info("audio/mixer_interp",PropertyInfo(Variant::STRING,"audio/mixer_interp",PROPERTY_HINT_ENUM,"raw,linear,cubic"));
- if (interp=="raw")
- mixer_interp=AudioMixerSW::INTERPOLATION_RAW;
- else if (interp=="cubic")
- mixer_interp=AudioMixerSW::INTERPOLATION_CUBIC;
- else
- mixer_interp=AudioMixerSW::INTERPOLATION_LINEAR;
- mixer_use_fx = GLOBAL_DEF("audio/use_chorus_reverb",true);
- stream_volume_scale=GLOBAL_DEF("audio/stream_volume_scale",1.0);
- fx_volume_scale=GLOBAL_DEF("audio/fx_volume_scale",1.0);
- event_voice_volume_scale=GLOBAL_DEF("audio/event_voice_volume_scale",0.5);
- max_peak=0;
-
-
-}
-
-AudioServerSW::~AudioServerSW() {
-
-}
-
-
-AudioDriverSW *AudioDriverSW::singleton=NULL;
-AudioDriverSW *AudioDriverSW::get_singleton() {
-
- return singleton;
-}
-
-void AudioDriverSW::set_singleton() {
-
- singleton=this;
-}
-
-void AudioDriverSW::audio_server_process(int p_frames,int32_t *p_buffer,bool p_update_mix_time) {
-
- AudioServerSW * audio_server = static_cast<AudioServerSW*>(AudioServer::get_singleton());
- if (p_update_mix_time)
- update_mix_time(p_frames);
- audio_server->driver_process(p_frames,p_buffer);
-}
-
-void AudioDriverSW::update_mix_time(int p_frames) {
-
- _mix_amount+=p_frames;
- _last_mix_time=OS::get_singleton()->get_ticks_usec();
-}
-
-double AudioDriverSW::get_mix_time() const {
-
- double total = (OS::get_singleton()->get_ticks_usec() - _last_mix_time) / 1000000.0;
- total+=_mix_amount/(double)get_mix_rate();
- return total;
-
-}
-
-
-AudioDriverSW::AudioDriverSW() {
-
- _last_mix_time=0;
- _mix_amount=0;
-}
-
-
-AudioDriverSW *AudioDriverManagerSW::drivers[MAX_DRIVERS];
-int AudioDriverManagerSW::driver_count=0;
-
-
-
-void AudioDriverManagerSW::add_driver(AudioDriverSW *p_driver) {
-
- ERR_FAIL_COND(driver_count>=MAX_DRIVERS);
- drivers[driver_count++]=p_driver;
-}
-
-int AudioDriverManagerSW::get_driver_count() {
-
- return driver_count;
-}
-AudioDriverSW *AudioDriverManagerSW::get_driver(int p_driver) {
-
- ERR_FAIL_INDEX_V(p_driver,driver_count,NULL);
- return drivers[p_driver];
-}
-
diff --git a/servers/audio/audio_server_sw.h b/servers/audio/audio_server_sw.h
deleted file mode 100644
index 52b45351c3..0000000000
--- a/servers/audio/audio_server_sw.h
+++ /dev/null
@@ -1,286 +0,0 @@
-/*************************************************************************/
-/* audio_server_sw.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef AUDIO_SERVER_SW_H
-#define AUDIO_SERVER_SW_H
-
-#include "servers/audio_server.h"
-#include "servers/audio/audio_mixer_sw.h"
-#include "servers/audio/voice_rb_sw.h"
-#include "self_list.h"
-#include "os/thread_safe.h"
-#include "os/thread.h"
-class AudioServerSW : public AudioServer {
-
- GDCLASS( AudioServerSW, AudioServer );
-
- _THREAD_SAFE_CLASS_
-
- enum {
- INTERNAL_BUFFER_SIZE=4096,
- STREAM_SCALE_BITS=12
-
- };
-
- SampleManagerSW *sample_manager;
- AudioMixerSW *mixer;
-
- virtual AudioMixer *get_mixer();
- virtual void audio_mixer_chunk_callback(int p_frames);
-
- struct Voice : public RID_Data {
-
- float volume;
- volatile bool active;
- SelfList<Voice> active_item;
- AudioMixer::ChannelID channel;
-
-
- Voice () : active_item(this) { channel=AudioMixer::INVALID_CHANNEL; active=false;}
- };
-
- mutable RID_Owner<Voice> voice_owner;
- SelfList<Voice>::List active_list;
-
- struct Stream : public RID_Data {
- bool active;
- List<Stream*>::Element *E;
- AudioStream *audio_stream;
- EventStream *event_stream;
- float volume_scale;
- };
-
- List<Stream*> active_audio_streams;
-
- //List<Stream*> event_streams;
-
- int32_t * internal_buffer;
- int internal_buffer_channels;
- int32_t * stream_buffer;
-
- mutable RID_Owner<Stream> stream_owner;
-
- float stream_volume;
- float stream_volume_scale;
- float fx_volume_scale;
- float event_voice_volume_scale;
- float peak_left,peak_right;
- uint32_t max_peak;
-
- double _output_delay;
-
- VoiceRBSW voice_rb;
-
- bool exit_update_thread;
- Thread *thread;
- static void _thread_func(void *self);
-
- void _update_streams(bool p_thread);
- void driver_process_chunk(int p_frames,int32_t *p_buffer);
-
- AudioMixerSW::InterpolationType mixer_interp;
- bool mixer_use_fx;
- uint64_t mixer_step_usecs;
-
- static void _mixer_callback(void *p_udata);
-friend class AudioDriverSW;
- void driver_process(int p_frames,int32_t *p_buffer);
-public:
-
-
- /* SAMPLE API */
-
- virtual RID sample_create(SampleFormat p_format, bool p_stereo, int p_length);
-
- virtual void sample_set_description(RID p_sample, const String& p_description);
- virtual String sample_get_description(RID p_sample) const;
-
- virtual SampleFormat sample_get_format(RID p_sample) const;
- virtual bool sample_is_stereo(RID p_sample) const;
- virtual int sample_get_length(RID p_sample) const;
- const void* sample_get_data_ptr(RID p_sample) const;
-
- virtual void sample_set_data(RID p_sample, const PoolVector<uint8_t>& p_buffer);
- virtual PoolVector<uint8_t> sample_get_data(RID p_sample) const;
-
- virtual void sample_set_mix_rate(RID p_sample,int p_rate);
- virtual int sample_get_mix_rate(RID p_sample) const;
-
- virtual void sample_set_loop_format(RID p_sample,SampleLoopFormat p_format);
- virtual SampleLoopFormat sample_get_loop_format(RID p_sample) const;
-
- virtual void sample_set_loop_begin(RID p_sample,int p_pos);
- virtual int sample_get_loop_begin(RID p_sample) const;
-
- virtual void sample_set_loop_end(RID p_sample,int p_pos);
- virtual int sample_get_loop_end(RID p_sample) const;
-
- /* VOICE API */
-
- virtual RID voice_create();
-
- virtual void voice_play(RID p_voice, RID p_sample);
-
- virtual void voice_set_volume(RID p_voice, float p_volume);
- virtual void voice_set_pan(RID p_voice, float p_pan, float p_depth=0,float height=0); //pan and depth go from -1 to 1
- virtual void voice_set_filter(RID p_voice, FilterType p_type, float p_cutoff, float p_resonance,float p_gain=0);
- virtual void voice_set_chorus(RID p_voice, float p_chorus );
- virtual void voice_set_reverb(RID p_voice, ReverbRoomType p_room_type, float p_reverb);
- virtual void voice_set_mix_rate(RID p_voice, int p_mix_rate);
- virtual void voice_set_positional(RID p_voice, bool p_positional);
-
- virtual float voice_get_volume(RID p_voice) const;
- virtual float voice_get_pan(RID p_voice) const; //pan and depth go from -1 to 1
- virtual float voice_get_pan_depth(RID p_voice) const; //pan and depth go from -1 to 1
- virtual float voice_get_pan_height(RID p_voice) const; //pan and depth go from -1 to 1
- virtual FilterType voice_get_filter_type(RID p_voice) const;
- virtual float voice_get_filter_cutoff(RID p_voice) const;
- virtual float voice_get_filter_resonance(RID p_voice) const;
- virtual float voice_get_chorus(RID p_voice) const;
- virtual ReverbRoomType voice_get_reverb_type(RID p_voice) const;
- virtual float voice_get_reverb(RID p_voice) const;
-
- virtual int voice_get_mix_rate(RID p_voice) const;
- virtual bool voice_is_positional(RID p_voice) const;
-
- virtual void voice_stop(RID p_voice);
- virtual bool voice_is_active(RID p_voice) const;
-
- /* STREAM API */
-
- virtual RID audio_stream_create(AudioStream *p_stream);
- virtual RID event_stream_create(EventStream *p_stream);
-
- virtual void stream_set_active(RID p_stream, bool p_active);
- virtual bool stream_is_active(RID p_stream) const;
-
- virtual void stream_set_volume_scale(RID p_stream, float p_scale);
- virtual float stream_set_volume_scale(RID p_stream) const;
-
- virtual void free(RID p_id);
-
- virtual void init();
- virtual void finish();
- virtual void update();
-
- virtual void lock();
- virtual void unlock();
- virtual int get_default_channel_count() const;
- virtual int get_default_mix_rate() const;
-
- void set_mixer_params(AudioMixerSW::InterpolationType p_interp, bool p_use_fx);
-
- virtual void set_stream_global_volume_scale(float p_volume);
- virtual void set_fx_global_volume_scale(float p_volume);
- virtual void set_event_voice_global_volume_scale(float p_volume);
-
-
- virtual float get_stream_global_volume_scale() const;
- virtual float get_fx_global_volume_scale() const;
- virtual float get_event_voice_global_volume_scale() const;
-
- virtual uint32_t read_output_peak() const;
-
- virtual double get_mix_time() const; //useful for video -> audio sync
-
- virtual double get_output_delay() const;
-
-
- AudioServerSW(SampleManagerSW *p_sample_manager);
- ~AudioServerSW();
-
-};
-
-
-class AudioDriverSW {
-
-
- static AudioDriverSW *singleton;
- uint64_t _last_mix_time;
- uint64_t _mix_amount;
-
-
-protected:
-
- void audio_server_process(int p_frames,int32_t *p_buffer,bool p_update_mix_time=true);
- void update_mix_time(int p_frames);
-
-public:
-
-
- double get_mix_time() const; //useful for video -> audio sync
-
- enum OutputFormat {
-
- OUTPUT_MONO,
- OUTPUT_STEREO,
- OUTPUT_QUAD,
- OUTPUT_5_1
- };
-
- static AudioDriverSW *get_singleton();
- void set_singleton();
-
- virtual const char* get_name() const=0;
-
- virtual Error init()=0;
- virtual void start()=0;
- virtual int get_mix_rate() const =0;
- virtual OutputFormat get_output_format() const=0;
- virtual void lock()=0;
- virtual void unlock()=0;
- virtual void finish()=0;
-
- virtual float get_latency() { return 0; }
-
-
-
-
- AudioDriverSW();
- virtual ~AudioDriverSW() {};
-};
-
-
-
-class AudioDriverManagerSW {
-
- enum {
-
- MAX_DRIVERS=10
- };
-
- static AudioDriverSW *drivers[MAX_DRIVERS];
- static int driver_count;
-public:
-
- static void add_driver(AudioDriverSW *p_driver);
- static int get_driver_count();
- static AudioDriverSW *get_driver(int p_driver);
-};
-
-#endif // AUDIO_SERVER_SW_H
diff --git a/servers/audio/sample_manager_sw.cpp b/servers/audio/sample_manager_sw.cpp
deleted file mode 100644
index fe4cc36776..0000000000
--- a/servers/audio/sample_manager_sw.cpp
+++ /dev/null
@@ -1,320 +0,0 @@
-/*************************************************************************/
-/* sample_manager_sw.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "sample_manager_sw.h"
-
-#include "print_string.h"
-
-SampleManagerSW::~SampleManagerSW()
-{
-}
-
-
-
-RID SampleManagerMallocSW::sample_create(AS::SampleFormat p_format, bool p_stereo, int p_length) {
-
- Sample *s = memnew( Sample );
- int datalen = p_length;
- if (p_format==AS::SAMPLE_FORMAT_PCM16)
- datalen*=2;
- else if (p_format==AS::SAMPLE_FORMAT_IMA_ADPCM) {
- if (datalen&1) {
- datalen++;
- }
- datalen/=2;
- datalen+=4;
- }
-
- if (p_stereo)
- datalen*=2;
-
-#define SAMPLE_EXTRA 16
-
- s->data = memalloc(datalen+SAMPLE_EXTRA); //help the interpolator by allocating a little more..
- for(int i=0;i<SAMPLE_EXTRA;i++) {
-
- uint8_t *data = (uint8_t*)s->data;
- data[datalen+i]=0;
- }
- if (!s->data) {
-
- memdelete(s);
- ERR_EXPLAIN("Cannot allocate sample of requested size.");
- ERR_FAIL_V(RID());
- }
-
- s->format=p_format;
- s->length=p_length;
- s->length_bytes=datalen;
- s->stereo=p_stereo;
- s->loop_begin=0;
- s->loop_end=0;
- s->loop_format=AS::SAMPLE_LOOP_NONE;
- s->mix_rate=44100;
-
- AudioServer::get_singleton()->lock();
- RID rid = sample_owner.make_rid(s);
- AudioServer::get_singleton()->unlock();
-
- return rid;
-}
-
-void SampleManagerMallocSW::sample_set_description(RID p_sample, const String& p_description) {
-
- Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND(!s);
-
- s->description=p_description;
-}
-
-String SampleManagerMallocSW::sample_get_description(RID p_sample) const {
-
- const Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND_V(!s,String());
-
- return s->description;
-}
-
-
-AS::SampleFormat SampleManagerMallocSW::sample_get_format(RID p_sample) const {
-
- const Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND_V(!s,AS::SAMPLE_FORMAT_PCM8);
-
- return s->format;
-}
-
-bool SampleManagerMallocSW::sample_is_stereo(RID p_sample) const {
-
- const Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND_V(!s,false);
-
- return s->stereo;
-
-}
-int SampleManagerMallocSW::sample_get_length(RID p_sample) const {
-
- const Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND_V(!s,-1);
-
- return s->length;
-}
-
-void SampleManagerMallocSW::sample_set_data(RID p_sample, const PoolVector<uint8_t>& p_buffer) {
-
- Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND(!s);
-
- int buff_size=p_buffer.size();
- ERR_FAIL_COND(buff_size==0);
-
-
- ERR_EXPLAIN("Sample buffer size does not match sample size.");
- //print_line("len bytes: "+itos(s->length_bytes)+" bufsize: "+itos(buff_size));
- ERR_FAIL_COND(s->length_bytes!=buff_size);
- PoolVector<uint8_t>::Read buffer_r=p_buffer.read();
- const uint8_t *src = buffer_r.ptr();
- uint8_t *dst = (uint8_t*)s->data;
- //print_line("set data: "+itos(s->length_bytes));
-
- for(int i=0;i<s->length_bytes;i++) {
-
- dst[i]=src[i];
- }
-
- switch(s->format) {
-
- case AS::SAMPLE_FORMAT_PCM8: {
-
- if (s->stereo) {
- dst[s->length]=dst[s->length-2];
- dst[s->length+1]=dst[s->length-1];
- } else {
-
- dst[s->length]=dst[s->length-1];
- }
-
- } break;
- case AS::SAMPLE_FORMAT_PCM16: {
-
- if (s->stereo) {
- dst[s->length]=dst[s->length-4];
- dst[s->length+1]=dst[s->length-3];
- dst[s->length+2]=dst[s->length-2];
- dst[s->length+3]=dst[s->length-1];
- } else {
-
- dst[s->length]=dst[s->length-2];
- dst[s->length+1]=dst[s->length-1];
- }
-
- } break;
-
- }
-
-
-
-}
-
-const PoolVector<uint8_t> SampleManagerMallocSW::sample_get_data(RID p_sample) const {
-
- Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND_V(!s,PoolVector<uint8_t>());
-
- PoolVector<uint8_t> ret_buffer;
- ret_buffer.resize(s->length_bytes);
- PoolVector<uint8_t>::Write buffer_w=ret_buffer.write();
- uint8_t *dst = buffer_w.ptr();
- const uint8_t *src = (const uint8_t*)s->data;
-
- for(int i=0;i<s->length_bytes;i++) {
-
- dst[i]=src[i];
- }
-
- buffer_w = PoolVector<uint8_t>::Write(); //unlock
-
- return ret_buffer;
-}
-
-void *SampleManagerMallocSW::sample_get_data_ptr(RID p_sample) const {
-
- const Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND_V(!s,NULL);
-
- return s->data;
-
-}
-
-void SampleManagerMallocSW::sample_set_mix_rate(RID p_sample,int p_rate) {
-
- ERR_FAIL_COND(p_rate<1);
-
- Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND(!s);
-
- s->mix_rate=p_rate;
-
-
-}
-int SampleManagerMallocSW::sample_get_mix_rate(RID p_sample) const {
-
- const Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND_V(!s,-1);
-
- return s->mix_rate;
-
-}
-void SampleManagerMallocSW::sample_set_loop_format(RID p_sample,AS::SampleLoopFormat p_format) {
-
- Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND(!s);
-
- s->loop_format=p_format;
-
-}
-AS::SampleLoopFormat SampleManagerMallocSW::sample_get_loop_format(RID p_sample) const {
-
- const Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND_V(!s,AS::SAMPLE_LOOP_NONE);
-
- return s->loop_format;
-}
-
-void SampleManagerMallocSW::sample_set_loop_begin(RID p_sample,int p_pos) {
-
- Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND(!s);
- ERR_FAIL_INDEX(p_pos,s->length);
-
- s->loop_begin=p_pos;
-}
-int SampleManagerMallocSW::sample_get_loop_begin(RID p_sample) const {
-
- const Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND_V(!s,-1);
-
- return s->loop_begin;
-}
-
-void SampleManagerMallocSW::sample_set_loop_end(RID p_sample,int p_pos) {
-
- Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND(!s);
- if (p_pos>s->length)
- p_pos=s->length;
- s->loop_end=p_pos;
-
-}
-int SampleManagerMallocSW::sample_get_loop_end(RID p_sample) const {
-
- const Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND_V(!s,-1);
-
- return s->loop_end;
-}
-
-bool SampleManagerMallocSW::is_sample(RID p_sample) const {
-
- return sample_owner.owns(p_sample);
-
-}
-void SampleManagerMallocSW::free(RID p_sample) {
-
- Sample *s = sample_owner.get(p_sample);
- ERR_FAIL_COND(!s);
- AudioServer::get_singleton()->lock();
- sample_owner.free(p_sample);
- AudioServer::get_singleton()->unlock();
-
- memfree(s->data);
- memdelete(s);
-
-}
-
-SampleManagerMallocSW::SampleManagerMallocSW() {
-
-
-}
-
-SampleManagerMallocSW::~SampleManagerMallocSW() {
-
- // check for sample leakage
- List<RID> owned_list;
- sample_owner.get_owned_list(&owned_list);
-
- while(owned_list.size()) {
-
- Sample *s = sample_owner.get(owned_list.front()->get());
- String err="Leaked sample of size: "+itos(s->length_bytes)+" description: "+s->description;
- ERR_PRINT(err.utf8().get_data());
- free(owned_list.front()->get());
- owned_list.pop_front();
- }
-
-}
diff --git a/servers/audio/sample_manager_sw.h b/servers/audio/sample_manager_sw.h
deleted file mode 100644
index 93cad96f1a..0000000000
--- a/servers/audio/sample_manager_sw.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*************************************************************************/
-/* sample_manager_sw.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef SAMPLE_MANAGER_SW_H
-#define SAMPLE_MANAGER_SW_H
-
-#include "servers/audio_server.h"
-
-class SampleManagerSW {
-public:
-
- /* SAMPLE API */
-
- virtual RID sample_create(AS::SampleFormat p_format, bool p_stereo, int p_length)=0;
-
- virtual void sample_set_description(RID p_sample, const String& p_description)=0;
- virtual String sample_get_description(RID p_sample) const=0;
-
- virtual AS::SampleFormat sample_get_format(RID p_sample) const=0;
- virtual bool sample_is_stereo(RID p_sample) const=0;
- virtual int sample_get_length(RID p_sample) const=0;
-
- virtual void sample_set_data(RID p_sample, const PoolVector<uint8_t>& p_buffer)=0;
- virtual const PoolVector<uint8_t> sample_get_data(RID p_sample) const=0;
-
- virtual void *sample_get_data_ptr(RID p_sample) const=0;
-
- virtual void sample_set_mix_rate(RID p_sample,int p_rate)=0;
- virtual int sample_get_mix_rate(RID p_sample) const=0;
-
- virtual void sample_set_loop_format(RID p_sample,AS::SampleLoopFormat p_format)=0;
- virtual AS::SampleLoopFormat sample_get_loop_format(RID p_sample) const=0;
-
- virtual void sample_set_loop_begin(RID p_sample,int p_pos)=0;
- virtual int sample_get_loop_begin(RID p_sample) const=0;
-
- virtual void sample_set_loop_end(RID p_sample,int p_pos)=0;
- virtual int sample_get_loop_end(RID p_sample) const=0;
-
- virtual bool is_sample(RID) const=0;
- virtual void free(RID p_sample)=0;
-
-
-
- virtual ~SampleManagerSW();
-};
-
-
-class SampleManagerMallocSW : public SampleManagerSW {
-
-
- struct Sample : public RID_Data {
-
- void *data;
- int length;
- int length_bytes;
- AS::SampleFormat format;
- bool stereo;
- AS::SampleLoopFormat loop_format;
- int loop_begin;
- int loop_end;
- int mix_rate;
- String description;
- };
-
- mutable RID_Owner<Sample> sample_owner;
-public:
-
- /* SAMPLE API */
-
- virtual RID sample_create(AS::SampleFormat p_format, bool p_stereo, int p_length);
-
- virtual void sample_set_description(RID p_sample, const String& p_description);
- virtual String sample_get_description(RID p_sample) const;
-
- virtual AS::SampleFormat sample_get_format(RID p_sample) const;
- virtual bool sample_is_stereo(RID p_sample) const;
- virtual int sample_get_length(RID p_sample) const;
-
- virtual void sample_set_data(RID p_sample, const PoolVector<uint8_t>& p_buffer);
- virtual const PoolVector<uint8_t> sample_get_data(RID p_sample) const;
-
- virtual void *sample_get_data_ptr(RID p_sample) const;
-
- virtual void sample_set_mix_rate(RID p_sample,int p_rate);
- virtual int sample_get_mix_rate(RID p_sample) const;
-
- virtual void sample_set_loop_format(RID p_sample,AS::SampleLoopFormat p_format);
- virtual AS::SampleLoopFormat sample_get_loop_format(RID p_sample) const;
-
- virtual void sample_set_loop_begin(RID p_sample,int p_pos);
- virtual int sample_get_loop_begin(RID p_sample) const;
-
- virtual void sample_set_loop_end(RID p_sample,int p_pos);
- virtual int sample_get_loop_end(RID p_sample) const;
-
- virtual bool is_sample(RID) const;
- virtual void free(RID p_sample);
-
- SampleManagerMallocSW();
- virtual ~SampleManagerMallocSW();
-};
-
-#endif // SAMPLE_MANAGER_SW_H
diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp
index 5037b19924..9b938a7f86 100644
--- a/servers/audio_server.cpp
+++ b/servers/audio_server.cpp
@@ -28,171 +28,265 @@
/*************************************************************************/
#include "audio_server.h"
#include "globals.h"
+#include "os/os.h"
+AudioDriver *AudioDriver::singleton=NULL;
+AudioDriver *AudioDriver::get_singleton() {
-void AudioMixer::audio_mixer_chunk_call(int p_frames) {
+ return singleton;
+}
+
+void AudioDriver::set_singleton() {
- AudioServer::get_singleton()->audio_mixer_chunk_callback(p_frames);
+ singleton=this;
}
-AudioMixer *AudioServer::EventStream::get_mixer() const {
+void AudioDriver::audio_server_process(int p_frames,int32_t *p_buffer,bool p_update_mix_time) {
- return AudioServer::get_singleton()->get_mixer();
+ AudioServer * audio_server = static_cast<AudioServer*>(AudioServer::get_singleton());
+ if (p_update_mix_time)
+ update_mix_time(p_frames);
+// audio_server->driver_process(p_frames,p_buffer);
}
-AudioServer *AudioServer::singleton=NULL;
+void AudioDriver::update_mix_time(int p_frames) {
-AudioServer *AudioServer::get_singleton() {
+ _mix_amount+=p_frames;
+ _last_mix_time=OS::get_singleton()->get_ticks_usec();
+}
- return singleton;
+double AudioDriver::get_mix_time() const {
+
+ double total = (OS::get_singleton()->get_ticks_usec() - _last_mix_time) / 1000000.0;
+ total+=_mix_amount/(double)get_mix_rate();
+ return total;
+
+}
+
+
+AudioDriver::AudioDriver() {
+
+ _last_mix_time=0;
+ _mix_amount=0;
+}
+
+
+AudioDriver *AudioDriverManager::drivers[MAX_DRIVERS];
+int AudioDriverManager::driver_count=0;
+
+
+
+void AudioDriverManager::add_driver(AudioDriver *p_driver) {
+
+ ERR_FAIL_COND(driver_count>=MAX_DRIVERS);
+ drivers[driver_count++]=p_driver;
+}
+
+int AudioDriverManager::get_driver_count() {
+
+ return driver_count;
+}
+AudioDriver *AudioDriverManager::get_driver(int p_driver) {
+
+ ERR_FAIL_INDEX_V(p_driver,driver_count,NULL);
+ return drivers[p_driver];
+}
+
+
+//////////////////////////////////////////////
+//////////////////////////////////////////////
+//////////////////////////////////////////////
+//////////////////////////////////////////////
+
+void AudioServer::set_bus_count(int p_count) {
+
+ ERR_FAIL_COND(p_count<1);
+ ERR_FAIL_INDEX(p_count,256);
+ lock();
+ buses.resize(p_count);
+ unlock();
+}
+
+int AudioServer::get_bus_count() const {
+
+ return buses.size();
}
-void AudioServer::sample_set_signed_data(RID p_sample, const PoolVector<float>& p_buffer) {
+void AudioServer::set_bus_mode(int p_bus,BusMode p_mode) {
- SampleFormat format = sample_get_format(p_sample);
+ ERR_FAIL_INDEX(p_bus,buses.size());
+
+}
+AudioServer::BusMode AudioServer::get_bus_mode(int p_bus) const {
+
+ ERR_FAIL_INDEX_V(p_bus,buses.size(),BUS_MODE_STEREO);
+
+ return buses[p_bus].mode;
+}
+
+void AudioServer::set_bus_name(int p_bus,const String& p_name) {
+
+ ERR_FAIL_INDEX(p_bus,buses.size());
+ buses[p_bus].name=p_name;
+
+}
+String AudioServer::get_bus_name(int p_bus) const {
+
+ ERR_FAIL_INDEX_V(p_bus,buses.size(),String());
+ return buses[p_bus].name;
+}
- ERR_EXPLAIN("IMA ADPCM is not supported.");
- ERR_FAIL_COND(format==SAMPLE_FORMAT_IMA_ADPCM);
+void AudioServer::set_bus_volume_db(int p_bus,float p_volume_db) {
- int len = p_buffer.size();
- ERR_FAIL_COND( len == 0 );
+ ERR_FAIL_INDEX(p_bus,buses.size());
+ buses[p_bus].volume_db=p_volume_db;
- PoolVector<uint8_t> data;
- PoolVector<uint8_t>::Write w;
- PoolVector<float>::Read r = p_buffer.read();
+}
+float AudioServer::get_bus_volume_db(int p_bus) const {
- switch(format) {
- case SAMPLE_FORMAT_PCM8: {
- data.resize(len);
- w=data.write();
+ ERR_FAIL_INDEX_V(p_bus,buses.size(),0);
+ return buses[p_bus].volume_db;
- int8_t *samples8 = (int8_t*)w.ptr();
+}
- for(int i=0;i<len;i++) {
+void AudioServer::add_bus_effect(int p_bus,const Ref<AudioEffect>& p_effect,int p_at_pos) {
- float sample = Math::floor( r[i] * (1<<8) );
- if (sample<-128)
- sample=-128;
- else if (sample>127)
- sample=127;
- samples8[i]=sample;
- }
- } break;
- case SAMPLE_FORMAT_PCM16: {
- data.resize(len*2);
- w=data.write();
+ ERR_FAIL_COND(p_effect.is_null());
+ ERR_FAIL_INDEX(p_bus,buses.size());
- int16_t *samples16 = (int16_t*)w.ptr();
+ lock();
- for(int i=0;i<len;i++) {
+ Bus::Effect fx;
+ fx.effect=p_effect;
+ //fx.instance=p_effect->instance();
+ fx.enabled=true;
- float sample = Math::floor( r[i] * (1<<16) );
- if (sample<-32768)
- sample=-32768;
- else if (sample>32767)
- sample=32767;
- samples16[i]=sample;
- }
- } break;
+ if (p_at_pos>=buses[p_bus].effects.size() || p_at_pos<0) {
+ buses[p_bus].effects.push_back(fx);
+ } else {
+ buses[p_bus].effects.insert(p_at_pos,fx);
}
- w = PoolVector<uint8_t>::Write();
+ unlock();
+}
+
+
+void AudioServer::remove_bus_effect(int p_bus,int p_effect) {
+
+ ERR_FAIL_INDEX(p_bus,buses.size());
- sample_set_data(p_sample,data);
+ lock();
+ buses[p_bus].effects.remove(p_effect);
+ unlock();
}
-void AudioServer::_bind_methods() {
+int AudioServer::get_bus_effect_count(int p_bus) {
+
+ ERR_FAIL_INDEX_V(p_bus,buses.size(),0);
+
+ return buses[p_bus].effects.size();
+
+}
+
+Ref<AudioEffect> AudioServer::get_bus_effect(int p_bus,int p_effect) {
+
+ ERR_FAIL_INDEX_V(p_bus,buses.size(),Ref<AudioEffect>());
+ ERR_FAIL_INDEX_V(p_effect,buses[p_bus].effects.size(),Ref<AudioEffect>());
+
+ return buses[p_bus].effects[p_effect].effect;
+
+}
+
+void AudioServer::swap_bus_effects(int p_bus,int p_effect,int p_by_effect) {
+
+ ERR_FAIL_INDEX(p_bus,buses.size());
+ ERR_FAIL_INDEX(p_effect,buses[p_bus].effects.size());
+ ERR_FAIL_INDEX(p_by_effect,buses[p_bus].effects.size());
+
+ lock();
+ SWAP( buses[p_bus].effects[p_effect], buses[p_bus].effects[p_by_effect] );
+ unlock();
+}
+
+void AudioServer::set_bus_effect_enabled(int p_bus,int p_effect,bool p_enabled) {
+
+ ERR_FAIL_INDEX(p_bus,buses.size());
+ ERR_FAIL_INDEX(p_effect,buses[p_bus].effects.size());
+ buses[p_bus].effects[p_effect].enabled=p_enabled;
- ClassDB::bind_method(_MD("sample_create","format","stereo","length"), &AudioServer::sample_create );
- ClassDB::bind_method(_MD("sample_set_description","sample","description"), &AudioServer::sample_set_description );
- ClassDB::bind_method(_MD("sample_get_description","sample"), &AudioServer::sample_get_description );
+}
+bool AudioServer::is_bus_effect_enabled(int p_bus,int p_effect) const {
+
+ ERR_FAIL_INDEX_V(p_bus,buses.size(),false);
+ ERR_FAIL_INDEX_V(p_effect,buses[p_bus].effects.size(),false);
+ return buses[p_bus].effects[p_effect].enabled;
- ClassDB::bind_method(_MD("sample_get_format","sample"), &AudioServer::sample_get_format );
- ClassDB::bind_method(_MD("sample_is_stereo","sample"), &AudioServer::sample_is_stereo );
- ClassDB::bind_method(_MD("sample_get_length","sample"), &AudioServer::sample_get_length );
+}
- ClassDB::bind_method(_MD("sample_set_signed_data","sample","data"), &AudioServer::sample_set_signed_data );
- ClassDB::bind_method(_MD("sample_set_data","sample","data"), &AudioServer::sample_set_data );
- ClassDB::bind_method(_MD("sample_get_data","sample"), &AudioServer::sample_get_data );
+void AudioServer::init() {
- ClassDB::bind_method(_MD("sample_set_mix_rate","sample","mix_rate"), &AudioServer::sample_set_mix_rate );
- ClassDB::bind_method(_MD("sample_get_mix_rate","sample"), &AudioServer::sample_get_mix_rate );
+ set_bus_count(1);;
+ set_bus_name(0,"Master");
+}
+void AudioServer::finish() {
- ClassDB::bind_method(_MD("sample_set_loop_format","sample","loop_format"), &AudioServer::sample_set_loop_format );
- ClassDB::bind_method(_MD("sample_get_loop_format","sample"), &AudioServer::sample_get_loop_format );
+ buses.clear();
+}
+void AudioServer::update() {
- ClassDB::bind_method(_MD("sample_set_loop_begin","sample","pos"), &AudioServer::sample_set_loop_begin );
- ClassDB::bind_method(_MD("sample_get_loop_begin","sample"), &AudioServer::sample_get_loop_begin );
+}
- ClassDB::bind_method(_MD("sample_set_loop_end","sample","pos"), &AudioServer::sample_set_loop_end );
- ClassDB::bind_method(_MD("sample_get_loop_end","sample"), &AudioServer::sample_get_loop_end );
+/* MISC config */
+void AudioServer::lock() {
+
+ AudioDriver::get_singleton()->lock();
+}
+void AudioServer::unlock() {
+
+ AudioDriver::get_singleton()->unlock();
+
+}
- ClassDB::bind_method(_MD("voice_create"), &AudioServer::voice_create );
- ClassDB::bind_method(_MD("voice_play","voice","sample"), &AudioServer::voice_play );
- ClassDB::bind_method(_MD("voice_set_volume","voice","volume"), &AudioServer::voice_set_volume );
- ClassDB::bind_method(_MD("voice_set_pan","voice","pan","depth","height"), &AudioServer::voice_set_pan,DEFVAL(0),DEFVAL(0) );
- ClassDB::bind_method(_MD("voice_set_filter","voice","type","cutoff","resonance","gain"), &AudioServer::voice_set_filter,DEFVAL(0) );
- ClassDB::bind_method(_MD("voice_set_chorus","voice","chorus"), &AudioServer::voice_set_chorus );
- ClassDB::bind_method(_MD("voice_set_reverb","voice","room","reverb"), &AudioServer::voice_set_reverb );
- ClassDB::bind_method(_MD("voice_set_mix_rate","voice","rate"), &AudioServer::voice_set_mix_rate );
- ClassDB::bind_method(_MD("voice_set_positional","voice","enabled"), &AudioServer::voice_set_positional );
+AudioServer::SpeakerMode AudioServer::get_speaker_mode() const {
+ return (AudioServer::SpeakerMode)AudioDriver::get_singleton()->get_speaker_mode();
+}
+float AudioServer::get_mix_rate() const {
- ClassDB::bind_method(_MD("voice_get_volume","voice"), &AudioServer::voice_get_volume );
- ClassDB::bind_method(_MD("voice_get_pan","voice"), &AudioServer::voice_get_pan );
- ClassDB::bind_method(_MD("voice_get_pan_height","voice"), &AudioServer::voice_get_pan_height );
- ClassDB::bind_method(_MD("voice_get_pan_depth","voice"), &AudioServer::voice_get_pan_depth );
- ClassDB::bind_method(_MD("voice_get_filter_type","voice"), &AudioServer::voice_get_filter_type );
- ClassDB::bind_method(_MD("voice_get_filter_cutoff","voice"), &AudioServer::voice_get_filter_cutoff );
- ClassDB::bind_method(_MD("voice_get_filter_resonance","voice"), &AudioServer::voice_get_filter_resonance );
- ClassDB::bind_method(_MD("voice_get_chorus","voice"), &AudioServer::voice_get_chorus );
- ClassDB::bind_method(_MD("voice_get_reverb_type","voice"), &AudioServer::voice_get_reverb_type );
- ClassDB::bind_method(_MD("voice_get_reverb","voice"), &AudioServer::voice_get_reverb );
- ClassDB::bind_method(_MD("voice_get_mix_rate","voice"), &AudioServer::voice_get_mix_rate );
- ClassDB::bind_method(_MD("voice_is_positional","voice"), &AudioServer::voice_is_positional );
+ return AudioDriver::get_singleton()->get_mix_rate();
+}
- ClassDB::bind_method(_MD("voice_stop","voice"), &AudioServer::voice_stop );
+float AudioServer::read_output_peak_db() const {
- ClassDB::bind_method(_MD("free_rid","rid"), &AudioServer::free );
+ return 0;
+}
- ClassDB::bind_method(_MD("set_stream_global_volume_scale","scale"), &AudioServer::set_stream_global_volume_scale );
- ClassDB::bind_method(_MD("get_stream_global_volume_scale"), &AudioServer::get_stream_global_volume_scale );
+AudioServer *AudioServer::get_singleton() {
- ClassDB::bind_method(_MD("set_fx_global_volume_scale","scale"), &AudioServer::set_fx_global_volume_scale );
- ClassDB::bind_method(_MD("get_fx_global_volume_scale"), &AudioServer::get_fx_global_volume_scale );
+ return singleton;
+}
- ClassDB::bind_method(_MD("set_event_voice_global_volume_scale","scale"), &AudioServer::set_event_voice_global_volume_scale );
- ClassDB::bind_method(_MD("get_event_voice_global_volume_scale"), &AudioServer::get_event_voice_global_volume_scale );
+double AudioServer::get_mix_time() const {
- BIND_CONSTANT( SAMPLE_FORMAT_PCM8 );
- BIND_CONSTANT( SAMPLE_FORMAT_PCM16 );
- BIND_CONSTANT( SAMPLE_FORMAT_IMA_ADPCM );
+ return 0;
+}
+double AudioServer::get_output_delay() const {
- BIND_CONSTANT( SAMPLE_LOOP_NONE );
- BIND_CONSTANT( SAMPLE_LOOP_FORWARD );
- BIND_CONSTANT( SAMPLE_LOOP_PING_PONG );
+ return 0;
+}
- BIND_CONSTANT( FILTER_NONE );
- BIND_CONSTANT( FILTER_LOWPASS );
- BIND_CONSTANT( FILTER_BANDPASS );
- BIND_CONSTANT( FILTER_HIPASS );
- BIND_CONSTANT( FILTER_NOTCH );
- BIND_CONSTANT( FILTER_BANDLIMIT ); ///< cutoff is LP resonace is HP
+AudioServer* AudioServer::singleton=NULL;
- BIND_CONSTANT( REVERB_SMALL );
- BIND_CONSTANT( REVERB_MEDIUM );
- BIND_CONSTANT( REVERB_LARGE );
- BIND_CONSTANT( REVERB_HALL );
- GLOBAL_DEF("audio/stream_buffering_ms",500);
- GLOBAL_DEF("audio/video_delay_compensation_ms",300);
+void AudioServer::_bind_methods() {
}
+
AudioServer::AudioServer() {
singleton=this;
@@ -202,3 +296,4 @@ AudioServer::~AudioServer() {
}
+
diff --git a/servers/audio_server.h b/servers/audio_server.h
index 1482b40d4c..77aca39760 100644
--- a/servers/audio_server.h
+++ b/servers/audio_server.h
@@ -31,261 +31,171 @@
#include "variant.h"
#include "object.h"
+#include "audio_frame.h"
+#include "servers/audio/audio_effect.h"
-class AudioMixer {
-protected:
- void audio_mixer_chunk_call(int p_frames);
-public:
+class AudioDriver {
- enum {
- INVALID_CHANNEL=0xFFFFFFFF
- };
+ static AudioDriver *singleton;
+ uint64_t _last_mix_time;
+ uint64_t _mix_amount;
+
- typedef uint32_t ChannelID;
+protected:
- /* CHANNEL API */
+ void audio_server_process(int p_frames,int32_t *p_buffer,bool p_update_mix_time=true);
+ void update_mix_time(int p_frames);
- enum FilterType {
- FILTER_NONE,
- FILTER_LOWPASS,
- FILTER_BANDPASS,
- FILTER_HIPASS,
- FILTER_NOTCH,
- FILTER_PEAK,
- FILTER_BANDLIMIT, ///< cutoff is LP resonace is HP
- FILTER_LOW_SHELF,
- FILTER_HIGH_SHELF
+public:
- };
- enum ReverbRoomType {
+ double get_mix_time() const; //useful for video -> audio sync
- REVERB_SMALL,
- REVERB_MEDIUM,
- REVERB_LARGE,
- REVERB_HALL,
- MAX_REVERBS
+ enum SpeakerMode {
+ SPEAKER_MODE_STEREO,
+ SPEAKER_SURROUND_51,
+ SPEAKER_SURROUND_71,
};
- virtual ChannelID channel_alloc(RID p_sample)=0;
+ static AudioDriver *get_singleton();
+ void set_singleton();
- virtual void channel_set_volume(ChannelID p_channel, float p_gain)=0;
- virtual void channel_set_pan(ChannelID p_channel, float p_pan, float p_depth=0,float height=0)=0; //pan and depth go from -1 to 1
- virtual void channel_set_filter(ChannelID p_channel, FilterType p_type, float p_cutoff, float p_resonance, float p_gain=1.0)=0;
- virtual void channel_set_chorus(ChannelID p_channel, float p_chorus )=0;
- virtual void channel_set_reverb(ChannelID p_channel, ReverbRoomType p_room_type, float p_reverb)=0;
- virtual void channel_set_mix_rate(ChannelID p_channel, int p_mix_rate)=0;
- virtual void channel_set_positional(ChannelID p_channel, bool p_positional)=0;
+ virtual const char* get_name() const=0;
- virtual float channel_get_volume(ChannelID p_channel) const=0;
- virtual float channel_get_pan(ChannelID p_channel) const=0; //pan and depth go from -1 to 1
- virtual float channel_get_pan_depth(ChannelID p_channel) const=0; //pan and depth go from -1 to 1
- virtual float channel_get_pan_height(ChannelID p_channel) const=0; //pan and depth go from -1 to 1
- virtual FilterType channel_get_filter_type(ChannelID p_channel) const=0;
- virtual float channel_get_filter_cutoff(ChannelID p_channel) const=0;
- virtual float channel_get_filter_resonance(ChannelID p_channel) const=0;
- virtual float channel_get_filter_gain(ChannelID p_channel) const=0;
- virtual float channel_get_chorus(ChannelID p_channel) const=0;
- virtual ReverbRoomType channel_get_reverb_type(ChannelID p_channel) const=0;
- virtual float channel_get_reverb(ChannelID p_channel) const=0;
-
- virtual int channel_get_mix_rate(ChannelID p_channel) const=0;
- virtual bool channel_is_positional(ChannelID p_channel) const=0;
- virtual bool channel_is_valid(ChannelID p_channel) const=0;
+ virtual Error init()=0;
+ virtual void start()=0;
+ virtual int get_mix_rate() const =0;
+ virtual SpeakerMode get_speaker_mode() const=0;
+ virtual void lock()=0;
+ virtual void unlock()=0;
+ virtual void finish()=0;
+ virtual float get_latency() { return 0; }
- virtual void channel_free(ChannelID p_channel)=0;
- virtual void set_mixer_volume(float p_volume)=0;
- virtual ~AudioMixer() {}
+ AudioDriver();
+ virtual ~AudioDriver() {}
};
-class AudioServer : public Object {
- GDCLASS( AudioServer, Object );
+class AudioDriverManager {
- static AudioServer *singleton;
-protected:
-friend class AudioStream;
-friend class EventStream;
-friend class AudioMixer;
+ enum {
- virtual AudioMixer *get_mixer()=0;
- virtual void audio_mixer_chunk_callback(int p_frames)=0;
+ MAX_DRIVERS=10
+ };
- static void _bind_methods();
+ static AudioDriver *drivers[MAX_DRIVERS];
+ static int driver_count;
public:
-
- class EventStream {
- protected:
- AudioMixer *get_mixer() const;
- public:
- virtual void update(uint64_t p_usec)=0;
-
- virtual ~EventStream() {}
- };
-
- class AudioStream {
- public:
- virtual int get_channel_count() const=0;
- virtual void set_mix_rate(int p_rate)=0; //notify the stream of the mix rate
- virtual bool mix(int32_t *p_buffer,int p_frames)=0;
- virtual void update()=0;
- virtual bool can_update_mt() const { return true; }
- virtual ~AudioStream() {}
- };
+ static void add_driver(AudioDriver *p_driver);
+ static int get_driver_count();
+ static AudioDriver *get_driver(int p_driver);
+};
- enum SampleFormat {
+class AudioServer : public Object {
- SAMPLE_FORMAT_PCM8,
- SAMPLE_FORMAT_PCM16,
- SAMPLE_FORMAT_IMA_ADPCM
+ GDCLASS( AudioServer, Object )
+public:
+ enum BusMode {
+ BUS_MODE_STEREO,
+ BUS_MODE_SURROUND
};
- enum SampleLoopFormat {
- SAMPLE_LOOP_NONE,
- SAMPLE_LOOP_FORWARD,
- SAMPLE_LOOP_PING_PONG // not supported in every platform
-
+ //re-expose this her, as AudioDriver is not exposed to script
+ enum SpeakerMode {
+ SPEAKER_MODE_STEREO,
+ SPEAKER_SURROUND_51,
+ SPEAKER_SURROUND_71,
};
+private:
+ uint32_t buffer_size;
- /* SAMPLE API */
-
- virtual RID sample_create(SampleFormat p_format, bool p_stereo, int p_length)=0;
-
- virtual void sample_set_description(RID p_sample, const String& p_description)=0;
- virtual String sample_get_description(RID p_sample) const=0;
-
- virtual SampleFormat sample_get_format(RID p_sample) const=0;
- virtual bool sample_is_stereo(RID p_sample) const=0;
- virtual int sample_get_length(RID p_sample) const=0;
- virtual const void* sample_get_data_ptr(RID p_sample) const=0;
-
- virtual void sample_set_signed_data(RID p_sample, const PoolVector<float>& p_buffer);
- virtual void sample_set_data(RID p_sample, const PoolVector<uint8_t>& p_buffer)=0;
- virtual PoolVector<uint8_t> sample_get_data(RID p_sample) const=0;
+ struct Bus {
- virtual void sample_set_mix_rate(RID p_sample,int p_rate)=0;
- virtual int sample_get_mix_rate(RID p_sample) const=0;
+ String name;
+ BusMode mode;
+ Vector<AudioFrame> buffer;
- virtual void sample_set_loop_format(RID p_sample,SampleLoopFormat p_format)=0;
- virtual SampleLoopFormat sample_get_loop_format(RID p_sample) const=0;
+ struct Effect {
+ Ref<AudioEffect> effect;
+ Ref<AudioEffectInstance> instance;
+ bool enabled;
+ };
- virtual void sample_set_loop_begin(RID p_sample,int p_pos)=0;
- virtual int sample_get_loop_begin(RID p_sample) const=0;
+ Vector<Effect> effects;
- virtual void sample_set_loop_end(RID p_sample,int p_pos)=0;
- virtual int sample_get_loop_end(RID p_sample) const=0;
-
-
- /* VOICE API */
-
- enum FilterType {
- FILTER_NONE,
- FILTER_LOWPASS,
- FILTER_BANDPASS,
- FILTER_HIPASS,
- FILTER_NOTCH,
- FILTER_PEAK,
- FILTER_BANDLIMIT, ///< cutoff is LP resonace is HP
- FILTER_LOW_SHELF,
- FILTER_HIGH_SHELF
+ float volume_db;
};
- enum ReverbRoomType {
- REVERB_SMALL,
- REVERB_MEDIUM,
- REVERB_LARGE,
- REVERB_HALL
- };
+ Vector<Bus> buses;
- virtual RID voice_create()=0;
- virtual void voice_play(RID p_voice, RID p_sample)=0;
+ static void _bind_methods();
- virtual void voice_set_volume(RID p_voice, float p_volume)=0;
- virtual void voice_set_pan(RID p_voice, float p_pan, float p_depth=0,float height=0)=0; //pan and depth go from -1 to 1
- virtual void voice_set_filter(RID p_voice, FilterType p_type, float p_cutoff, float p_resonance, float p_gain=0)=0;
- virtual void voice_set_chorus(RID p_voice, float p_chorus )=0;
- virtual void voice_set_reverb(RID p_voice, ReverbRoomType p_room_type, float p_reverb)=0;
- virtual void voice_set_mix_rate(RID p_voice, int p_mix_rate)=0;
- virtual void voice_set_positional(RID p_voice, bool p_positional)=0;
+ static AudioServer* singleton;
+public:
- virtual float voice_get_volume(RID p_voice) const=0;
- virtual float voice_get_pan(RID p_voice) const=0; //pan and depth go from -1 to 1
- virtual float voice_get_pan_depth(RID p_voice) const=0; //pan and depth go from -1 to 1
- virtual float voice_get_pan_height(RID p_voice) const=0; //pan and depth go from -1 to 1
- virtual FilterType voice_get_filter_type(RID p_voice) const=0;
- virtual float voice_get_filter_cutoff(RID p_voice) const=0;
- virtual float voice_get_filter_resonance(RID p_voice) const=0;
- virtual float voice_get_chorus(RID p_voice) const=0;
- virtual ReverbRoomType voice_get_reverb_type(RID p_voice) const=0;
- virtual float voice_get_reverb(RID p_voice) const=0;
- virtual int voice_get_mix_rate(RID p_voice) const=0;
- virtual bool voice_is_positional(RID p_voice) const=0;
+ void set_bus_count(int p_count);
+ int get_bus_count() const;
- virtual void voice_stop(RID p_voice)=0;
- virtual bool voice_is_active(RID p_voice) const=0;
+ void set_bus_mode(int p_bus,BusMode p_mode);
+ BusMode get_bus_mode(int p_bus) const;
- /* STREAM API */
+ void set_bus_name(int p_bus,const String& p_name);
+ String get_bus_name(int p_bus) const;
- virtual RID audio_stream_create(AudioStream *p_stream)=0;
- virtual RID event_stream_create(EventStream *p_stream)=0;
+ void set_bus_volume_db(int p_bus,float p_volume_db);
+ float get_bus_volume_db(int p_bus) const;
- virtual void stream_set_active(RID p_stream, bool p_active)=0;
- virtual bool stream_is_active(RID p_stream) const=0;
+ void add_bus_effect(int p_bus,const Ref<AudioEffect>& p_effect,int p_at_pos=-1);
+ void remove_bus_effect(int p_bus,int p_effect);
- virtual void stream_set_volume_scale(RID p_stream, float p_scale)=0;
- virtual float stream_set_volume_scale(RID p_stream) const=0;
+ int get_bus_effect_count(int p_bus);
+ Ref<AudioEffect> get_bus_effect(int p_bus,int p_effect);
- /* Audio Physics API */
+ void swap_bus_effects(int p_bus,int p_effect,int p_by_effect);
- virtual void free(RID p_id)=0;
+ void set_bus_effect_enabled(int p_bus,int p_effect,bool p_enabled);
+ bool is_bus_effect_enabled(int p_bus,int p_effect) const;
- virtual void init()=0;
- virtual void finish()=0;
- virtual void update()=0;
+ virtual void init();
+ virtual void finish();
+ virtual void update();
/* MISC config */
- virtual void lock()=0;
- virtual void unlock()=0;
- virtual int get_default_channel_count() const=0;
- virtual int get_default_mix_rate() const=0;
+ virtual void lock();
+ virtual void unlock();
- virtual void set_stream_global_volume_scale(float p_volume)=0;
- virtual void set_fx_global_volume_scale(float p_volume)=0;
- virtual void set_event_voice_global_volume_scale(float p_volume)=0;
- virtual float get_stream_global_volume_scale() const=0;
- virtual float get_fx_global_volume_scale() const=0;
- virtual float get_event_voice_global_volume_scale() const=0;
+ virtual SpeakerMode get_speaker_mode() const;
+ virtual float get_mix_rate() const;
- virtual uint32_t read_output_peak() const=0;
+ virtual float read_output_peak_db() const;
static AudioServer *get_singleton();
- virtual double get_mix_time() const=0; //useful for video -> audio sync
- virtual double get_output_delay() const=0;
+ virtual double get_mix_time() const; //useful for video -> audio sync
+ virtual double get_output_delay() const;
AudioServer();
virtual ~AudioServer();
};
-VARIANT_ENUM_CAST( AudioServer::SampleFormat );
-VARIANT_ENUM_CAST( AudioServer::SampleLoopFormat );
-VARIANT_ENUM_CAST( AudioServer::FilterType );
-VARIANT_ENUM_CAST( AudioServer::ReverbRoomType );
+VARIANT_ENUM_CAST( AudioServer::BusMode )
+VARIANT_ENUM_CAST( AudioServer::SpeakerMode )
typedef AudioServer AS;
+
#endif // AUDIO_SERVER_H
diff --git a/servers/physics/area_sw.cpp b/servers/physics/area_sw.cpp
index 84389c9b78..8aed07d5e5 100644
--- a/servers/physics/area_sw.cpp
+++ b/servers/physics/area_sw.cpp
@@ -126,14 +126,14 @@ void AreaSW::set_space_override_mode(PhysicsServer::AreaSpaceOverrideMode p_mode
void AreaSW::set_param(PhysicsServer::AreaParameter p_param, const Variant& p_value) {
switch(p_param) {
- case PhysicsServer::AREA_PARAM_GRAVITY: gravity=p_value; ; break;
- case PhysicsServer::AREA_PARAM_GRAVITY_VECTOR: gravity_vector=p_value; ; break;
- case PhysicsServer::AREA_PARAM_GRAVITY_IS_POINT: gravity_is_point=p_value; ; break;
- case PhysicsServer::AREA_PARAM_GRAVITY_DISTANCE_SCALE: gravity_distance_scale=p_value; ; break;
- case PhysicsServer::AREA_PARAM_GRAVITY_POINT_ATTENUATION: point_attenuation=p_value; ; break;
- case PhysicsServer::AREA_PARAM_LINEAR_DAMP: linear_damp=p_value; ; break;
- case PhysicsServer::AREA_PARAM_ANGULAR_DAMP: angular_damp=p_value; ; break;
- case PhysicsServer::AREA_PARAM_PRIORITY: priority=p_value; ; break;
+ case PhysicsServer::AREA_PARAM_GRAVITY: gravity=p_value; break;
+ case PhysicsServer::AREA_PARAM_GRAVITY_VECTOR: gravity_vector=p_value; break;
+ case PhysicsServer::AREA_PARAM_GRAVITY_IS_POINT: gravity_is_point=p_value; break;
+ case PhysicsServer::AREA_PARAM_GRAVITY_DISTANCE_SCALE: gravity_distance_scale=p_value; break;
+ case PhysicsServer::AREA_PARAM_GRAVITY_POINT_ATTENUATION: point_attenuation=p_value; break;
+ case PhysicsServer::AREA_PARAM_LINEAR_DAMP: linear_damp=p_value; break;
+ case PhysicsServer::AREA_PARAM_ANGULAR_DAMP: angular_damp=p_value; break;
+ case PhysicsServer::AREA_PARAM_PRIORITY: priority=p_value; break;
}
diff --git a/servers/physics/body_sw.cpp b/servers/physics/body_sw.cpp
index 81604dd5e1..a67dda3a01 100644
--- a/servers/physics/body_sw.cpp
+++ b/servers/physics/body_sw.cpp
@@ -621,7 +621,7 @@ void BodySW::integrate_velocities(real_t p_step) {
if (ang_vel!=0.0) {
Vector3 ang_vel_axis = total_angular_velocity / ang_vel;
- Basis rot( ang_vel_axis, -ang_vel*p_step );
+ Basis rot( ang_vel_axis, ang_vel*p_step );
Basis identity3(1, 0, 0, 0, 1, 0, 0, 0, 1);
transform.origin += ((identity3 - rot) * transform.basis).xform(center_of_mass_local);
transform.basis = rot * transform.basis;
diff --git a/servers/physics/broad_phase_sw.h b/servers/physics/broad_phase_sw.h
index 2cc2d7d45e..20b3efc7fb 100644
--- a/servers/physics/broad_phase_sw.h
+++ b/servers/physics/broad_phase_sw.h
@@ -30,7 +30,7 @@
#define BROAD_PHASE_SW_H
#include "math_funcs.h"
-#include "aabb.h"
+#include "rect3.h"
class CollisionObjectSW;
diff --git a/servers/physics/collision_solver_sat.cpp b/servers/physics/collision_solver_sat.cpp
index d02303e23d..d41012caa4 100644
--- a/servers/physics/collision_solver_sat.cpp
+++ b/servers/physics/collision_solver_sat.cpp
@@ -639,7 +639,7 @@ static void _collision_sphere_convex_polygon(const ShapeSW *p_a,const Transform
Vector3 n1=v2-v1;
Vector3 n2=v2-v3;
- Vector3 axis = n1.cross(n2).cross(n1).normalized();;
+ Vector3 axis = n1.cross(n2).cross(n1).normalized();
if (!separator.test_axis( axis ))
return;
diff --git a/servers/physics/joints/hinge_joint_sw.cpp b/servers/physics/joints/hinge_joint_sw.cpp
index 277346fbbb..d50d5a1a73 100644
--- a/servers/physics/joints/hinge_joint_sw.cpp
+++ b/servers/physics/joints/hinge_joint_sw.cpp
@@ -371,7 +371,7 @@ void HingeJointSW::solve(float p_step) {
real_t desiredMotorVel = m_motorTargetVelocity;
real_t motor_relvel = desiredMotorVel - projRelVel;
- real_t unclippedMotorImpulse = m_kHinge * motor_relvel;;
+ real_t unclippedMotorImpulse = m_kHinge * motor_relvel;
//todo: should clip against accumulated impulse
real_t clippedMotorImpulse = unclippedMotorImpulse > m_maxMotorImpulse ? m_maxMotorImpulse : unclippedMotorImpulse;
clippedMotorImpulse = clippedMotorImpulse < -m_maxMotorImpulse ? -m_maxMotorImpulse : clippedMotorImpulse;
diff --git a/servers/physics/shape_sw.cpp b/servers/physics/shape_sw.cpp
index 9f8d1107f4..4114980b82 100644
--- a/servers/physics/shape_sw.cpp
+++ b/servers/physics/shape_sw.cpp
@@ -1620,7 +1620,7 @@ void HeightMapShapeSW::_setup(PoolVector<real_t> p_heights,int p_width,int p_dep
heights=p_heights;
width=p_width;
- depth=p_depth;;
+ depth=p_depth;
cell_size=p_cell_size;
PoolVector<real_t>::Read r = heights. read();
diff --git a/servers/physics_2d/area_2d_sw.cpp b/servers/physics_2d/area_2d_sw.cpp
index 8ccdd51067..2625502717 100644
--- a/servers/physics_2d/area_2d_sw.cpp
+++ b/servers/physics_2d/area_2d_sw.cpp
@@ -125,14 +125,14 @@ void Area2DSW::set_space_override_mode(Physics2DServer::AreaSpaceOverrideMode p_
void Area2DSW::set_param(Physics2DServer::AreaParameter p_param, const Variant& p_value) {
switch(p_param) {
- case Physics2DServer::AREA_PARAM_GRAVITY: gravity=p_value; ; break;
- case Physics2DServer::AREA_PARAM_GRAVITY_VECTOR: gravity_vector=p_value; ; break;
- case Physics2DServer::AREA_PARAM_GRAVITY_IS_POINT: gravity_is_point=p_value; ; break;
- case Physics2DServer::AREA_PARAM_GRAVITY_DISTANCE_SCALE: gravity_distance_scale=p_value; ; break;
- case Physics2DServer::AREA_PARAM_GRAVITY_POINT_ATTENUATION: point_attenuation=p_value; ; break;
- case Physics2DServer::AREA_PARAM_LINEAR_DAMP: linear_damp=p_value; ; break;
- case Physics2DServer::AREA_PARAM_ANGULAR_DAMP: angular_damp=p_value; ; break;
- case Physics2DServer::AREA_PARAM_PRIORITY: priority=p_value; ; break;
+ case Physics2DServer::AREA_PARAM_GRAVITY: gravity=p_value; break;
+ case Physics2DServer::AREA_PARAM_GRAVITY_VECTOR: gravity_vector=p_value; break;
+ case Physics2DServer::AREA_PARAM_GRAVITY_IS_POINT: gravity_is_point=p_value; break;
+ case Physics2DServer::AREA_PARAM_GRAVITY_DISTANCE_SCALE: gravity_distance_scale=p_value; break;
+ case Physics2DServer::AREA_PARAM_GRAVITY_POINT_ATTENUATION: point_attenuation=p_value; break;
+ case Physics2DServer::AREA_PARAM_LINEAR_DAMP: linear_damp=p_value; break;
+ case Physics2DServer::AREA_PARAM_ANGULAR_DAMP: angular_damp=p_value; break;
+ case Physics2DServer::AREA_PARAM_PRIORITY: priority=p_value; break;
}
diff --git a/servers/physics_2d/body_pair_2d_sw.cpp b/servers/physics_2d/body_pair_2d_sw.cpp
index 72ae221c39..e6b62ffa66 100644
--- a/servers/physics_2d/body_pair_2d_sw.cpp
+++ b/servers/physics_2d/body_pair_2d_sw.cpp
@@ -249,7 +249,7 @@ bool BodyPair2DSW::setup(float p_step) {
Transform2D xform_A = xform_Au * A->get_shape_transform(shape_A);
Transform2D xform_Bu = B->get_transform();
- xform_Bu.translate(-A->get_transform().get_origin());
+ xform_Bu.elements[2]-=A->get_transform().get_origin();
Transform2D xform_B = xform_Bu * B->get_shape_transform(shape_B);
Shape2DSW *shape_A_ptr=A->get_shape(shape_A);
diff --git a/servers/physics_2d/collision_solver_2d_sw.cpp b/servers/physics_2d/collision_solver_2d_sw.cpp
index 02d59b69f0..20a5934eb8 100644
--- a/servers/physics_2d/collision_solver_2d_sw.cpp
+++ b/servers/physics_2d/collision_solver_2d_sw.cpp
@@ -203,14 +203,14 @@ bool CollisionSolver2DSW::solve_concave(const Shape2DSW *p_shape_A,const Transfo
cinfo.aabb_tests=0;
Transform2D rel_transform = p_transform_A;
- rel_transform.translate(-p_transform_B.get_origin());
+ rel_transform.elements[2]-=p_transform_B.get_origin();
//quickly compute a local Rect2
Rect2 local_aabb;
for(int i=0;i<2;i++) {
- Vector2 axis( p_transform_B.get_axis(i) );
+ Vector2 axis( p_transform_B.elements[i] );
float axis_scale = 1.0/axis.length();
axis*=axis_scale;
diff --git a/servers/physics_2d/physics_2d_server_wrap_mt.cpp b/servers/physics_2d/physics_2d_server_wrap_mt.cpp
index 8730bb9ee8..027f318d2d 100644
--- a/servers/physics_2d/physics_2d_server_wrap_mt.cpp
+++ b/servers/physics_2d/physics_2d_server_wrap_mt.cpp
@@ -95,7 +95,7 @@ void Physics2DServerWrapMT::sync() {
else
step_sem->wait(); //must not wait if a step was not issued
}
- physics_2d_server->sync();;
+ physics_2d_server->sync();
}
void Physics2DServerWrapMT::flush_queries(){
@@ -105,7 +105,7 @@ void Physics2DServerWrapMT::flush_queries(){
void Physics2DServerWrapMT::end_sync() {
- physics_2d_server->end_sync();;
+ physics_2d_server->end_sync();
}
void Physics2DServerWrapMT::init() {
diff --git a/servers/physics_2d/shape_2d_sw.h b/servers/physics_2d/shape_2d_sw.h
index 9160d064ef..07a9d84ec8 100644
--- a/servers/physics_2d/shape_2d_sw.h
+++ b/servers/physics_2d/shape_2d_sw.h
@@ -150,7 +150,7 @@ _FORCE_INLINE_ void project_range_cast(const Vector2& p_cast, const Vector2& p_n
real_t mina,maxa;\
real_t minb,maxb;\
Transform2D ofsb=p_transform;\
- ofsb.translate(p_cast);\
+ ofsb.elements[2]+=p_cast;\
project_range(p_normal,p_transform,mina,maxa);\
project_range(p_normal,ofsb,minb,maxb); \
r_min=MIN(mina,minb);\
diff --git a/servers/physics_2d/space_2d_sw.cpp b/servers/physics_2d/space_2d_sw.cpp
index e95707f135..a48b6d3827 100644
--- a/servers/physics_2d/space_2d_sw.cpp
+++ b/servers/physics_2d/space_2d_sw.cpp
@@ -714,7 +714,7 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const Transform2D &p_from, co
break;
}
- body_transform.translate(recover_motion);
+ body_transform.elements[2]+=recover_motion;
body_aabb.pos+=recover_motion;
recover_attempts--;
@@ -863,7 +863,7 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const Transform2D &p_from, co
//it collided, let's get the rest info in unsafe advance
Transform2D ugt = body_transform;
- ugt.translate(p_motion*unsafe);
+ ugt.elements[2]+=p_motion*unsafe;
_RestCallbackData2D rcd;
rcd.best_len=0;
diff --git a/servers/physics_2d_server.cpp b/servers/physics_2d_server.cpp
index bd5a58e57b..39b790111b 100644
--- a/servers/physics_2d_server.cpp
+++ b/servers/physics_2d_server.cpp
@@ -179,7 +179,7 @@ int Physics2DShapeQueryParameters::get_object_type_mask() const{
}
void Physics2DShapeQueryParameters::set_exclude(const Vector<RID>& p_exclude) {
- exclude.clear();;
+ exclude.clear();
for(int i=0;i<p_exclude.size();i++)
exclude.insert(p_exclude[i]);
diff --git a/servers/physics_server.cpp b/servers/physics_server.cpp
index 93553efb27..ab13e2b3a5 100644
--- a/servers/physics_server.cpp
+++ b/servers/physics_server.cpp
@@ -178,7 +178,7 @@ int PhysicsShapeQueryParameters::get_object_type_mask() const{
}
void PhysicsShapeQueryParameters::set_exclude(const Vector<RID>& p_exclude) {
- exclude.clear();;
+ exclude.clear();
for(int i=0;i<p_exclude.size();i++)
exclude.insert(p_exclude[i]);
diff --git a/servers/register_server_types.cpp b/servers/register_server_types.cpp
index 9a98890a26..8b831f4ff6 100644
--- a/servers/register_server_types.cpp
+++ b/servers/register_server_types.cpp
@@ -33,10 +33,9 @@
#include "audio_server.h"
#include "physics_server.h"
#include "physics_2d_server.h"
-#include "spatial_sound_server.h"
-#include "spatial_sound_2d_server.h"
#include "script_debugger_remote.h"
#include "visual/shader_types.h"
+
static void _debugger_get_resource_usage(List<ScriptDebuggerRemote::ResourceUsage>* r_usage) {
List<VS::TextureInfo> tinfo;
@@ -65,8 +64,6 @@ void register_server_types() {
GlobalConfig::get_singleton()->add_singleton( GlobalConfig::Singleton("AudioServer",AudioServer::get_singleton()) );
GlobalConfig::get_singleton()->add_singleton( GlobalConfig::Singleton("PhysicsServer",PhysicsServer::get_singleton()) );
GlobalConfig::get_singleton()->add_singleton( GlobalConfig::Singleton("Physics2DServer",Physics2DServer::get_singleton()) );
- GlobalConfig::get_singleton()->add_singleton( GlobalConfig::Singleton("SpatialSoundServer",SpatialSoundServer::get_singleton()) );
- GlobalConfig::get_singleton()->add_singleton( GlobalConfig::Singleton("SpatialSound2DServer",SpatialSound2DServer::get_singleton()) );
shader_types = memnew( ShaderTypes );
diff --git a/servers/spatial_sound/SCsub b/servers/spatial_sound/SCsub
deleted file mode 100644
index ccc76e823f..0000000000
--- a/servers/spatial_sound/SCsub
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env python
-
-Import('env')
-
-env.add_source_files(env.servers_sources, "*.cpp")
-
-Export('env')
diff --git a/servers/spatial_sound/spatial_sound_server_sw.cpp b/servers/spatial_sound/spatial_sound_server_sw.cpp
deleted file mode 100644
index d550134d82..0000000000
--- a/servers/spatial_sound/spatial_sound_server_sw.cpp
+++ /dev/null
@@ -1,1071 +0,0 @@
-/*************************************************************************/
-/* spatial_sound_server_sw.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "spatial_sound_server_sw.h"
-#include "os/os.h"
-#include "servers/audio/audio_filter_sw.h"
-
-
-
-int SpatialSoundServerSW::InternalAudioStream::get_channel_count() const {
-
- return AudioServer::get_singleton()->get_default_channel_count();
-}
-
-void SpatialSoundServerSW::InternalAudioStream::set_mix_rate(int p_rate) {
-
-
-}
-
-void SpatialSoundServerSW::InternalAudioStream::update() {
-
- owner->_update_sources();
-}
-
-bool SpatialSoundServerSW::InternalAudioStream::mix(int32_t *p_buffer,int p_frames) {
-
- return owner->internal_buffer_mix(p_buffer,p_frames);
-}
-
-void SpatialSoundServerSW::_update_sources() {
-
- _THREAD_SAFE_METHOD_
- for (Set<Source*>::Element *E=streaming_sources.front();E;E=E->next()) {
-
- Source *s=E->get();
- ERR_CONTINUE(!s->stream);
- s->stream->update();
- }
-}
-
-
-SpatialSoundServerSW::Room::Room() {
-
- //params[ROOM_PARAM_SPEED_OF_SOUND]=343.0;
- params[ROOM_PARAM_SPEED_OF_SOUND_SCALE]=1;
- params[ROOM_PARAM_DOPPLER_FACTOR]=1.0;
- params[ROOM_PARAM_PITCH_SCALE]=1.0;
- params[ROOM_PARAM_VOLUME_SCALE_DB]=0;
- params[ROOM_PARAM_REVERB_SEND]=0;
- params[ROOM_PARAM_CHORUS_SEND]=0;
- params[ROOM_PARAM_ATTENUATION_SCALE]=1.0;
- params[ROOM_PARAM_ATTENUATION_HF_CUTOFF]=5000;
- params[ROOM_PARAM_ATTENUATION_HF_FLOOR_DB]=-24.0;
- params[ROOM_PARAM_ATTENUATION_HF_RATIO_EXP]=1.0;
- params[ROOM_PARAM_ATTENUATION_REVERB_SCALE]=0.0;
- override_other_sources=false;
- reverb=ROOM_REVERB_HALL;
- octree_id=0;
- level=-1;
-
-
-}
-
-
-SpatialSoundServerSW::Source::Source() {
-
- params[SOURCE_PARAM_VOLUME_DB]=0.0;
- params[SOURCE_PARAM_PITCH_SCALE]=1.0;
- params[SOURCE_PARAM_ATTENUATION_MIN_DISTANCE]=1;
- params[SOURCE_PARAM_ATTENUATION_MAX_DISTANCE]=100;
- params[SOURCE_PARAM_ATTENUATION_DISTANCE_EXP]=1.0; //linear (and not really good)
- params[SOURCE_PARAM_EMISSION_CONE_DEGREES]=180.0; //cone disabled
- params[SOURCE_PARAM_EMISSION_CONE_ATTENUATION_DB]=-6.0; //minus 6 db attenuation
- stream=NULL;
- voices.resize(1);
- last_voice=0;
-}
-
-SpatialSoundServerSW::Source::Voice::Voice() {
-
- active=false;
- restart=false;
- pitch_scale=1.0;
- volume_scale=0.0;
- voice_rid=AudioServer::get_singleton()->voice_create();
-
-}
-SpatialSoundServerSW::Source::Voice::~Voice() {
-
- AudioServer::get_singleton()->free(voice_rid);
-}
-
-
-SpatialSoundServerSW::Listener::Listener() {
-
- params[LISTENER_PARAM_VOLUME_SCALE_DB]=0.0;
- params[LISTENER_PARAM_PITCH_SCALE]=1.0;
- params[LISTENER_PARAM_ATTENUATION_SCALE]=1.0;
- params[LISTENER_PARAM_RECEPTION_CONE_DEGREES]=60.0;
- params[LISTENER_PARAM_RECEPTION_CONE_ATTENUATION_DB]=-6; // minus six decibels
-
-}
-
-/* SPACE */
-RID SpatialSoundServerSW::space_create() {
-
- Space* space = memnew( Space );
- RID space_rid = space_owner.make_rid(space);
- space->default_room=room_create();
- room_set_space(space->default_room,space_rid);
- return space_rid;
-}
-
-/* ROOM */
-
-RID SpatialSoundServerSW::room_create() {
-
- Room *room = memnew( Room );
- return room_owner.make_rid(room);
-}
-
-void SpatialSoundServerSW::room_set_space(RID p_room,RID p_space) {
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND(!room);
-
- if (room->space.is_valid()) {
-
- Space *space = space_owner.get(room->space);
- space->rooms.erase(p_room);
- space->octree.erase(room->octree_id);
- //room->octree_id=0;
- }
-
- room->space=RID();
-
- if (p_space.is_valid()) {
-
- Space *space = space_owner.get(p_space);
- ERR_FAIL_COND(!space);
- space->rooms.insert(p_room);
- room->octree_id=space->octree.create(room,Rect3());
- //set bounds
- Rect3 aabb = room->bounds.is_empty()?Rect3():room->bounds.get_aabb();
- space->octree.move(room->octree_id,room->transform.xform(aabb));
- room->space=p_space;
- }
-
-
-}
-
-RID SpatialSoundServerSW::room_get_space(RID p_room) const {
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND_V(!room,RID());
-
-
- return room->space;
-}
-
-
-
-void SpatialSoundServerSW::room_set_bounds(RID p_room, const BSP_Tree& p_bounds) {
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND(!room);
-
- room->bounds=p_bounds;
-
- if (!room->space.is_valid())
- return;
-
- Rect3 aabb = room->bounds.is_empty()?Rect3():room->bounds.get_aabb();
- Space* space = space_owner.get(room->space);
- ERR_FAIL_COND(!space);
-
- space->octree.move(room->octree_id,room->transform.xform(aabb));
-
-}
-BSP_Tree SpatialSoundServerSW::room_get_bounds(RID p_room) const {
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND_V(!room,BSP_Tree());
-
- return room->bounds;
-}
-
-void SpatialSoundServerSW::room_set_transform(RID p_room, const Transform& p_transform) {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND(!room);
- room->transform=p_transform;
- room->inverse_transform=p_transform.affine_inverse(); // needs to be done to unscale BSP properly
-
- if (!room->space.is_valid())
- return;
-
- if (!room->bounds.is_empty()) {
-
- Space* space = space_owner.get(room->space);
- ERR_FAIL_COND(!space);
-
- space->octree.move(room->octree_id,room->transform.xform(room->bounds.get_aabb()));
- }
-}
-
-Transform SpatialSoundServerSW::room_get_transform(RID p_room) const {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND_V(!room,Transform());
- return room->transform;
-}
-
-
-void SpatialSoundServerSW::room_set_param(RID p_room, RoomParam p_param, float p_value) {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- ERR_FAIL_INDEX(p_param,ROOM_PARAM_MAX);
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND(!room);
- room->params[p_param]=p_value;
-
-}
-float SpatialSoundServerSW::room_get_param(RID p_room, RoomParam p_param) const {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- ERR_FAIL_INDEX_V(p_param,ROOM_PARAM_MAX,0);
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND_V(!room,0);
- return room->params[p_param];
-}
-
-void SpatialSoundServerSW::room_set_level(RID p_room, int p_level) {
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND(!room);
- room->level =p_level;
-
-}
-
-int SpatialSoundServerSW::room_get_level(RID p_room) const {
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND_V(!room,0);
- return room->level;
-
-}
-
-
-void SpatialSoundServerSW::room_set_reverb(RID p_room, RoomReverb p_reverb) {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND(!room);
- room->reverb=p_reverb;
-
-}
-SpatialSoundServerSW::RoomReverb SpatialSoundServerSW::room_get_reverb(RID p_room) const {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND_V(!room,ROOM_REVERB_SMALL);
- return room->reverb;
-}
-
-//useful for underwater or rooms with very strange conditions
-void SpatialSoundServerSW::room_set_force_params_to_all_sources(RID p_room, bool p_force) {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND(!room);
- room->override_other_sources=p_force;
-
-}
-bool SpatialSoundServerSW::room_is_forcing_params_to_all_sources(RID p_room) const {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND_V(!room,false);
- return room->override_other_sources;
-}
-
-/* SOURCE */
-
-RID SpatialSoundServerSW::source_create(RID p_space) {
-
- Space *space = space_owner.get(p_space);
- ERR_FAIL_COND_V(!space,RID());
-
- Source *source = memnew( Source );
- source->space=p_space;
- RID source_rid = source_owner.make_rid(source);
- space->sources.insert(source_rid);
-
- return source_rid;
-}
-
-
-void SpatialSoundServerSW::source_set_polyphony(RID p_source,int p_voice_count) {
-
-
- ERR_FAIL_COND(p_voice_count<=0); // more than 32 is too much, change this if you really need more
- if (p_voice_count>32) {
-
- ERR_PRINT("Voices will be clipped to 32");
- p_voice_count=32;
- }
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND(!source);
-
- if (p_voice_count<source->voices.size()) {
-
- for(int i=p_voice_count;i<source->voices.size();i++) {
- active_voices.erase(ActiveVoice(source,i)); //erase from active voices
- }
- }
- source->voices.resize(p_voice_count);
-
-}
-
-int SpatialSoundServerSW::source_get_polyphony(RID p_source) const {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND_V(!source,-1);
- return source->voices.size();
-
-}
-
-void SpatialSoundServerSW::source_set_transform(RID p_source, const Transform& p_transform) {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND(!source);
- source->transform=p_transform;
- source->transform.orthonormalize();
-}
-Transform SpatialSoundServerSW::source_get_transform(RID p_source) const {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND_V(!source,Transform());
- return source->transform;
-}
-
-void SpatialSoundServerSW::source_set_param(RID p_source, SourceParam p_param, float p_value) {
-
- ERR_FAIL_INDEX(p_param,SOURCE_PARAM_MAX);
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND(!source);
- source->params[p_param]=p_value;
-
-}
-float SpatialSoundServerSW::source_get_param(RID p_source, SourceParam p_param) const {
- ERR_FAIL_INDEX_V(p_param,SOURCE_PARAM_MAX,0);
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND_V(!source,0);
- return source->params[p_param];
-
-
-}
-
-void SpatialSoundServerSW::source_set_audio_stream(RID p_source, AudioServer::AudioStream *p_stream) {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND(!source);
- AudioServer::get_singleton()->lock();
- source->stream=p_stream;
- _THREAD_SAFE_METHOD_
-
- if (!p_stream) {
- streaming_sources.erase(source);
- active_voices.erase(ActiveVoice(source,VOICE_IS_STREAM));
- } else {
- streaming_sources.insert(source);
- active_voices.insert(ActiveVoice(source,VOICE_IS_STREAM));
- zeromem(source->stream_data.filter_state,sizeof(Source::StreamData::FilterState)*4); //reset filter for safetyness
- p_stream->set_mix_rate(AudioServer::get_singleton()->get_default_mix_rate());
- }
-
- AudioServer::get_singleton()->unlock();
-
-} //null to unset
-
-SpatialSoundServer::SourceVoiceID SpatialSoundServerSW::source_play_sample(RID p_source, RID p_sample, int p_mix_rate, int p_voice) {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND_V(!source,SOURCE_INVALID_VOICE);
-
- int to_play=0;
-
- if (p_voice==SOURCE_NEXT_VOICE) {
- to_play=source->last_voice+1;
- if (to_play>=source->voices.size())
- to_play=0;
-
- } else
- to_play=p_voice;
-
- ERR_FAIL_INDEX_V(to_play,source->voices.size(),SOURCE_INVALID_VOICE);
-
- source->voices[to_play].restart=true;
- source->voices[to_play].sample_rid=p_sample;
- source->voices[to_play].sample_mix_rate=p_mix_rate;
- source->voices[to_play].pitch_scale=1;
- source->voices[to_play].volume_scale=0;
- source->last_voice=to_play;
- active_voices.insert(ActiveVoice(source,to_play));
- return to_play;
-}
-
-/* VOICES */
-void SpatialSoundServerSW::source_voice_set_pitch_scale(RID p_source, SourceVoiceID p_voice, float p_pitch_scale) {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND(!source);
- ERR_FAIL_INDEX(p_voice,source->voices.size());
- source->voices[p_voice].pitch_scale=p_pitch_scale;
-
-}
-void SpatialSoundServerSW::source_voice_set_volume_scale_db(RID p_source, SourceVoiceID p_voice, float p_db) {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND(!source);
- ERR_FAIL_INDEX(p_voice,source->voices.size());
- source->voices[p_voice].volume_scale=p_db;
-
-}
-
-bool SpatialSoundServerSW::source_is_voice_active(RID p_source, SourceVoiceID p_voice) const {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND_V(!source,false);
- ERR_FAIL_INDEX_V(p_voice,source->voices.size(),false);
- return source->voices[p_voice].active || source->voices[p_voice].restart;
-
-}
-void SpatialSoundServerSW::source_stop_voice(RID p_source, SourceVoiceID p_voice) {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND(!source);
- ERR_FAIL_INDEX(p_voice,source->voices.size());
- if (source->voices[p_voice].active) {
- AudioServer::get_singleton()->voice_stop(source->voices[p_voice].voice_rid);
- }
- source->voices[p_voice].active=false;
- source->voices[p_voice].restart=false;
- active_voices.erase(ActiveVoice(source,p_voice));
-}
-
-/* LISTENER */
-
-RID SpatialSoundServerSW::listener_create() {
-
- Listener *listener = memnew( Listener );
- RID listener_rid = listener_owner.make_rid(listener);
- return listener_rid;
-
-}
-
-void SpatialSoundServerSW::listener_set_space(RID p_listener,RID p_space) {
-
- Listener *listener = listener_owner.get(p_listener);
- ERR_FAIL_COND(!listener);
-
- if (listener->space.is_valid()) {
-
- Space *lspace = space_owner.get(listener->space);
- ERR_FAIL_COND(!lspace);
- lspace->listeners.erase(p_listener);
- }
-
- listener->space=RID();
-
- if (p_space.is_valid()) {
- Space *space = space_owner.get(p_space);
- ERR_FAIL_COND(!space);
-
- listener->space=p_space;
- space->listeners.insert(p_listener);
- }
-
-}
-
-void SpatialSoundServerSW::listener_set_transform(RID p_listener, const Transform& p_transform) {
-
- Listener *listener = listener_owner.get(p_listener);
- ERR_FAIL_COND(!listener);
- listener->transform=p_transform;
- listener->transform.orthonormalize(); //must be done..
-}
-Transform SpatialSoundServerSW::listener_get_transform(RID p_listener) const {
-
- Listener *listener = listener_owner.get(p_listener);
- ERR_FAIL_COND_V(!listener,Transform());
- return listener->transform;
-}
-
-void SpatialSoundServerSW::listener_set_param(RID p_listener, ListenerParam p_param, float p_value) {
-
- ERR_FAIL_INDEX(p_param,LISTENER_PARAM_MAX);
- Listener *listener = listener_owner.get(p_listener);
- ERR_FAIL_COND(!listener);
- listener->params[p_param]=p_value;
-}
-
-float SpatialSoundServerSW::listener_get_param(RID p_listener, ListenerParam p_param) const {
-
- ERR_FAIL_INDEX_V(p_param,LISTENER_PARAM_MAX,0);
- Listener *listener = listener_owner.get(p_listener);
- ERR_FAIL_COND_V(!listener,0);
- return listener->params[p_param];
-}
-
-
-/* MISC */
-
-void SpatialSoundServerSW::free(RID p_id) {
-
-
- if (space_owner.owns(p_id)) {
-
- Space *space = space_owner.get(p_id);
- free(space->default_room);
-
- while(space->listeners.size()) {
- listener_set_space(space->listeners.front()->get(),RID());
- }
- while(space->sources.size()) {
- free(space->sources.front()->get());
- }
- while(space->rooms.size()) {
- room_set_space(space->rooms.front()->get(),RID());
- }
- space_owner.free(p_id);
- memdelete(space);
-
- } else if (source_owner.owns(p_id)) {
-
- Source *source = source_owner.get(p_id);
- if (source->stream)
- source_set_audio_stream(p_id,NULL);
-
- Space *space = space_owner.get(source->space);
- ERR_FAIL_COND(!space);
- space->sources.erase(p_id);
- for(int i=0;i<source->voices.size();i++) {
- active_voices.erase(ActiveVoice(source,i));
- }
- source_owner.free(p_id);
- memdelete(source);
- } else if (listener_owner.owns(p_id)) {
-
- Listener *listener = listener_owner.get(p_id);
- if (listener->space.is_valid()) {
- Space *space = space_owner.get(listener->space);
- ERR_FAIL_COND(!space);
- space->listeners.erase(p_id);
- }
- listener_owner.free(p_id);
- memdelete(listener);
-
- } else if (room_owner.owns(p_id)) {
-
- Room *room = room_owner.get(p_id);
-
- if (room->space.is_valid()) {
- Space *space = space_owner.get(room->space);
- ERR_FAIL_COND(!space);
- space->octree.erase(room->octree_id);
- space->rooms.erase(p_id);
- }
- room_owner.free(p_id);
- memdelete(room);
- } else {
- ERR_PRINT("Attempt to free invalid ID") ;
- }
-
-}
-
-void SpatialSoundServerSW::_clean_up_owner(RID_OwnerBase *p_owner, const char *p_area) {
-
- List<RID> rids;
- p_owner->get_owned_list(&rids);
-
- for(List<RID>::Element *I=rids.front();I;I=I->next()) {
- if (OS::get_singleton()->is_stdout_verbose()) {
-
- print_line("Leaked RID ("+itos(I->get().get_id())+") of type "+String(p_area));
- }
- free(I->get());
- }
-}
-
-void SpatialSoundServerSW::init() {
-
- internal_buffer = memnew_arr(int32_t, INTERNAL_BUFFER_SIZE*INTERNAL_BUFFER_MAX_CHANNELS);
- internal_buffer_channels=AudioServer::get_singleton()->get_default_channel_count();
-
- internal_audio_stream = memnew( InternalAudioStream );
- internal_audio_stream->owner=this;
- internal_audio_stream_rid = AudioServer::get_singleton()->audio_stream_create(internal_audio_stream);
-
- AudioServer::get_singleton()->stream_set_active(internal_audio_stream_rid,true);
-
-}
-
-
-
-static float _get_attenuation(float cosine, float angle, float attenuation) {
-
-
- float listener_ang = Math::rad2deg(Math::acos(cosine))-angle;
-
- if (listener_ang>0 && angle<180.0) {
- listener_ang/=(180.0-angle);
- return Math::db2linear(Math::sin(listener_ang*(Math_PI/2.0))*attenuation);
- }
- return 1.0;
-}
-
-
-bool SpatialSoundServerSW::internal_buffer_mix(int32_t *p_buffer,int p_frames) {
-
- if (streaming_sources.size()==0)
- return false; //nothing to mix
-
-
- for (Set<Source*>::Element *E=streaming_sources.front();E;E=E->next()) {
-
- Source *s=E->get();
- ERR_CONTINUE(!s->stream);
-
- int channels = s->stream->get_channel_count();
- Source::StreamData &sd=s->stream_data;
-
- int todo=p_frames;
-
- AudioFilterSW filter;
- filter.set_sampling_rate(AudioServer::get_singleton()->get_default_mix_rate());
- filter.set_cutoff(sd.filter_cutoff);
- filter.set_gain(sd.filter_gain);
- filter.set_resonance(1);
- filter.set_mode(AudioFilterSW::HIGHSHELF);
- filter.set_stages(1);
- AudioFilterSW::Coeffs coefs;
- filter.prepare_coefficients(&coefs);
-
- int32_t in[4];
-#ifndef SPATIAL_SOUND_SERVER_NO_FILTER
-#define DO_FILTER(m_c)\
- {\
- float val = in[m_c];\
- float pre=val;\
- val = val*coefs.b0 + sd.filter_state[m_c].hb[0]*coefs.b1 + sd.filter_state[m_c].hb[1]*coefs.b2 + sd.filter_state[m_c].ha[0]*coefs.a1 + sd.filter_state[m_c].ha[1]*coefs.a2;\
- sd.filter_state[m_c].ha[1]=sd.filter_state[m_c].ha[0];\
- sd.filter_state[m_c].hb[1]=sd.filter_state[m_c].hb[0]; \
- sd.filter_state[m_c].hb[0]=pre;\
- sd.filter_state[m_c].ha[0]=val;\
- in[m_c]=Math::fast_ftoi(val);\
- }
-#else
-#define DO_FILTER(m_c)
-#endif
-
- while(todo) {
-
- int to_mix=MIN(todo,INTERNAL_BUFFER_SIZE);
-
- s->stream->mix(internal_buffer,to_mix);
-
- switch(internal_buffer_channels) {
-
- case 2: {
-
- float p = sd.panning.x*0.5+0.5;
- float panf[2]={ (1.0-p),p };
- panf[0]*=sd.volume;
- panf[1]*=sd.volume;
-
- int32_t pan[2]={Math::fast_ftoi(panf[0]*(1<<16)),Math::fast_ftoi(panf[1]*(1<<16))};
-
- switch(channels) {
- case 1: {
-
- for(int i=0;i<to_mix;i++) {
-
- in[0]=internal_buffer[i];
- in[1]=internal_buffer[i];
- DO_FILTER(0);
- DO_FILTER(1);
- p_buffer[(i<<1)+0]=((in[0]>>16)*pan[0]);
- p_buffer[(i<<1)+1]=((in[1]>>16)*pan[1]);
- }
- } break;
- case 2: {
-
- for(int i=0;i<to_mix;i++) {
-
- in[0]=internal_buffer[(i<<1)+0];
- in[1]=internal_buffer[(i<<1)+1];
- DO_FILTER(0);
- DO_FILTER(1);
- p_buffer[(i<<1)+0]=((in[0]>>16)*pan[0]);
- p_buffer[(i<<1)+1]=((in[1]>>16)*pan[1]);
- }
- } break;
- case 4: {
-
- for(int i=0;i<to_mix;i++) {
-
- in[0]=(internal_buffer[(i<<2)+0]+internal_buffer[(i<<2)+2])>>1;
- in[1]=(internal_buffer[(i<<2)+1]+internal_buffer[(i<<2)+3])>>1;
- DO_FILTER(0);
- DO_FILTER(1);
- p_buffer[(i<<1)+0]=((in[0]>>16)*pan[0]);
- p_buffer[(i<<1)+1]=((in[1]>>16)*pan[1]);
- }
- } break;
-
- } break;
-
- } break;
- case 4: {
-
- float xp = sd.panning.x*0.5+0.5;
- float yp = sd.panning.y*0.5+0.5;
- float panf[4]={ (1.0-xp)*(1.0-yp),(xp)*(1.0-yp),(1.0-xp)*(yp),(xp)*(yp) };
- panf[0]*=sd.volume;
- panf[1]*=sd.volume;
- panf[2]*=sd.volume;
- panf[3]*=sd.volume;
-
- int32_t pan[4]={
- Math::fast_ftoi(panf[0]*(1<<16)),
- Math::fast_ftoi(panf[1]*(1<<16)),
- Math::fast_ftoi(panf[2]*(1<<16)),
- Math::fast_ftoi(panf[3]*(1<<16))};
-
- switch(channels) {
- case 1: {
-
- for(int i=0;i<to_mix;i++) {
-
- in[0]=internal_buffer[i];
- in[1]=internal_buffer[i];
- in[2]=internal_buffer[i];
- in[3]=internal_buffer[i];
- DO_FILTER(0);
- DO_FILTER(1);
- DO_FILTER(2);
- DO_FILTER(3);
- p_buffer[(i<<2)+0]=((in[0]>>16)*pan[0]);
- p_buffer[(i<<2)+1]=((in[1]>>16)*pan[1]);
- p_buffer[(i<<2)+2]=((in[2]>>16)*pan[2]);
- p_buffer[(i<<2)+3]=((in[3]>>16)*pan[3]);
- }
- } break;
- case 2: {
-
- for(int i=0;i<to_mix;i++) {
-
- in[0]=internal_buffer[(i<<1)+0];
- in[1]=internal_buffer[(i<<1)+1];
- in[2]=internal_buffer[(i<<1)+0];
- in[3]=internal_buffer[(i<<1)+1];
- DO_FILTER(0);
- DO_FILTER(1);
- DO_FILTER(2);
- DO_FILTER(3);
- p_buffer[(i<<2)+0]=((in[0]>>16)*pan[0]);
- p_buffer[(i<<2)+1]=((in[1]>>16)*pan[1]);
- p_buffer[(i<<2)+2]=((in[2]>>16)*pan[2]);
- p_buffer[(i<<2)+3]=((in[3]>>16)*pan[3]);
- }
- } break;
- case 4: {
-
- for(int i=0;i<to_mix;i++) {
-
- in[0]=internal_buffer[(i<<2)+0];
- in[1]=internal_buffer[(i<<2)+1];
- in[2]=internal_buffer[(i<<2)+2];
- in[3]=internal_buffer[(i<<2)+3];
- DO_FILTER(0);
- DO_FILTER(1);
- DO_FILTER(2);
- DO_FILTER(3);
- p_buffer[(i<<2)+0]=((in[0]>>16)*pan[0]);
- p_buffer[(i<<2)+1]=((in[1]>>16)*pan[1]);
- p_buffer[(i<<2)+2]=((in[2]>>16)*pan[2]);
- p_buffer[(i<<2)+3]=((in[3]>>16)*pan[3]);
- }
- } break;
-
- } break;
-
- } break;
- case 6: {
-
-
- } break;
- }
- p_buffer+=to_mix*internal_buffer_channels;
- todo-=to_mix;
-
- }
-
- }
-
- return true;
-}
-
-void SpatialSoundServerSW::update(float p_delta) {
-
- List<ActiveVoice> to_disable;
-
-
- for(Set<ActiveVoice>::Element *E=active_voices.front();E;E=E->next()) {
-
- Source *source = E->get().source;
- int voice = E->get().voice;
-
- if (voice!=VOICE_IS_STREAM) {
- Source::Voice &v=source->voices[voice];
- ERR_CONTINUE(!v.active && !v.restart); // likely a bug...
- }
-
- //this could be optimized at some point... am not sure
- Space *space=space_owner.get(source->space);
- Room *room=room_owner.get(space->default_room);
- int max_level=-0x80000000;
- int rooms_culled = space->octree.cull_point(source->transform.origin,cull_rooms,MAX_CULL_ROOMS);
- for(int i=0;i<rooms_culled;i++) {
-
- Room *r=cull_rooms[i];
- ERR_CONTINUE( r->bounds.is_empty() ); // how did this happen??
- if (r->level<=max_level) //ignore optimization (level too low)
- continue;
- Vector3 local_point = r->inverse_transform.xform(source->transform.origin);
- if (!r->bounds.point_is_inside(local_point))
- continue;
- room=r;
- max_level=r->level;
-
- }
-
-
- //compute mixing weights (support for multiple listeners in the same output)
- float total_distance=0;
- for(Set<RID>::Element *L=space->listeners.front();L;L=L->next()) {
- Listener *listener=listener_owner.get(L->get());
- total_distance+=listener->transform.origin.distance_to(source->transform.origin);
- }
-
- //compute spatialization variables, weighted according to distance
- float volume_attenuation = 0.0;
- float air_absorption_hf_cutoff = 0.0;
- float air_absorption = 0.0;
- float pitch_scale=1.0;
- Vector3 panning;
-
-
- //print_line("listeners: "+itos(space->listeners.size()));
-
-
- for(Set<RID>::Element *L=space->listeners.front();L;L=L->next()) {
-
- Listener *listener=listener_owner.get(L->get());
-
- Vector3 rel_vector = listener->transform.xform_inv(source->transform.origin);
- Vector3 source_rel_vector = source->transform.xform_inv(listener->transform.origin).normalized();
- float distance=rel_vector.length();
- float weight = distance/total_distance;
- float pscale=1.0;
-
- float distance_scale=listener->params[LISTENER_PARAM_ATTENUATION_SCALE]*room->params[ROOM_PARAM_ATTENUATION_SCALE];
- float distance_min=source->params[SOURCE_PARAM_ATTENUATION_MIN_DISTANCE]*distance_scale;
- float distance_max=source->params[SOURCE_PARAM_ATTENUATION_MAX_DISTANCE]*distance_scale;
- float attenuation_exp=source->params[SOURCE_PARAM_ATTENUATION_DISTANCE_EXP];
- float attenuation=1;
-
- //print_line("DIST MIN: "+rtos(distance_min));
- //print_line("DIST MAX: "+rtos(distance_max));
- if (distance_max>0) {
- distance = CLAMP(distance,distance_min,distance_max);
- attenuation = Math::pow(1.0 - ((distance - distance_min)/(distance_max-distance_min)),CLAMP(attenuation_exp,0.001,16));
- }
-
- float hf_attenuation_cutoff = room->params[ROOM_PARAM_ATTENUATION_HF_CUTOFF];
- float hf_attenuation_exp = room->params[ROOM_PARAM_ATTENUATION_HF_RATIO_EXP];
- float hf_attenuation_floor = room->params[ROOM_PARAM_ATTENUATION_HF_FLOOR_DB];
- float absorption=Math::db2linear(Math::lerp(hf_attenuation_floor,0,Math::pow(attenuation,hf_attenuation_exp)));
-
- // source emission cone
-
- float emission_deg=source->params[SOURCE_PARAM_EMISSION_CONE_DEGREES];
- float emission_attdb=source->params[SOURCE_PARAM_EMISSION_CONE_ATTENUATION_DB];
- absorption*=_get_attenuation(source_rel_vector.dot(Vector3(0,0,-1)),emission_deg,emission_attdb);
-
- Vector3 vpanning=rel_vector.normalized();
-
- //listener stuff
-
- {
-
- // head cone
-
- float reception_deg=listener->params[LISTENER_PARAM_RECEPTION_CONE_DEGREES];
- float reception_attdb=listener->params[LISTENER_PARAM_RECEPTION_CONE_ATTENUATION_DB];
-
- absorption*=_get_attenuation(vpanning.dot(Vector3(0,0,-1)),reception_deg,reception_attdb);
-
- // scale
-
- attenuation*=Math::db2linear(listener->params[LISTENER_PARAM_VOLUME_SCALE_DB]);
- pscale*=Math::db2linear(listener->params[LISTENER_PARAM_PITCH_SCALE]);
-
-
- }
-
-
-
-
- //add values
-
- volume_attenuation+=weight*attenuation; // plus other stuff i guess
- air_absorption+=weight*absorption;
- air_absorption_hf_cutoff+=weight*hf_attenuation_cutoff;
- panning+=vpanning*weight;
- //pitch_scale+=pscale*weight;
-
- }
-
- RoomReverb reverb_room;
- float reverb_send;
-
- /* APPLY ROOM SETTINGS */
-
- {
- pitch_scale*=room->params[ROOM_PARAM_PITCH_SCALE];
- volume_attenuation*=Math::db2linear(room->params[ROOM_PARAM_VOLUME_SCALE_DB]);
- reverb_room=room->reverb;
- reverb_send=Math::lerp(1.0,volume_attenuation,room->params[ROOM_PARAM_ATTENUATION_REVERB_SCALE])*room->params[ROOM_PARAM_REVERB_SEND];
-
- }
-
- /* UPDATE VOICE & STREAM */
-
-
-
- if (voice==VOICE_IS_STREAM) {
-
- //update voice!!
- source->stream_data.panning=panning;
- source->stream_data.volume=volume_attenuation*Math::db2linear(source->params[SOURCE_PARAM_VOLUME_DB]);
- source->stream_data.reverb=reverb_room;
- source->stream_data.reverb_send=reverb_send;
- source->stream_data.filter_gain=air_absorption;
- source->stream_data.filter_cutoff=air_absorption_hf_cutoff;
-
- if (!source->stream) //stream is gone bye bye
- to_disable.push_back(ActiveVoice(source,voice)); // oh well..
-
- } else if (voice>=0) {
- //update stream!!
- Source::Voice &v=source->voices[voice];
-
- if (v.restart)
- AudioServer::get_singleton()->voice_play(v.voice_rid,v.sample_rid);
-
- float volume_scale = Math::db2linear(v.volume_scale)*Math::db2linear(source->params[SOURCE_PARAM_VOLUME_DB]);
- float volume = volume_attenuation*volume_scale;
- reverb_send*=volume_scale;
- int mix_rate = v.sample_mix_rate*v.pitch_scale*pitch_scale*source->params[SOURCE_PARAM_PITCH_SCALE];
-
-
- if (mix_rate<=0) {
- ERR_PRINT("Invalid mix rate for voice (0) check for invalid pitch_scale param.");
- to_disable.push_back(ActiveVoice(source,voice)); // oh well..
- continue; //invalid mix rate, disabling
- }
- if (v.restart || v.last_volume!=volume)
- AudioServer::get_singleton()->voice_set_volume(v.voice_rid,volume);
- if (v.restart || v.last_mix_rate!=mix_rate)
- AudioServer::get_singleton()->voice_set_mix_rate(v.voice_rid,mix_rate);
- if (v.restart || v.last_filter_gain!=air_absorption || v.last_filter_cutoff!=air_absorption_hf_cutoff)
- AudioServer::get_singleton()->voice_set_filter(v.voice_rid,AudioServer::FILTER_HIGH_SHELF,air_absorption_hf_cutoff,1.0,air_absorption);
- if (v.restart || v.last_panning!=panning)
- AudioServer::get_singleton()->voice_set_pan(v.voice_rid,panning.x,panning.y,panning.z);
- if (v.restart || v.last_reverb_room!=reverb_room || v.last_reverb_send!=reverb_send)
- AudioServer::get_singleton()->voice_set_reverb(v.voice_rid,AudioServer::ReverbRoomType(reverb_room),reverb_send);
-
- v.last_volume=volume;
- v.last_mix_rate=mix_rate;
- v.last_filter_gain=air_absorption;
- v.last_filter_cutoff=air_absorption_hf_cutoff;
- v.last_panning=panning;
- v.restart=false;
- v.active=true;
-
- if (!AudioServer::get_singleton()->voice_is_active(v.voice_rid))
- to_disable.push_back(ActiveVoice(source,voice)); // oh well..
- }
- }
-
- while(to_disable.size()) {
-
- ActiveVoice av = to_disable.front()->get();
- av.source->voices[av.voice].active=false;
- av.source->voices[av.voice].restart=false;
- active_voices.erase(av);
- to_disable.pop_front();
- }
-
-}
-void SpatialSoundServerSW::finish() {
-
- AudioServer::get_singleton()->free(internal_audio_stream_rid);
- memdelete(internal_audio_stream);
-
- _clean_up_owner(&source_owner,"Source");
- _clean_up_owner(&listener_owner,"Listener");
- _clean_up_owner(&room_owner,"Room");
- _clean_up_owner(&space_owner,"Space");
-
- memdelete_arr(internal_buffer);
-}
-
-SpatialSoundServerSW::SpatialSoundServerSW() {
-
-}
diff --git a/servers/spatial_sound/spatial_sound_server_sw.h b/servers/spatial_sound/spatial_sound_server_sw.h
deleted file mode 100644
index 901b781ac2..0000000000
--- a/servers/spatial_sound/spatial_sound_server_sw.h
+++ /dev/null
@@ -1,266 +0,0 @@
-/*************************************************************************/
-/* spatial_sound_server_sw.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef SPATIAL_SOUND_SERVER_SW_H
-#define SPATIAL_SOUND_SERVER_SW_H
-
-#include "servers/spatial_sound_server.h"
-#include "octree.h"
-#include "os/thread_safe.h"
-
-
-class SpatialSoundServerSW : public SpatialSoundServer {
-
- GDCLASS(SpatialSoundServerSW,SpatialSoundServer);
-
- _THREAD_SAFE_CLASS_
-
- enum {
- MAX_CULL_ROOMS=128,
- INTERNAL_BUFFER_SIZE=4096,
- INTERNAL_BUFFER_MAX_CHANNELS=4,
- VOICE_IS_STREAM=-1
-
- };
-
-
- struct InternalAudioStream : public AudioServer::AudioStream {
-
- ::SpatialSoundServerSW *owner;
- virtual int get_channel_count() const;
- virtual void set_mix_rate(int p_rate); //notify the stream of the mix rate
- virtual bool mix(int32_t *p_buffer,int p_frames);
- virtual void update();
- };
-
- InternalAudioStream *internal_audio_stream;
- RID internal_audio_stream_rid;
- int32_t *internal_buffer;
- int internal_buffer_channels;
-
- bool internal_buffer_mix(int32_t *p_buffer,int p_frames);
-
- struct Room;
-
- struct Space : public RID_Data {
-
- RID default_room;
- Set<RID> rooms;
- Set<RID> sources;
- Set<RID> listeners;
-
- Octree<Room> octree;
- };
-
- mutable RID_Owner<Space> space_owner;
-
- struct Room : public RID_Data{
- RID space;
- Transform transform;
- Transform inverse_transform;
- BSP_Tree bounds;
- RoomReverb reverb;
- float params[ROOM_PARAM_MAX];
- bool override_other_sources;
- OctreeElementID octree_id;
- int level;
-
- Room();
- };
-
- mutable RID_Owner<Room> room_owner;
-
-
-
- struct Source : public RID_Data {
-
- struct Voice {
-
- RID voice_rid;
- RID sample_rid;
- bool active;
- bool restart;
- float pitch_scale;
- float volume_scale;
- int sample_mix_rate;
-
-
- float last_volume;
- float last_filter_gain;
- float last_filter_cutoff;
- Vector3 last_panning;
- int last_mix_rate;
- RoomReverb last_reverb_room;
- float last_reverb_send;
-
- Voice();
- ~Voice();
- };
-
- struct StreamData {
-
-
- Vector3 panning;
- RoomReverb reverb;
- float reverb_send;
- float volume;
- float filter_gain;
- float filter_cutoff;
-
- struct FilterState {
-
- float ha[2];
- float hb[2];
- } filter_state[4];
-
- StreamData() {
-
- reverb_send=0;
- reverb=ROOM_REVERB_HALL;
- volume=1.0;
- filter_gain=1;
- filter_cutoff=5000;
-
- }
- } stream_data;
-
- RID space;
- Transform transform;
- float params[SOURCE_PARAM_MAX];
- AudioServer::AudioStream *stream;
- Vector<Voice> voices;
- int last_voice;
-
- Source();
- };
-
- mutable RID_Owner<Source> source_owner;
-
- struct Listener : public RID_Data {
-
- RID space;
- Transform transform;
- float params[LISTENER_PARAM_MAX];
-
- Listener();
- };
-
- mutable RID_Owner<Listener> listener_owner;
-
- struct ActiveVoice {
-
- Source *source;
- int voice;
- bool operator<(const ActiveVoice& p_voice) const { return (voice==p_voice.voice)?(source<p_voice.source):(voice<p_voice.voice); }
- ActiveVoice(Source *p_source=NULL,int p_voice=0) { source=p_source; voice=p_voice; }
- };
-
- Room *cull_rooms[MAX_CULL_ROOMS];
-
- Set<Source*> streaming_sources;
- Set<ActiveVoice> active_voices;
-
- void _clean_up_owner(RID_OwnerBase *p_owner, const char *p_area);
- void _update_sources();
-
-public:
-
- /* SPACE */
- virtual RID space_create();
-
- /* ROOM */
-
- virtual RID room_create();
- virtual void room_set_space(RID p_room,RID p_space);
- virtual RID room_get_space(RID p_room) const;
-
- virtual void room_set_bounds(RID p_room, const BSP_Tree& p_bounds);
- virtual BSP_Tree room_get_bounds(RID p_room) const;
- virtual void room_set_transform(RID p_room, const Transform& p_transform);
- virtual Transform room_get_transform(RID p_room) const;
-
-
- virtual void room_set_param(RID p_room, RoomParam p_param, float p_value);
- virtual float room_get_param(RID p_room, RoomParam p_param) const;
-
- virtual void room_set_level(RID p_room, int p_level);
- virtual int room_get_level(RID p_room) const;
-
- virtual void room_set_reverb(RID p_room, RoomReverb p_reverb);
- virtual RoomReverb room_get_reverb(RID p_room) const;
-
- //useful for underwater or rooms with very strange conditions
- virtual void room_set_force_params_to_all_sources(RID p_room, bool p_force);
- virtual bool room_is_forcing_params_to_all_sources(RID p_room) const;
-
- /* SOURCE */
-
- virtual RID source_create(RID p_space);
-
- virtual void source_set_polyphony(RID p_source,int p_voice_count);
- virtual int source_get_polyphony(RID p_source) const;
-
- virtual void source_set_transform(RID p_source, const Transform& p_transform);
- virtual Transform source_get_transform(RID p_source) const;
-
- virtual void source_set_param(RID p_source, SourceParam p_param, float p_value);
- virtual float source_get_param(RID p_source, SourceParam p_param) const;
-
- virtual void source_set_audio_stream(RID p_source, AudioServer::AudioStream *p_stream); //null to unset
- virtual SourceVoiceID source_play_sample(RID p_source, RID p_sample, int p_mix_rate, int p_voice=SOURCE_NEXT_VOICE);
- /* VOICES */
- virtual void source_voice_set_pitch_scale(RID p_source, SourceVoiceID p_voice, float p_pitch_scale);
- virtual void source_voice_set_volume_scale_db(RID p_source, SourceVoiceID p_voice, float p_volume);
-
- virtual bool source_is_voice_active(RID p_source, SourceVoiceID p_voice) const;
- virtual void source_stop_voice(RID p_source, SourceVoiceID p_voice);
-
- /* LISTENER */
-
- virtual RID listener_create();
- virtual void listener_set_space(RID p_listener, RID p_space);
-
- virtual void listener_set_transform(RID p_listener, const Transform& p_transform);
- virtual Transform listener_get_transform(RID p_listener) const;
-
- virtual void listener_set_param(RID p_listener, ListenerParam p_param, float p_value);
- virtual float listener_get_param(RID p_listener, ListenerParam p_param) const;
-
-
- /* MISC */
-
- virtual void free(RID p_id);
-
- virtual void init();
- virtual void update(float p_delta);
- virtual void finish();
-
- SpatialSoundServerSW();
-};
-
-#endif // SPATIAL_SOUND_SERVER_SW_H
diff --git a/servers/spatial_sound_2d/SCsub b/servers/spatial_sound_2d/SCsub
deleted file mode 100644
index ccc76e823f..0000000000
--- a/servers/spatial_sound_2d/SCsub
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env python
-
-Import('env')
-
-env.add_source_files(env.servers_sources, "*.cpp")
-
-Export('env')
diff --git a/servers/spatial_sound_2d/spatial_sound_2d_server_sw.cpp b/servers/spatial_sound_2d/spatial_sound_2d_server_sw.cpp
deleted file mode 100644
index 2bcc9644f1..0000000000
--- a/servers/spatial_sound_2d/spatial_sound_2d_server_sw.cpp
+++ /dev/null
@@ -1,1042 +0,0 @@
-/*************************************************************************/
-/* spatial_sound_2d_server_sw.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "spatial_sound_2d_server_sw.h"
-
-#include "os/os.h"
-#include "servers/audio/audio_filter_sw.h"
-
-
-
-int SpatialSound2DServerSW::InternalAudioStream::get_channel_count() const {
-
- return AudioServer::get_singleton()->get_default_channel_count();
-}
-
-void SpatialSound2DServerSW::InternalAudioStream::set_mix_rate(int p_rate) {
-
-
-}
-
-void SpatialSound2DServerSW::InternalAudioStream::update() {
-
- owner->_update_sources();
-}
-
-bool SpatialSound2DServerSW::InternalAudioStream::mix(int32_t *p_buffer,int p_frames) {
-
- return owner->internal_buffer_mix(p_buffer,p_frames);
-}
-
-void SpatialSound2DServerSW::_update_sources() {
-
- _THREAD_SAFE_METHOD_
- for (Set<Source*>::Element *E=streaming_sources.front();E;E=E->next()) {
-
- Source *s=E->get();
- ERR_CONTINUE(!s->stream);
- s->stream->update();
- }
-}
-
-
-SpatialSound2DServerSW::Room::Room() {
-
- //params[ROOM_PARAM_SPEED_OF_SOUND]=343.0;
- params[ROOM_PARAM_PITCH_SCALE]=1.0;
- params[ROOM_PARAM_VOLUME_SCALE_DB]=0;
- params[ROOM_PARAM_REVERB_SEND]=0;
- params[ROOM_PARAM_CHORUS_SEND]=0;
- params[ROOM_PARAM_ATTENUATION_SCALE]=1.0;
- params[ROOM_PARAM_ATTENUATION_HF_CUTOFF]=5000;
- params[ROOM_PARAM_ATTENUATION_HF_FLOOR_DB]=-24.0;
- params[ROOM_PARAM_ATTENUATION_HF_RATIO_EXP]=1.0;
- params[ROOM_PARAM_ATTENUATION_REVERB_SCALE]=0.0;
- override_other_sources=false;
- reverb=ROOM_REVERB_HALL;
- //octree_id=0;
- level=-1;
-
-
-}
-
-
-SpatialSound2DServerSW::Source::Source() {
-
- params[SOURCE_PARAM_VOLUME_DB]=0.0;
- params[SOURCE_PARAM_PITCH_SCALE]=1.0;
- params[SOURCE_PARAM_ATTENUATION_MIN_DISTANCE]=1;
- params[SOURCE_PARAM_ATTENUATION_MAX_DISTANCE]=100;
- params[SOURCE_PARAM_ATTENUATION_DISTANCE_EXP]=1.0; //linear (and not really good)
- stream=NULL;
- voices.resize(1);
- last_voice=0;
-}
-
-SpatialSound2DServerSW::Source::Voice::Voice() {
-
- active=false;
- restart=false;
- pitch_scale=1.0;
- volume_scale=0.0;
- voice_rid=AudioServer::get_singleton()->voice_create();
-
-}
-SpatialSound2DServerSW::Source::Voice::~Voice() {
-
- AudioServer::get_singleton()->free(voice_rid);
-}
-
-
-SpatialSound2DServerSW::Listener::Listener() {
-
- params[LISTENER_PARAM_VOLUME_SCALE_DB]=0.0;
- params[LISTENER_PARAM_PITCH_SCALE]=1.0;
- params[LISTENER_PARAM_ATTENUATION_SCALE]=1.0;
- params[LISTENER_PARAM_PAN_RANGE]=128;
-
-}
-
-/* SPACE */
-RID SpatialSound2DServerSW::space_create() {
-
- Space* space = memnew( Space );
- RID space_rid = space_owner.make_rid(space);
- space->default_room=room_create();
- room_set_space(space->default_room,space_rid);
- return space_rid;
-}
-
-/* ROOM */
-
-RID SpatialSound2DServerSW::room_create() {
-
- Room *room = memnew( Room );
- return room_owner.make_rid(room);
-}
-
-void SpatialSound2DServerSW::room_set_space(RID p_room,RID p_space) {
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND(!room);
-
- if (room->space.is_valid()) {
-
- Space *space = space_owner.get(room->space);
- space->rooms.erase(p_room);
- //space->octree.erase(room->octree_id);
- //room->octree_id=0;
- }
-
- room->space=RID();
-
- if (p_space.is_valid()) {
-
- Space *space = space_owner.get(p_space);
- ERR_FAIL_COND(!space);
- space->rooms.insert(p_room);
- //room->octree_id=space->octree.create(room,AABB());
- //set bounds
- //AABB aabb = room->bounds.is_empty()?AABB():room->bounds.get_aabb();
- //space->octree.move(room->octree_id,room->transform.xform(aabb));
- room->space=p_space;
- }
-
-
-}
-
-RID SpatialSound2DServerSW::room_get_space(RID p_room) const {
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND_V(!room,RID());
-
-
- return room->space;
-}
-
-
-
-void SpatialSound2DServerSW::room_set_bounds(RID p_room, const PoolVector<Point2>& p_bounds) {
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND(!room);
-
- room->bounds=p_bounds;
-
- if (!room->space.is_valid())
- return;
-
- //AABB aabb = room->bounds.is_empty()?AABB():room->bounds.get_aabb();
- //Space* space = space_owner.get(room->space);
- //ERR_FAIL_COND(!space);
-
- //space->octree.move(room->octree_id,room->transform.xform(aabb));
-
-}
-PoolVector<Point2> SpatialSound2DServerSW::room_get_bounds(RID p_room) const {
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND_V(!room,PoolVector<Point2>());
-
- return room->bounds;
-}
-
-void SpatialSound2DServerSW::room_set_transform(RID p_room, const Transform2D& p_transform) {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND(!room);
- room->transform=p_transform;
- room->inverse_transform=p_transform.affine_inverse(); // needs to be done to unscale BSP properly
-
- if (!room->space.is_valid())
- return;
-
- /*
- if (!room->bounds.is_empty()) {
-
- Space* space = space_owner.get(room->space);
- ERR_FAIL_COND(!space);
-
- //space->octree.move(room->octree_id,room->transform.xform(room->bounds.get_aabb()));
- }*/
-}
-
-Transform2D SpatialSound2DServerSW::room_get_transform(RID p_room) const {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND_V(!room,Transform2D());
- return room->transform;
-}
-
-
-void SpatialSound2DServerSW::room_set_param(RID p_room, RoomParam p_param, float p_value) {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- ERR_FAIL_INDEX(p_param,ROOM_PARAM_MAX);
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND(!room);
- room->params[p_param]=p_value;
-
-}
-float SpatialSound2DServerSW::room_get_param(RID p_room, RoomParam p_param) const {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- ERR_FAIL_INDEX_V(p_param,ROOM_PARAM_MAX,0);
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND_V(!room,0);
- return room->params[p_param];
-}
-
-void SpatialSound2DServerSW::room_set_level(RID p_room, int p_level) {
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND(!room);
- room->level =p_level;
-
-}
-
-int SpatialSound2DServerSW::room_get_level(RID p_room) const {
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND_V(!room,0);
- return room->level;
-
-}
-
-
-void SpatialSound2DServerSW::room_set_reverb(RID p_room, RoomReverb p_reverb) {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND(!room);
- room->reverb=p_reverb;
-
-}
-SpatialSound2DServerSW::RoomReverb SpatialSound2DServerSW::room_get_reverb(RID p_room) const {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND_V(!room,ROOM_REVERB_SMALL);
- return room->reverb;
-}
-
-//useful for underwater or rooms with very strange conditions
-void SpatialSound2DServerSW::room_set_force_params_to_all_sources(RID p_room, bool p_force) {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND(!room);
- room->override_other_sources=p_force;
-
-}
-bool SpatialSound2DServerSW::room_is_forcing_params_to_all_sources(RID p_room) const {
-
- if (space_owner.owns(p_room))
- p_room=space_owner.get(p_room)->default_room;
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND_V(!room,false);
- return room->override_other_sources;
-}
-
-/* SOURCE */
-
-RID SpatialSound2DServerSW::source_create(RID p_space) {
-
- Space *space = space_owner.get(p_space);
- ERR_FAIL_COND_V(!space,RID());
-
- Source *source = memnew( Source );
- source->space=p_space;
- RID source_rid = source_owner.make_rid(source);
- space->sources.insert(source_rid);
-
- return source_rid;
-}
-
-
-void SpatialSound2DServerSW::source_set_polyphony(RID p_source,int p_voice_count) {
-
-
- ERR_FAIL_COND(p_voice_count<=0); // more than 32 is too much, change this if you really need more
- if (p_voice_count>32) {
-
- ERR_PRINT("Voices will be clipped to 32");
- p_voice_count=32;
- }
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND(!source);
-
- if (p_voice_count<source->voices.size()) {
-
- for(int i=p_voice_count;i<source->voices.size();i++) {
- active_voices.erase(ActiveVoice(source,i)); //erase from active voices
- }
- }
- source->voices.resize(p_voice_count);
-
-}
-
-int SpatialSound2DServerSW::source_get_polyphony(RID p_source) const {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND_V(!source,-1);
- return source->voices.size();
-
-}
-
-void SpatialSound2DServerSW::source_set_transform(RID p_source, const Transform2D& p_transform) {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND(!source);
- source->transform=p_transform;
- source->transform.orthonormalize();
-}
-Transform2D SpatialSound2DServerSW::source_get_transform(RID p_source) const {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND_V(!source,Transform2D());
- return source->transform;
-}
-
-void SpatialSound2DServerSW::source_set_param(RID p_source, SourceParam p_param, float p_value) {
-
- ERR_FAIL_INDEX(p_param,SOURCE_PARAM_MAX);
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND(!source);
- source->params[p_param]=p_value;
-
-}
-float SpatialSound2DServerSW::source_get_param(RID p_source, SourceParam p_param) const {
- ERR_FAIL_INDEX_V(p_param,SOURCE_PARAM_MAX,0);
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND_V(!source,0);
- return source->params[p_param];
-
-
-}
-
-void SpatialSound2DServerSW::source_set_audio_stream(RID p_source, AudioServer::AudioStream *p_stream) {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND(!source);
- AudioServer::get_singleton()->lock();
- source->stream=p_stream;
- _THREAD_SAFE_METHOD_
-
- if (!p_stream) {
- streaming_sources.erase(source);
- active_voices.erase(ActiveVoice(source,VOICE_IS_STREAM));
- } else {
- streaming_sources.insert(source);
- active_voices.insert(ActiveVoice(source,VOICE_IS_STREAM));
- zeromem(source->stream_data.filter_state,sizeof(Source::StreamData::FilterState)*4); //reset filter for safetyness
- p_stream->set_mix_rate(AudioServer::get_singleton()->get_default_mix_rate());
- }
-
- AudioServer::get_singleton()->unlock();
-
-} //null to unset
-
-SpatialSound2DServer::SourceVoiceID SpatialSound2DServerSW::source_play_sample(RID p_source, RID p_sample, int p_mix_rate, int p_voice) {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND_V(!source,SOURCE_INVALID_VOICE);
-
- int to_play=0;
-
- if (p_voice==SOURCE_NEXT_VOICE) {
- to_play=source->last_voice+1;
- if (to_play>=source->voices.size())
- to_play=0;
-
- } else
- to_play=p_voice;
-
- ERR_FAIL_INDEX_V(to_play,source->voices.size(),SOURCE_INVALID_VOICE);
-
- source->voices[to_play].restart=true;
- source->voices[to_play].sample_rid=p_sample;
- source->voices[to_play].sample_mix_rate=p_mix_rate;
- source->voices[to_play].pitch_scale=1;
- source->voices[to_play].volume_scale=0;
- source->last_voice=to_play;
- active_voices.insert(ActiveVoice(source,to_play));
- return to_play;
-}
-
-/* VOICES */
-void SpatialSound2DServerSW::source_voice_set_pitch_scale(RID p_source, SourceVoiceID p_voice, float p_pitch_scale) {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND(!source);
- ERR_FAIL_INDEX(p_voice,source->voices.size());
- source->voices[p_voice].pitch_scale=p_pitch_scale;
-
-}
-void SpatialSound2DServerSW::source_voice_set_volume_scale_db(RID p_source, SourceVoiceID p_voice, float p_db) {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND(!source);
- ERR_FAIL_INDEX(p_voice,source->voices.size());
- source->voices[p_voice].volume_scale=p_db;
-
-}
-
-bool SpatialSound2DServerSW::source_is_voice_active(RID p_source, SourceVoiceID p_voice) const {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND_V(!source,false);
- ERR_FAIL_INDEX_V(p_voice,source->voices.size(),false);
- return source->voices[p_voice].active || source->voices[p_voice].restart;
-
-}
-void SpatialSound2DServerSW::source_stop_voice(RID p_source, SourceVoiceID p_voice) {
-
- Source *source = source_owner.get(p_source);
- ERR_FAIL_COND(!source);
- ERR_FAIL_INDEX(p_voice,source->voices.size());
- if (source->voices[p_voice].active) {
- AudioServer::get_singleton()->voice_stop(source->voices[p_voice].voice_rid);
- }
- source->voices[p_voice].active=false;
- source->voices[p_voice].restart=false;
- active_voices.erase(ActiveVoice(source,p_voice));
-}
-
-/* LISTENER */
-
-RID SpatialSound2DServerSW::listener_create() {
-
- Listener *listener = memnew( Listener );
- RID listener_rid = listener_owner.make_rid(listener);
- return listener_rid;
-
-}
-
-void SpatialSound2DServerSW::listener_set_space(RID p_listener,RID p_space) {
-
- Listener *listener = listener_owner.get(p_listener);
- ERR_FAIL_COND(!listener);
-
- if (listener->space.is_valid()) {
-
- Space *lspace = space_owner.get(listener->space);
- ERR_FAIL_COND(!lspace);
- lspace->listeners.erase(p_listener);
- }
-
- listener->space=RID();
-
- if (p_space.is_valid()) {
- Space *space = space_owner.get(p_space);
- ERR_FAIL_COND(!space);
-
- listener->space=p_space;
- space->listeners.insert(p_listener);
- }
-
-}
-
-void SpatialSound2DServerSW::listener_set_transform(RID p_listener, const Transform2D& p_transform) {
-
- Listener *listener = listener_owner.get(p_listener);
- ERR_FAIL_COND(!listener);
- listener->transform=p_transform;
- listener->transform.orthonormalize(); //must be done..
-}
-Transform2D SpatialSound2DServerSW::listener_get_transform(RID p_listener) const {
-
- Listener *listener = listener_owner.get(p_listener);
- ERR_FAIL_COND_V(!listener,Transform2D());
- return listener->transform;
-}
-
-void SpatialSound2DServerSW::listener_set_param(RID p_listener, ListenerParam p_param, float p_value) {
-
- ERR_FAIL_INDEX(p_param,LISTENER_PARAM_MAX);
- Listener *listener = listener_owner.get(p_listener);
- ERR_FAIL_COND(!listener);
- listener->params[p_param]=p_value;
-}
-
-float SpatialSound2DServerSW::listener_get_param(RID p_listener, ListenerParam p_param) const {
-
- ERR_FAIL_INDEX_V(p_param,LISTENER_PARAM_MAX,0);
- Listener *listener = listener_owner.get(p_listener);
- ERR_FAIL_COND_V(!listener,0);
- return listener->params[p_param];
-}
-
-
-/* MISC */
-
-void SpatialSound2DServerSW::free(RID p_id) {
-
-
- if (space_owner.owns(p_id)) {
-
- Space *space = space_owner.get(p_id);
- free(space->default_room);
-
- while(space->listeners.size()) {
- listener_set_space(space->listeners.front()->get(),RID());
- }
- while(space->sources.size()) {
- free(space->sources.front()->get());
- }
- while(space->rooms.size()) {
- room_set_space(space->rooms.front()->get(),RID());
- }
- space_owner.free(p_id);
- memdelete(space);
-
- } else if (source_owner.owns(p_id)) {
-
- Source *source = source_owner.get(p_id);
- if (source->stream)
- source_set_audio_stream(p_id,NULL);
-
- Space *space = space_owner.get(source->space);
- ERR_FAIL_COND(!space);
- space->sources.erase(p_id);
- for(int i=0;i<source->voices.size();i++) {
- active_voices.erase(ActiveVoice(source,i));
- }
- source_owner.free(p_id);
- memdelete(source);
- } else if (listener_owner.owns(p_id)) {
-
- Listener *listener = listener_owner.get(p_id);
- if (listener->space.is_valid()) {
- Space *space = space_owner.get(listener->space);
- ERR_FAIL_COND(!space);
- space->listeners.erase(p_id);
- }
- listener_owner.free(p_id);
- memdelete(listener);
-
- } else if (room_owner.owns(p_id)) {
-
- Room *room = room_owner.get(p_id);
-
- if (room->space.is_valid()) {
- Space *space = space_owner.get(room->space);
- ERR_FAIL_COND(!space);
- //space->octree.erase(room->octree_id);
- space->rooms.erase(p_id);
- }
- room_owner.free(p_id);
- memdelete(room);
- } else {
- ERR_PRINT("Attempt to free invalid ID") ;
- }
-
-}
-
-void SpatialSound2DServerSW::_clean_up_owner(RID_OwnerBase *p_owner, const char *p_area) {
-
- List<RID> rids;
- p_owner->get_owned_list(&rids);
-
- for(List<RID>::Element *I=rids.front();I;I=I->next()) {
- if (OS::get_singleton()->is_stdout_verbose()) {
-
- print_line("Leaked RID ("+itos(I->get().get_id())+") of type "+String(p_area));
- }
- free(I->get());
- }
-}
-
-void SpatialSound2DServerSW::init() {
-
- internal_buffer = memnew_arr(int32_t, INTERNAL_BUFFER_SIZE*INTERNAL_BUFFER_MAX_CHANNELS);
- internal_buffer_channels=AudioServer::get_singleton()->get_default_channel_count();
-
- internal_audio_stream = memnew( InternalAudioStream );
- internal_audio_stream->owner=this;
- internal_audio_stream_rid = AudioServer::get_singleton()->audio_stream_create(internal_audio_stream);
-
- AudioServer::get_singleton()->stream_set_active(internal_audio_stream_rid,true);
-
-}
-
-
-
-bool SpatialSound2DServerSW::internal_buffer_mix(int32_t *p_buffer,int p_frames) {
-
- if (streaming_sources.size()==0)
- return false; //nothing to mix
-
-
- for (Set<Source*>::Element *E=streaming_sources.front();E;E=E->next()) {
-
- Source *s=E->get();
- ERR_CONTINUE(!s->stream);
-
- int channels = s->stream->get_channel_count();
- Source::StreamData &sd=s->stream_data;
-
- int todo=p_frames;
-
- AudioFilterSW filter;
- filter.set_sampling_rate(AudioServer::get_singleton()->get_default_mix_rate());
- filter.set_cutoff(sd.filter_cutoff);
- filter.set_gain(sd.filter_gain);
- filter.set_resonance(1);
- filter.set_mode(AudioFilterSW::HIGHSHELF);
- filter.set_stages(1);
- AudioFilterSW::Coeffs coefs;
- filter.prepare_coefficients(&coefs);
-
- int32_t in[4];
-#ifndef SPATIAL_SOUND_SERVER_NO_FILTER
-#define DO_FILTER(m_c)\
- {\
- float val = in[m_c];\
- float pre=val;\
- val = val*coefs.b0 + sd.filter_state[m_c].hb[0]*coefs.b1 + sd.filter_state[m_c].hb[1]*coefs.b2 + sd.filter_state[m_c].ha[0]*coefs.a1 + sd.filter_state[m_c].ha[1]*coefs.a2;\
- sd.filter_state[m_c].ha[1]=sd.filter_state[m_c].ha[0];\
- sd.filter_state[m_c].hb[1]=sd.filter_state[m_c].hb[0]; \
- sd.filter_state[m_c].hb[0]=pre;\
- sd.filter_state[m_c].ha[0]=val;\
- in[m_c]=Math::fast_ftoi(val);\
- }
-#else
-#define DO_FILTER(m_c)
-#endif
-
- while(todo) {
-
- int to_mix=MIN(todo,INTERNAL_BUFFER_SIZE);
-
- s->stream->mix(internal_buffer,to_mix);
-
- switch(internal_buffer_channels) {
-
- case 2: {
-
- float p = sd.panning.x*0.5+0.5;
- float panf[2]={ (1.0-p),p };
- panf[0]*=sd.volume;
- panf[1]*=sd.volume;
-
- int32_t pan[2]={Math::fast_ftoi(panf[0]*(1<<16)),Math::fast_ftoi(panf[1]*(1<<16))};
-
- switch(channels) {
- case 1: {
-
- for(int i=0;i<to_mix;i++) {
-
- in[0]=internal_buffer[i];
- in[1]=internal_buffer[i];
- DO_FILTER(0);
- DO_FILTER(1);
- p_buffer[(i<<1)+0]=((in[0]>>16)*pan[0]);
- p_buffer[(i<<1)+1]=((in[1]>>16)*pan[1]);
- }
- } break;
- case 2: {
-
- for(int i=0;i<to_mix;i++) {
-
- in[0]=internal_buffer[(i<<1)+0];
- in[1]=internal_buffer[(i<<1)+1];
- DO_FILTER(0);
- DO_FILTER(1);
- p_buffer[(i<<1)+0]=((in[0]>>16)*pan[0]);
- p_buffer[(i<<1)+1]=((in[1]>>16)*pan[1]);
- }
- } break;
- case 4: {
-
- for(int i=0;i<to_mix;i++) {
-
- in[0]=(internal_buffer[(i<<2)+0]+internal_buffer[(i<<2)+2])>>1;
- in[1]=(internal_buffer[(i<<2)+1]+internal_buffer[(i<<2)+3])>>1;
- DO_FILTER(0);
- DO_FILTER(1);
- p_buffer[(i<<1)+0]=((in[0]>>16)*pan[0]);
- p_buffer[(i<<1)+1]=((in[1]>>16)*pan[1]);
- }
- } break;
-
- } break;
-
- } break;
- case 4: {
-
- float xp = sd.panning.x*0.5+0.5;
- float yp = sd.panning.y*0.5+0.5;
- float panf[4]={ (1.0-xp)*(1.0-yp),(xp)*(1.0-yp),(1.0-xp)*(yp),(xp)*(yp) };
- panf[0]*=sd.volume;
- panf[1]*=sd.volume;
- panf[2]*=sd.volume;
- panf[3]*=sd.volume;
-
- int32_t pan[4]={
- Math::fast_ftoi(panf[0]*(1<<16)),
- Math::fast_ftoi(panf[1]*(1<<16)),
- Math::fast_ftoi(panf[2]*(1<<16)),
- Math::fast_ftoi(panf[3]*(1<<16))};
-
- switch(channels) {
- case 1: {
-
- for(int i=0;i<to_mix;i++) {
-
- in[0]=internal_buffer[i];
- in[1]=internal_buffer[i];
- in[2]=internal_buffer[i];
- in[3]=internal_buffer[i];
- DO_FILTER(0);
- DO_FILTER(1);
- DO_FILTER(2);
- DO_FILTER(3);
- p_buffer[(i<<2)+0]=((in[0]>>16)*pan[0]);
- p_buffer[(i<<2)+1]=((in[1]>>16)*pan[1]);
- p_buffer[(i<<2)+2]=((in[2]>>16)*pan[2]);
- p_buffer[(i<<2)+3]=((in[3]>>16)*pan[3]);
- }
- } break;
- case 2: {
-
- for(int i=0;i<to_mix;i++) {
-
- in[0]=internal_buffer[(i<<1)+0];
- in[1]=internal_buffer[(i<<1)+1];
- in[2]=internal_buffer[(i<<1)+0];
- in[3]=internal_buffer[(i<<1)+1];
- DO_FILTER(0);
- DO_FILTER(1);
- DO_FILTER(2);
- DO_FILTER(3);
- p_buffer[(i<<2)+0]=((in[0]>>16)*pan[0]);
- p_buffer[(i<<2)+1]=((in[1]>>16)*pan[1]);
- p_buffer[(i<<2)+2]=((in[2]>>16)*pan[2]);
- p_buffer[(i<<2)+3]=((in[3]>>16)*pan[3]);
- }
- } break;
- case 4: {
-
- for(int i=0;i<to_mix;i++) {
-
- in[0]=internal_buffer[(i<<2)+0];
- in[1]=internal_buffer[(i<<2)+1];
- in[2]=internal_buffer[(i<<2)+2];
- in[3]=internal_buffer[(i<<2)+3];
- DO_FILTER(0);
- DO_FILTER(1);
- DO_FILTER(2);
- DO_FILTER(3);
- p_buffer[(i<<2)+0]=((in[0]>>16)*pan[0]);
- p_buffer[(i<<2)+1]=((in[1]>>16)*pan[1]);
- p_buffer[(i<<2)+2]=((in[2]>>16)*pan[2]);
- p_buffer[(i<<2)+3]=((in[3]>>16)*pan[3]);
- }
- } break;
-
- } break;
-
- } break;
- case 6: {
-
-
- } break;
- }
- p_buffer+=to_mix*internal_buffer_channels;
- todo-=to_mix;
-
- }
-
- }
-
- return true;
-}
-
-void SpatialSound2DServerSW::update(float p_delta) {
-
- List<ActiveVoice> to_disable;
-
- for(Set<ActiveVoice>::Element *E=active_voices.front();E;E=E->next()) {
-
- Source *source = E->get().source;
- int voice = E->get().voice;
-
- if (voice!=VOICE_IS_STREAM) {
- Source::Voice &v=source->voices[voice];
- ERR_CONTINUE(!v.active && !v.restart); // likely a bug...
- }
-
- //this could be optimized at some point... am not sure
- Space *space=space_owner.get(source->space);
- Room *room=room_owner.get(space->default_room);
-
- //compute mixing weights (support for multiple listeners in the same output)
- float total_distance=0;
- for(Set<RID>::Element *L=space->listeners.front();L;L=L->next()) {
- Listener *listener=listener_owner.get(L->get());
- float d = listener->transform.get_origin().distance_to(source->transform.get_origin());
- if (d==0)
- d=0.1;
- total_distance+=d;
- }
-
- //compute spatialization variables, weighted according to distance
- float volume_attenuation = 0.0;
- float air_absorption_hf_cutoff = 0.0;
- float air_absorption = 0.0;
- float pitch_scale=0.0;
- Vector2 panning;
-
- for(Set<RID>::Element *L=space->listeners.front();L;L=L->next()) {
-
- Listener *listener=listener_owner.get(L->get());
-
- Vector2 rel_vector = -listener->transform.xform_inv(source->transform.get_origin());
- //Vector2 source_rel_vector = source->transform.xform_inv(listener->transform.get_origin()).normalized();
- float distance=rel_vector.length();
- float weight = distance/total_distance;
- float pscale=1.0;
-
- float distance_scale=listener->params[LISTENER_PARAM_ATTENUATION_SCALE]*room->params[ROOM_PARAM_ATTENUATION_SCALE];
- float distance_min=source->params[SOURCE_PARAM_ATTENUATION_MIN_DISTANCE]*distance_scale;
- float distance_max=source->params[SOURCE_PARAM_ATTENUATION_MAX_DISTANCE]*distance_scale;
- float attenuation_exp=source->params[SOURCE_PARAM_ATTENUATION_DISTANCE_EXP];
- float attenuation=1;
-
- if (distance_max>0) {
- distance = CLAMP(distance,distance_min,distance_max);
- attenuation = Math::pow(1.0 - ((distance - distance_min)/(distance_max-distance_min)),CLAMP(attenuation_exp,0.001,16));
- }
-
- float hf_attenuation_cutoff = room->params[ROOM_PARAM_ATTENUATION_HF_CUTOFF];
- float hf_attenuation_exp = room->params[ROOM_PARAM_ATTENUATION_HF_RATIO_EXP];
- float hf_attenuation_floor = room->params[ROOM_PARAM_ATTENUATION_HF_FLOOR_DB];
- float absorption=Math::db2linear(Math::lerp(hf_attenuation_floor,0,Math::pow(attenuation,hf_attenuation_exp)));
-
- // source emission cone
-/* only for 3D
- float emission_deg=source->params[SOURCE_PARAM_EMISSION_CONE_DEGREES];
- float emission_attdb=source->params[SOURCE_PARAM_EMISSION_CONE_ATTENUATION_DB];
- absorption*=_get_attenuation(source_rel_vector.dot(Vector2(0,0,-1)),emission_deg,emission_attdb);
-*/
- Vector2 vpanning=rel_vector.normalized();
- if (distance < listener->params[LISTENER_PARAM_PAN_RANGE])
- vpanning*=distance/listener->params[LISTENER_PARAM_PAN_RANGE];
-
- //listener stuff
-
- {
-
- // head cone
-/* only for 3D
- float reception_deg=listener->params[LISTENER_PARAM_RECEPTION_CONE_DEGREES];
- float reception_attdb=listener->params[LISTENER_PARAM_RECEPTION_CONE_ATTENUATION_DB];
-
- absorption*=_get_attenuation(vpanning.dot(Vector2(0,0,-1)),reception_deg,reception_attdb);
-*/
-
- // scale
-
- attenuation*=Math::db2linear(listener->params[LISTENER_PARAM_VOLUME_SCALE_DB]);
- pscale*=Math::db2linear(listener->params[LISTENER_PARAM_PITCH_SCALE]);
-
-
- }
-
-
-
-
- //add values
-
- volume_attenuation+=weight*attenuation; // plus other stuff i guess
- air_absorption+=weight*absorption;
- air_absorption_hf_cutoff+=weight*hf_attenuation_cutoff;
- panning+=vpanning*weight;
- pitch_scale+=pscale*weight;
-
- }
-
- RoomReverb reverb_room=ROOM_REVERB_HALL;
- float reverb_send=0;
-
- /* APPLY ROOM SETTINGS */
-
- {
- pitch_scale*=room->params[ROOM_PARAM_PITCH_SCALE];
- volume_attenuation*=Math::db2linear(room->params[ROOM_PARAM_VOLUME_SCALE_DB]);
- reverb_room=room->reverb;
- reverb_send=Math::lerp(1.0,volume_attenuation,room->params[ROOM_PARAM_ATTENUATION_REVERB_SCALE])*room->params[ROOM_PARAM_REVERB_SEND];
-
- }
-
- /* UPDATE VOICE & STREAM */
-
-
-
- if (voice==VOICE_IS_STREAM) {
-
- //update voice!!
- source->stream_data.panning=panning;
- source->stream_data.volume=volume_attenuation*Math::db2linear(source->params[SOURCE_PARAM_VOLUME_DB]);
- source->stream_data.reverb=reverb_room;
- source->stream_data.reverb_send=reverb_send;
- source->stream_data.filter_gain=air_absorption;
- source->stream_data.filter_cutoff=air_absorption_hf_cutoff;
-
- if (!source->stream) //stream is gone bye bye
- to_disable.push_back(ActiveVoice(source,voice)); // oh well..
-
- } else if (voice>=0) {
- //update stream!!
- Source::Voice &v=source->voices[voice];
-
- if (v.restart)
- AudioServer::get_singleton()->voice_play(v.voice_rid,v.sample_rid);
-
- float volume_scale = Math::db2linear(v.volume_scale)*Math::db2linear(source->params[SOURCE_PARAM_VOLUME_DB]);
- float volume = volume_attenuation*volume_scale;
- reverb_send*=volume_scale;
- int mix_rate = v.sample_mix_rate*v.pitch_scale*pitch_scale*source->params[SOURCE_PARAM_PITCH_SCALE];
-
-
- if (mix_rate<=0) {
-
- ERR_PRINT("Invalid mix rate for voice (0) check for invalid pitch_scale param.");
- to_disable.push_back(ActiveVoice(source,voice)); // oh well..
- continue; //invalid mix rate, disabling
- }
- if (v.restart || v.last_volume!=volume)
- AudioServer::get_singleton()->voice_set_volume(v.voice_rid,volume);
- if (v.restart || v.last_mix_rate!=mix_rate)
- AudioServer::get_singleton()->voice_set_mix_rate(v.voice_rid,mix_rate);
- if (v.restart || v.last_filter_gain!=air_absorption || v.last_filter_cutoff!=air_absorption_hf_cutoff)
- AudioServer::get_singleton()->voice_set_filter(v.voice_rid,AudioServer::FILTER_HIGH_SHELF,air_absorption_hf_cutoff,1.0,air_absorption);
- if (v.restart || v.last_panning!=panning) {
- AudioServer::get_singleton()->voice_set_pan(v.voice_rid,-panning.x,panning.y,0);
- }
- if (v.restart || v.last_reverb_room!=reverb_room || v.last_reverb_send!=reverb_send)
- AudioServer::get_singleton()->voice_set_reverb(v.voice_rid,AudioServer::ReverbRoomType(reverb_room),reverb_send);
-
- v.last_volume=volume;
- v.last_mix_rate=mix_rate;
- v.last_filter_gain=air_absorption;
- v.last_filter_cutoff=air_absorption_hf_cutoff;
- v.last_panning=panning;
- v.last_reverb_room=reverb_room;
- v.last_reverb_send=reverb_send;
- v.restart=false;
- v.active=true;
-
- if (!AudioServer::get_singleton()->voice_is_active(v.voice_rid))
- to_disable.push_back(ActiveVoice(source,voice)); // oh well..
- }
- }
-
- while(to_disable.size()) {
-
- ActiveVoice av = to_disable.front()->get();
- av.source->voices[av.voice].active=false;
- av.source->voices[av.voice].restart=false;
- active_voices.erase(av);
- to_disable.pop_front();
- }
-
-}
-void SpatialSound2DServerSW::finish() {
-
- AudioServer::get_singleton()->free(internal_audio_stream_rid);
- memdelete(internal_audio_stream);
-
- _clean_up_owner(&source_owner,"Source");
- _clean_up_owner(&listener_owner,"Listener");
- _clean_up_owner(&room_owner,"Room");
- _clean_up_owner(&space_owner,"Space");
-
- memdelete_arr(internal_buffer);
-}
-
-SpatialSound2DServerSW::SpatialSound2DServerSW() {
-
-}
diff --git a/servers/spatial_sound_2d/spatial_sound_2d_server_sw.h b/servers/spatial_sound_2d/spatial_sound_2d_server_sw.h
deleted file mode 100644
index 7999a8c22b..0000000000
--- a/servers/spatial_sound_2d/spatial_sound_2d_server_sw.h
+++ /dev/null
@@ -1,265 +0,0 @@
-/*************************************************************************/
-/* spatial_sound_2d_server_sw.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef SPATIAL_SOUND_2D_SERVER_SW_H
-#define SPATIAL_SOUND_2D_SERVER_SW_H
-
-#include "servers/spatial_sound_2d_server.h"
-
-#include "os/thread_safe.h"
-
-
-class SpatialSound2DServerSW : public SpatialSound2DServer {
-
- GDCLASS(SpatialSound2DServerSW,SpatialSound2DServer);
-
- _THREAD_SAFE_CLASS_
-
- enum {
- INTERNAL_BUFFER_SIZE=4096,
- INTERNAL_BUFFER_MAX_CHANNELS=4,
- VOICE_IS_STREAM=-1
-
- };
-
-
- struct InternalAudioStream : public AudioServer::AudioStream {
-
- ::SpatialSound2DServerSW *owner;
- virtual int get_channel_count() const;
- virtual void set_mix_rate(int p_rate); //notify the stream of the mix rate
- virtual bool mix(int32_t *p_buffer,int p_frames);
- virtual void update();
- };
-
- InternalAudioStream *internal_audio_stream;
- RID internal_audio_stream_rid;
- int32_t *internal_buffer;
- int internal_buffer_channels;
-
- bool internal_buffer_mix(int32_t *p_buffer,int p_frames);
-
- struct Room;
-
- struct Space : public RID_Data {
-
- RID default_room;
- Set<RID> rooms;
- Set<RID> sources;
- Set<RID> listeners;
-
- //Octree<Room> octree;
- };
-
- mutable RID_Owner<Space> space_owner;
-
- struct Room : public RID_Data {
- RID space;
- Transform2D transform;
- Transform2D inverse_transform;
- PoolVector<Point2> bounds;
- RoomReverb reverb;
- float params[ROOM_PARAM_MAX];
- bool override_other_sources;
- //OctreeElementID octree_id;
- int level;
-
- Room();
- };
-
- mutable RID_Owner<Room> room_owner;
-
-
-
- struct Source : public RID_Data {
-
- struct Voice {
-
- RID voice_rid;
- RID sample_rid;
- bool active;
- bool restart;
- float pitch_scale;
- float volume_scale;
- int sample_mix_rate;
-
-
- float last_volume;
- float last_filter_gain;
- float last_filter_cutoff;
- Vector2 last_panning;
- int last_mix_rate;
- RoomReverb last_reverb_room;
- float last_reverb_send;
-
- Voice();
- ~Voice();
- };
-
- struct StreamData {
-
-
- Vector2 panning;
- RoomReverb reverb;
- float reverb_send;
- float volume;
- float filter_gain;
- float filter_cutoff;
-
- struct FilterState {
-
- float ha[2];
- float hb[2];
- } filter_state[4];
-
- StreamData() {
-
- reverb_send=0;
- reverb=ROOM_REVERB_HALL;
- volume=1.0;
- filter_gain=1;
- filter_cutoff=5000;
-
- }
- } stream_data;
-
- RID space;
- Transform2D transform;
- float params[SOURCE_PARAM_MAX];
- AudioServer::AudioStream *stream;
- Vector<Voice> voices;
- int last_voice;
-
- Source();
- };
-
- mutable RID_Owner<Source> source_owner;
-
- struct Listener : public RID_Data {
-
- RID space;
- Transform2D transform;
- float params[LISTENER_PARAM_MAX];
-
- Listener();
- };
-
- mutable RID_Owner<Listener> listener_owner;
-
- struct ActiveVoice {
-
- Source *source;
- int voice;
- bool operator<(const ActiveVoice& p_voice) const { return (voice==p_voice.voice)?(source<p_voice.source):(voice<p_voice.voice); }
- ActiveVoice(Source *p_source=NULL,int p_voice=0) { source=p_source; voice=p_voice; }
- };
-
- //Room *cull_rooms[MAX_CULL_ROOMS];
-
- Set<Source*> streaming_sources;
- Set<ActiveVoice> active_voices;
-
- void _clean_up_owner(RID_OwnerBase *p_owner, const char *p_area);
- void _update_sources();
-
-public:
-
- /* SPACE */
- virtual RID space_create();
-
- /* ROOM */
-
- virtual RID room_create();
- virtual void room_set_space(RID p_room,RID p_space);
- virtual RID room_get_space(RID p_room) const;
-
- virtual void room_set_bounds(RID p_room, const PoolVector<Point2>& p_bounds);
- virtual PoolVector<Point2> room_get_bounds(RID p_room) const;
- virtual void room_set_transform(RID p_room, const Transform2D& p_transform);
- virtual Transform2D room_get_transform(RID p_room) const;
-
-
- virtual void room_set_param(RID p_room, RoomParam p_param, float p_value);
- virtual float room_get_param(RID p_room, RoomParam p_param) const;
-
- virtual void room_set_level(RID p_room, int p_level);
- virtual int room_get_level(RID p_room) const;
-
- virtual void room_set_reverb(RID p_room, RoomReverb p_reverb);
- virtual RoomReverb room_get_reverb(RID p_room) const;
-
- //useful for underwater or rooms with very strange conditions
- virtual void room_set_force_params_to_all_sources(RID p_room, bool p_force);
- virtual bool room_is_forcing_params_to_all_sources(RID p_room) const;
-
- /* SOURCE */
-
- virtual RID source_create(RID p_space);
-
- virtual void source_set_polyphony(RID p_source,int p_voice_count);
- virtual int source_get_polyphony(RID p_source) const;
-
- virtual void source_set_transform(RID p_source, const Transform2D& p_transform);
- virtual Transform2D source_get_transform(RID p_source) const;
-
- virtual void source_set_param(RID p_source, SourceParam p_param, float p_value);
- virtual float source_get_param(RID p_source, SourceParam p_param) const;
-
- virtual void source_set_audio_stream(RID p_source, AudioServer::AudioStream *p_stream); //null to unset
- virtual SourceVoiceID source_play_sample(RID p_source, RID p_sample, int p_mix_rate, int p_voice=SOURCE_NEXT_VOICE);
- /* VOICES */
- virtual void source_voice_set_pitch_scale(RID p_source, SourceVoiceID p_voice, float p_pitch_scale);
- virtual void source_voice_set_volume_scale_db(RID p_source, SourceVoiceID p_voice, float p_volume);
-
- virtual bool source_is_voice_active(RID p_source, SourceVoiceID p_voice) const;
- virtual void source_stop_voice(RID p_source, SourceVoiceID p_voice);
-
- /* LISTENER */
-
- virtual RID listener_create();
- virtual void listener_set_space(RID p_listener, RID p_space);
-
- virtual void listener_set_transform(RID p_listener, const Transform2D& p_transform);
- virtual Transform2D listener_get_transform(RID p_listener) const;
-
- virtual void listener_set_param(RID p_listener, ListenerParam p_param, float p_value);
- virtual float listener_get_param(RID p_listener, ListenerParam p_param) const;
-
-
- /* MISC */
-
- virtual void free(RID p_id);
-
- virtual void init();
- virtual void update(float p_delta);
- virtual void finish();
-
- SpatialSound2DServerSW();
-};
-
-#endif // SPATIAL_SOUND_2D_SERVER_SW_H
diff --git a/servers/spatial_sound_2d_server.cpp b/servers/spatial_sound_2d_server.cpp
deleted file mode 100644
index 90f384ea2e..0000000000
--- a/servers/spatial_sound_2d_server.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/*************************************************************************/
-/* spatial_sound_2d_server.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "spatial_sound_2d_server.h"
-
-SpatialSound2DServer *SpatialSound2DServer::singleton=NULL;
-
-
-SpatialSound2DServer *SpatialSound2DServer::get_singleton() {
-
- return singleton;
-}
-
-
-SpatialSound2DServer::SpatialSound2DServer() {
-
- ERR_FAIL_COND(singleton!=NULL);
- singleton=this;
-}
diff --git a/servers/spatial_sound_2d_server.h b/servers/spatial_sound_2d_server.h
deleted file mode 100644
index 331caf8198..0000000000
--- a/servers/spatial_sound_2d_server.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/*************************************************************************/
-/* spatial_sound_2d_server.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef SPATIAL_SOUND_2D_SERVER_H
-#define SPATIAL_SOUND_2D_SERVER_H
-
-#include "object.h"
-#include "bsp_tree.h"
-#include "servers/audio_server.h"
-
-class SpatialSound2DServer : public Object {
-
- GDCLASS(SpatialSound2DServer,Object);
- static SpatialSound2DServer *singleton;
-public:
-
-
- enum {
- SOURCE_INVALID_VOICE=-1,
- SOURCE_NEXT_VOICE=-2,
- };
-
- typedef int SourceVoiceID;
-
- /* SPACE */
- virtual RID space_create()=0;
-
- /* ROOM */
-
- virtual RID room_create()=0;
- virtual void room_set_space(RID p_room,RID p_space)=0;
- virtual RID room_get_space(RID p_room) const=0;
-
-
- virtual void room_set_bounds(RID p_room, const PoolVector<Point2>& p_bounds)=0;
- virtual PoolVector<Point2> room_get_bounds(RID p_room) const=0;
- virtual void room_set_transform(RID p_room, const Transform2D& p_transform)=0;
- virtual Transform2D room_get_transform(RID p_room) const=0;
-
- enum RoomParam {
- ROOM_PARAM_PITCH_SCALE,
- ROOM_PARAM_VOLUME_SCALE_DB,
- ROOM_PARAM_REVERB_SEND,
- ROOM_PARAM_CHORUS_SEND,
- ROOM_PARAM_ATTENUATION_SCALE,
- ROOM_PARAM_ATTENUATION_HF_CUTOFF,
- ROOM_PARAM_ATTENUATION_HF_FLOOR_DB,
- ROOM_PARAM_ATTENUATION_HF_RATIO_EXP,
- ROOM_PARAM_ATTENUATION_REVERB_SCALE,
- ROOM_PARAM_MAX
- };
-
- virtual void room_set_param(RID p_room, RoomParam p_param, float p_value)=0;
- virtual float room_get_param(RID p_room, RoomParam p_param) const=0;
-
- enum RoomReverb {
- ROOM_REVERB_SMALL,
- ROOM_REVERB_MEDIUM,
- ROOM_REVERB_LARGE,
- ROOM_REVERB_HALL
- };
-
- virtual void room_set_reverb(RID p_room, RoomReverb p_reverb)=0;
- virtual RoomReverb room_get_reverb(RID p_room) const=0;
-
- virtual void room_set_level(RID p_room, int p_level)=0;
- virtual int room_get_level(RID p_room) const=0;
-
- //useful for underwater or rooms with very strange conditions
- virtual void room_set_force_params_to_all_sources(RID p_room, bool p_force)=0;
- virtual bool room_is_forcing_params_to_all_sources(RID p_room) const=0;
-
- /* SOURCE */
-
- virtual RID source_create(RID p_space)=0;
-
- virtual void source_set_transform(RID p_source, const Transform2D& p_transform)=0;
- virtual Transform2D source_get_transform(RID p_source) const=0;
-
- virtual void source_set_polyphony(RID p_source,int p_voice_count)=0;
- virtual int source_get_polyphony(RID p_source) const=0;
-
- enum SourceParam {
-
- SOURCE_PARAM_VOLUME_DB,
- SOURCE_PARAM_PITCH_SCALE,
- SOURCE_PARAM_ATTENUATION_MIN_DISTANCE,
- SOURCE_PARAM_ATTENUATION_MAX_DISTANCE,
- SOURCE_PARAM_ATTENUATION_DISTANCE_EXP,
- SOURCE_PARAM_MAX
- };
-
- virtual void source_set_param(RID p_source, SourceParam p_param, float p_value)=0;
- virtual float source_get_param(RID p_source, SourceParam p_param) const=0;
-
- virtual void source_set_audio_stream(RID p_source, AudioServer::AudioStream *p_stream)=0; //null to unset
- virtual SourceVoiceID source_play_sample(RID p_source, RID p_sample, int p_mix_rate, int p_voice=SOURCE_NEXT_VOICE)=0;
- //voices
- virtual void source_voice_set_pitch_scale(RID p_source,SourceVoiceID p_voice, float p_pitch_scale)=0;
- virtual void source_voice_set_volume_scale_db(RID p_source,SourceVoiceID p_voice, float p_volume_db)=0;
-
- virtual bool source_is_voice_active(RID p_source,SourceVoiceID p_voice) const=0;
- virtual void source_stop_voice(RID p_source,SourceVoiceID p_voice)=0;
-
- /* LISTENER */
-
- enum ListenerParam {
-
- LISTENER_PARAM_VOLUME_SCALE_DB,
- LISTENER_PARAM_PITCH_SCALE,
- LISTENER_PARAM_ATTENUATION_SCALE,
- LISTENER_PARAM_PAN_RANGE,
- LISTENER_PARAM_MAX
- };
-
- virtual RID listener_create()=0;
- virtual void listener_set_space(RID p_listener, RID p_space)=0;
-
- virtual void listener_set_transform(RID p_listener, const Transform2D& p_transform)=0;
- virtual Transform2D listener_get_transform(RID p_listener) const=0;
-
- virtual void listener_set_param(RID p_listener, ListenerParam p_param, float p_value)=0;
- virtual float listener_get_param(RID p_listener, ListenerParam p_param) const=0;
-
- /* MISC */
-
- virtual void free(RID p_id)=0;
-
- virtual void init()=0;
- virtual void update(float p_delta)=0;
- virtual void finish()=0;
-
- static SpatialSound2DServer *get_singleton();
-
- SpatialSound2DServer();
-
-};
-
-#endif // SPATIAL_SOUND_2D_SERVER_H
diff --git a/servers/spatial_sound_server.cpp b/servers/spatial_sound_server.cpp
deleted file mode 100644
index f49367d4c0..0000000000
--- a/servers/spatial_sound_server.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/*************************************************************************/
-/* spatial_sound_server.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "spatial_sound_server.h"
-
-SpatialSoundServer *SpatialSoundServer::singleton=NULL;
-
-
-SpatialSoundServer *SpatialSoundServer::get_singleton() {
-
- return singleton;
-}
-
-
-SpatialSoundServer::SpatialSoundServer() {
-
- ERR_FAIL_COND(singleton!=NULL);
- singleton=this;
-}
diff --git a/servers/spatial_sound_server.h b/servers/spatial_sound_server.h
deleted file mode 100644
index 69ef71c84f..0000000000
--- a/servers/spatial_sound_server.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/*************************************************************************/
-/* spatial_sound_server.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef SPATIAL_SOUND_SERVER_H
-#define SPATIAL_SOUND_SERVER_H
-
-#include "object.h"
-#include "bsp_tree.h"
-#include "servers/audio_server.h"
-
-class SpatialSoundServer : public Object {
- GDCLASS(SpatialSoundServer,Object);
-
- static SpatialSoundServer *singleton;
-public:
-
-
- enum {
- SOURCE_INVALID_VOICE=-1,
- SOURCE_NEXT_VOICE=-2,
- };
-
- typedef int SourceVoiceID;
-
- /* SPACE */
- virtual RID space_create()=0;
-
- /* ROOM */
-
- virtual RID room_create()=0;
- virtual void room_set_space(RID p_room,RID p_space)=0;
- virtual RID room_get_space(RID p_room) const=0;
-
-
- virtual void room_set_bounds(RID p_room, const BSP_Tree& p_bounds)=0;
- virtual BSP_Tree room_get_bounds(RID p_room) const=0;
- virtual void room_set_transform(RID p_room, const Transform& p_transform)=0;
- virtual Transform room_get_transform(RID p_room) const=0;
-
- enum RoomParam {
- ROOM_PARAM_SPEED_OF_SOUND_SCALE,
- ROOM_PARAM_DOPPLER_FACTOR,
- ROOM_PARAM_PITCH_SCALE,
- ROOM_PARAM_VOLUME_SCALE_DB,
- ROOM_PARAM_REVERB_SEND,
- ROOM_PARAM_CHORUS_SEND,
- ROOM_PARAM_ATTENUATION_SCALE,
- ROOM_PARAM_ATTENUATION_HF_CUTOFF,
- ROOM_PARAM_ATTENUATION_HF_FLOOR_DB,
- ROOM_PARAM_ATTENUATION_HF_RATIO_EXP,
- ROOM_PARAM_ATTENUATION_REVERB_SCALE,
- ROOM_PARAM_MAX
- };
-
- virtual void room_set_param(RID p_room, RoomParam p_param, float p_value)=0;
- virtual float room_get_param(RID p_room, RoomParam p_param) const=0;
-
- enum RoomReverb {
- ROOM_REVERB_SMALL,
- ROOM_REVERB_MEDIUM,
- ROOM_REVERB_LARGE,
- ROOM_REVERB_HALL
- };
-
- virtual void room_set_reverb(RID p_room, RoomReverb p_reverb)=0;
- virtual RoomReverb room_get_reverb(RID p_room) const=0;
-
- virtual void room_set_level(RID p_room, int p_level)=0;
- virtual int room_get_level(RID p_room) const=0;
-
- //useful for underwater or rooms with very strange conditions
- virtual void room_set_force_params_to_all_sources(RID p_room, bool p_force)=0;
- virtual bool room_is_forcing_params_to_all_sources(RID p_room) const=0;
-
- /* SOURCE */
-
- virtual RID source_create(RID p_space)=0;
-
- virtual void source_set_transform(RID p_source, const Transform& p_transform)=0;
- virtual Transform source_get_transform(RID p_source) const=0;
-
- virtual void source_set_polyphony(RID p_source,int p_voice_count)=0;
- virtual int source_get_polyphony(RID p_source) const=0;
-
- enum SourceParam {
-
- SOURCE_PARAM_VOLUME_DB,
- SOURCE_PARAM_PITCH_SCALE,
- SOURCE_PARAM_ATTENUATION_MIN_DISTANCE,
- SOURCE_PARAM_ATTENUATION_MAX_DISTANCE,
- SOURCE_PARAM_ATTENUATION_DISTANCE_EXP,
- SOURCE_PARAM_EMISSION_CONE_DEGREES,
- SOURCE_PARAM_EMISSION_CONE_ATTENUATION_DB,
- SOURCE_PARAM_MAX
- };
-
- virtual void source_set_param(RID p_source, SourceParam p_param, float p_value)=0;
- virtual float source_get_param(RID p_source, SourceParam p_param) const=0;
-
- virtual void source_set_audio_stream(RID p_source, AudioServer::AudioStream *p_stream)=0; //null to unset
- virtual SourceVoiceID source_play_sample(RID p_source, RID p_sample, int p_mix_rate, int p_voice=SOURCE_NEXT_VOICE)=0;
- //voices
- virtual void source_voice_set_pitch_scale(RID p_source,SourceVoiceID p_voice, float p_pitch_scale)=0;
- virtual void source_voice_set_volume_scale_db(RID p_source,SourceVoiceID p_voice, float p_volume_db)=0;
-
- virtual bool source_is_voice_active(RID p_source,SourceVoiceID p_voice) const=0;
- virtual void source_stop_voice(RID p_source,SourceVoiceID p_voice)=0;
-
- /* LISTENER */
-
- enum ListenerParam {
-
- LISTENER_PARAM_VOLUME_SCALE_DB,
- LISTENER_PARAM_PITCH_SCALE,
- LISTENER_PARAM_ATTENUATION_SCALE,
- LISTENER_PARAM_RECEPTION_CONE_DEGREES,
- LISTENER_PARAM_RECEPTION_CONE_ATTENUATION_DB,
- LISTENER_PARAM_MAX
- };
-
- virtual RID listener_create()=0;
- virtual void listener_set_space(RID p_listener, RID p_space)=0;
-
- virtual void listener_set_transform(RID p_listener, const Transform& p_transform)=0;
- virtual Transform listener_get_transform(RID p_listener) const=0;
-
- virtual void listener_set_param(RID p_listener, ListenerParam p_param, float p_value)=0;
- virtual float listener_get_param(RID p_listener, ListenerParam p_param) const=0;
-
- /* MISC */
-
- virtual void free(RID p_id)=0;
-
- virtual void init()=0;
- virtual void update(float p_delta)=0;
- virtual void finish()=0;
-
- static SpatialSoundServer *get_singleton();
-
- SpatialSoundServer();
-};
-
-#endif // SPATIAL_SOUND_SERVER_H
diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h
index 94a514e7c1..44bc9bfef5 100644
--- a/servers/visual/rasterizer.h
+++ b/servers/visual/rasterizer.h
@@ -1226,7 +1226,7 @@ public:
virtual void multimesh_instance_set_color(RID p_multimesh,int p_index,const Color& p_color)=0;
virtual RID multimesh_get_mesh(RID p_multimesh) const=0;
- virtual AABB multimesh_get_aabb(RID p_multimesh) const=0;;
+ virtual AABB multimesh_get_aabb(RID p_multimesh) const=0;
virtual Transform multimesh_instance_get_transform(RID p_multimesh,int p_index) const=0;
virtual Color multimesh_instance_get_color(RID p_multimesh,int p_index) const=0;
diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp
index 6a6f437816..7dfd9822f7 100644
--- a/servers/visual/shader_language.cpp
+++ b/servers/visual/shader_language.cpp
@@ -374,7 +374,7 @@ ShaderLanguage::Token ShaderLanguage::_get_token() {
char_idx++;
return _make_token(TK_OP_GREATER_EQUAL);
} else if (GETCHAR(0)=='<') {
- char_idx++;;
+ char_idx++;
if (GETCHAR(0)=='=') {
char_idx++;
return _make_token(TK_OP_ASSIGN_SHIFT_RIGHT);
@@ -1966,7 +1966,7 @@ bool ShaderLanguage::_parse_function_arguments(BlockNode* p_block,const Map<Stri
return true;
}
- _set_tkpos(pos);;
+ _set_tkpos(pos);
while(true) {
@@ -2557,7 +2557,7 @@ ShaderLanguage::Node* ShaderLanguage::_parse_expression(BlockNode* p_block,const
} else if (l==2) {
member_type=DataType(dt-2);
} else if (l==3) {
- member_type=DataType(dt-1);;
+ member_type=DataType(dt-1);
} else if (l==4) {
member_type=dt;
} else {
diff --git a/servers/visual/visual_server_canvas.cpp b/servers/visual/visual_server_canvas.cpp
index 2f7bcccf73..f4031b711d 100644
--- a/servers/visual/visual_server_canvas.cpp
+++ b/servers/visual/visual_server_canvas.cpp
@@ -934,7 +934,7 @@ void VisualServerCanvas::canvas_light_set_shadow_buffer_size(RID p_light, int p_
RasterizerCanvas::Light *clight = canvas_light_owner.get(p_light);
ERR_FAIL_COND(!clight);
- int new_size = nearest_power_of_2(p_size);;
+ int new_size = nearest_power_of_2(p_size);
if (new_size==clight->shadow_buffer_size)
return;
diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp
index e3bc0fb6c6..279da9149e 100644
--- a/servers/visual/visual_server_raster.cpp
+++ b/servers/visual/visual_server_raster.cpp
@@ -123,6 +123,7 @@ void VisualServerRaster::finish(){
VSG::rasterizer->finalize();
}
+
/* STATUS INFORMATION */
diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp
index da73980e08..1799585576 100644
--- a/servers/visual_server.cpp
+++ b/servers/visual_server.cpp
@@ -156,7 +156,7 @@ RID VisualServer::_make_test_cube() {
PoolVector<Vector3> uvs;
int vtx_idx=0;
-#define ADD_VTX(m_idx);\
+#define ADD_VTX(m_idx) \
vertices.push_back( face_points[m_idx] );\
normals.push_back( normal_points[m_idx] );\
tangents.push_back( normal_points[m_idx][1] );\
diff --git a/thirdparty/README.md b/thirdparty/README.md
index 42642c09b7..d0e8c05183 100644
--- a/thirdparty/README.md
+++ b/thirdparty/README.md
@@ -209,7 +209,7 @@ Files extracted from upstream source:
## zlib
- Upstream: http://www.zlib.net/
-- Version: 1.2.10
+- Version: 1.2.11
- License: zlib
Files extracted from upstream source:
diff --git a/thirdparty/zlib/deflate.c b/thirdparty/zlib/deflate.c
index 2ad890e354..1ec761448d 100644
--- a/thirdparty/zlib/deflate.c
+++ b/thirdparty/zlib/deflate.c
@@ -52,7 +52,7 @@
#include "deflate.h"
const char deflate_copyright[] =
- " deflate 1.2.10 Copyright 1995-2017 Jean-loup Gailly and Mark Adler ";
+ " deflate 1.2.11 Copyright 1995-2017 Jean-loup Gailly and Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
@@ -586,7 +586,8 @@ int ZEXPORT deflateParams(strm, level, strategy)
}
func = configuration_table[s->level].func;
- if ((strategy != s->strategy || func != configuration_table[level].func)) {
+ if ((strategy != s->strategy || func != configuration_table[level].func) &&
+ s->high_water) {
/* Flush the last buffer: */
int err = deflate(strm, Z_BLOCK);
if (err == Z_STREAM_ERROR)
@@ -1671,8 +1672,6 @@ local block_state deflate_stored(s, flush)
len = left + s->strm->avail_in; /* limit len to the input */
if (len > have)
len = have; /* limit len to the output */
- if (left > len)
- left = len; /* limit window pull to len */
/* If the stored block would be less than min_block in length, or if
* unable to copy all of the available input when flushing, then try
@@ -1681,13 +1680,13 @@ local block_state deflate_stored(s, flush)
*/
if (len < min_block && ((len == 0 && flush != Z_FINISH) ||
flush == Z_NO_FLUSH ||
- len - left != s->strm->avail_in))
+ len != left + s->strm->avail_in))
break;
/* Make a dummy stored block in pending to get the header bytes,
* including any pending bits. This also updates the debugging counts.
*/
- last = flush == Z_FINISH && len - left == s->strm->avail_in ? 1 : 0;
+ last = flush == Z_FINISH && len == left + s->strm->avail_in ? 1 : 0;
_tr_stored_block(s, (char *)0, 0L, last);
/* Replace the lengths in the dummy stored block with len. */
@@ -1699,14 +1698,16 @@ local block_state deflate_stored(s, flush)
/* Write the stored block header bytes. */
flush_pending(s->strm);
- /* Update debugging counts for the data about to be copied. */
#ifdef ZLIB_DEBUG
+ /* Update debugging counts for the data about to be copied. */
s->compressed_len += len << 3;
s->bits_sent += len << 3;
#endif
/* Copy uncompressed bytes from the window to next_out. */
if (left) {
+ if (left > len)
+ left = len;
zmemcpy(s->strm->next_out, s->window + s->block_start, left);
s->strm->next_out += left;
s->strm->avail_out -= left;
@@ -1756,6 +1757,8 @@ local block_state deflate_stored(s, flush)
s->block_start = s->strstart;
s->insert += MIN(used, s->w_size - s->insert);
}
+ if (s->high_water < s->strstart)
+ s->high_water = s->strstart;
/* If the last block was written to next_out, then done. */
if (last)
@@ -1783,6 +1786,8 @@ local block_state deflate_stored(s, flush)
read_buf(s->strm, s->window + s->strstart, have);
s->strstart += have;
}
+ if (s->high_water < s->strstart)
+ s->high_water = s->strstart;
/* There was not enough avail_out to write a complete worthy or flushed
* stored block to next_out. Write a stored block to pending instead, if we
diff --git a/thirdparty/zlib/gzlib.c b/thirdparty/zlib/gzlib.c
index e142ffb3d7..4105e6aff9 100644
--- a/thirdparty/zlib/gzlib.c
+++ b/thirdparty/zlib/gzlib.c
@@ -1,5 +1,5 @@
/* gzlib.c -- zlib functions common to reading and writing gzip files
- * Copyright (C) 2004, 2010, 2011, 2012, 2013, 2016 Mark Adler
+ * Copyright (C) 2004-2017 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
diff --git a/thirdparty/zlib/gzwrite.c b/thirdparty/zlib/gzwrite.c
index 1ec1da4095..c7b5651d70 100644
--- a/thirdparty/zlib/gzwrite.c
+++ b/thirdparty/zlib/gzwrite.c
@@ -1,5 +1,5 @@
/* gzwrite.c -- zlib functions for writing gzip files
- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
+ * Copyright (C) 2004-2017 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
diff --git a/thirdparty/zlib/inffast.c b/thirdparty/zlib/inffast.c
index 29eb7d8244..0dbd1dbc09 100644
--- a/thirdparty/zlib/inffast.c
+++ b/thirdparty/zlib/inffast.c
@@ -1,5 +1,5 @@
/* inffast.c -- fast decoding
- * Copyright (C) 1995-2008, 2010, 2013, 2016 Mark Adler
+ * Copyright (C) 1995-2017 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
diff --git a/thirdparty/zlib/inftrees.c b/thirdparty/zlib/inftrees.c
index 8a904ddbce..2ea08fc13e 100644
--- a/thirdparty/zlib/inftrees.c
+++ b/thirdparty/zlib/inftrees.c
@@ -9,7 +9,7 @@
#define MAXBITS 15
const char inflate_copyright[] =
- " inflate 1.2.10 Copyright 1995-2017 Mark Adler ";
+ " inflate 1.2.11 Copyright 1995-2017 Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
@@ -62,7 +62,7 @@ unsigned short FAR *work;
35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
static const unsigned short lext[31] = { /* Length codes 257..285 extra */
16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
- 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 192, 202};
+ 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 202};
static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
diff --git a/thirdparty/zlib/trees.c b/thirdparty/zlib/trees.c
index 357f313925..50cf4b4571 100644
--- a/thirdparty/zlib/trees.c
+++ b/thirdparty/zlib/trees.c
@@ -1,5 +1,5 @@
/* trees.c -- output deflated data using Huffman coding
- * Copyright (C) 1995-2016 Jean-loup Gailly
+ * Copyright (C) 1995-2017 Jean-loup Gailly
* detect_data_type() function provided freely by Cosmin Truta, 2006
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -906,7 +906,7 @@ void ZLIB_INTERNAL _tr_align(s)
/* ===========================================================================
* Determine the best encoding for the current block: dynamic trees, static
- * trees or store, and output the encoded block to the zip file.
+ * trees or store, and write out the encoded block.
*/
void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
deflate_state *s;
diff --git a/thirdparty/zlib/zlib.h b/thirdparty/zlib/zlib.h
index dc90dc8d22..f09cdaf1e0 100644
--- a/thirdparty/zlib/zlib.h
+++ b/thirdparty/zlib/zlib.h
@@ -1,5 +1,5 @@
/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.2.10, January 2nd, 2017
+ version 1.2.11, January 15th, 2017
Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
@@ -37,11 +37,11 @@
extern "C" {
#endif
-#define ZLIB_VERSION "1.2.10"
-#define ZLIB_VERNUM 0x12a0
+#define ZLIB_VERSION "1.2.11"
+#define ZLIB_VERNUM 0x12b0
#define ZLIB_VER_MAJOR 1
#define ZLIB_VER_MINOR 2
-#define ZLIB_VER_REVISION 10
+#define ZLIB_VER_REVISION 11
#define ZLIB_VER_SUBREVISION 0
/*
@@ -712,10 +712,11 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
used to switch between compression and straight copy of the input data, or
to switch to a different kind of input data requiring a different strategy.
If the compression approach (which is a function of the level) or the
- strategy is changed, then the input available so far is compressed with the
- old level and strategy using deflate(strm, Z_BLOCK). There are three
- approaches for the compression levels 0, 1..3, and 4..9 respectively. The
- new level and strategy will take effect at the next call of deflate().
+ strategy is changed, and if any input has been consumed in a previous
+ deflate() call, then the input available so far is compressed with the old
+ level and strategy using deflate(strm, Z_BLOCK). There are three approaches
+ for the compression levels 0, 1..3, and 4..9 respectively. The new level
+ and strategy will take effect at the next call of deflate().
If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does
not have enough output space to complete, then the parameter change will not
diff --git a/thirdparty/zlib/zutil.c b/thirdparty/zlib/zutil.c
index 56534fba0f..a76c6b0c7e 100644
--- a/thirdparty/zlib/zutil.c
+++ b/thirdparty/zlib/zutil.c
@@ -1,5 +1,5 @@
/* zutil.c -- target dependent utility functions for the compression library
- * Copyright (C) 1995-2005, 2010, 2011, 2012, 2016 Jean-loup Gailly
+ * Copyright (C) 1995-2017 Jean-loup Gailly
* For conditions of distribution and use, see copyright notice in zlib.h
*/
diff --git a/tools/collada/collada.cpp b/tools/collada/collada.cpp
index daf30b00d7..a23fd84aa0 100644
--- a/tools/collada/collada.cpp
+++ b/tools/collada/collada.cpp
@@ -29,6 +29,7 @@
#ifdef TOOLS_ENABLED
#include "collada.h"
+
#include "stdio.h"
//#define DEBUG_DEFAULT_ANIMATION
@@ -1295,7 +1296,7 @@ void Collada::_parse_skin_controller(XMLParser& parser,String p_id) {
int stride=1;
if (parser.has_attribute("stride"))
- stride=parser.get_attribute_value("stride").to_int();;
+ stride=parser.get_attribute_value("stride").to_int();
skindata.sources[current_source].stride=stride;
COLLADA_PRINT("section: "+current_source+" stride "+itos(skindata.sources[current_source].stride));
@@ -1470,7 +1471,7 @@ void Collada::_parse_morph_controller(XMLParser& parser, String p_id) {
int stride=1;
if (parser.has_attribute("stride"))
- stride=parser.get_attribute_value("stride").to_int();;
+ stride=parser.get_attribute_value("stride").to_int();
morphdata.sources[current_source].stride=stride;
COLLADA_PRINT("section: "+current_source+" stride "+itos(morphdata.sources[current_source].stride));
diff --git a/tools/doc/doc_data.cpp b/tools/doc/doc_data.cpp
index f18265c541..d51dc886b2 100644
--- a/tools/doc/doc_data.cpp
+++ b/tools/doc/doc_data.cpp
@@ -26,9 +26,9 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "version.h"
#include "doc_data.h"
+#include "version.h"
#include "global_constants.h"
#include "globals.h"
#include "script_language.h"
diff --git a/tools/doc/doc_dump.cpp b/tools/doc/doc_dump.cpp
index e1ffcfbbb2..5ebba596e9 100644
--- a/tools/doc/doc_dump.cpp
+++ b/tools/doc/doc_dump.cpp
@@ -26,8 +26,9 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "version.h"
#include "doc_dump.h"
+
+#include "version.h"
#include "os/file_access.h"
#include "scene/main/node.h"
diff --git a/tools/doc/doc_dump.h b/tools/doc/doc_dump.h
index 4577af078e..84629b89c8 100644
--- a/tools/doc/doc_dump.h
+++ b/tools/doc/doc_dump.h
@@ -29,7 +29,7 @@
#ifndef DOC_DUMP_H
#define DOC_DUMP_H
-#include "object_type_db.h"
+#include "class_db.h"
class DocDump {
public:
diff --git a/tools/editor/animation_editor.cpp b/tools/editor/animation_editor.cpp
index cb95f5fb7d..759d33dea8 100644
--- a/tools/editor/animation_editor.cpp
+++ b/tools/editor/animation_editor.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "animation_editor.h"
+
#include "editor_settings.h"
#include "os/keyboard.h"
#include "os/os.h"
@@ -518,7 +519,7 @@ public:
case Animation::TYPE_VALUE: {
if (name=="value") {
- r_ret = animation->track_get_key_value(track,key);;
+ r_ret = animation->track_get_key_value(track,key);
return true;
}
@@ -1916,7 +1917,7 @@ void AnimationKeyEditor::_track_editor_gui_input(const InputEvent& p_input) {
else
_menu_track(TRACK_MENU_DUPLICATE);
- accept_event();;
+ accept_event();
} else if (p_input.key.scancode==KEY_DELETE && p_input.key.pressed && click.click==ClickOver::CLICK_NONE) {
@@ -2917,7 +2918,7 @@ void AnimationKeyEditor::_track_editor_gui_input(const InputEvent& p_input) {
} break;
case Animation::TYPE_VALUE: {
- Variant v = animation->track_get_key_value(idx,mouse_over.over_key);;
+ Variant v = animation->track_get_key_value(idx,mouse_over.over_key);
//text+="value: "+String(v)+"\n";
bool prop_exists=false;
@@ -3706,7 +3707,7 @@ void AnimationKeyEditor::_pane_drag(const Point2& p_delta) {
ecs.y-=p_delta.y;
if (ecs.y<100)
ecs.y=100;
- ec->set_custom_minimum_size(ecs);;
+ ec->set_custom_minimum_size(ecs);
}
diff --git a/tools/editor/asset_library_editor_plugin.cpp b/tools/editor/asset_library_editor_plugin.cpp
index ad17364685..6ba7a7e79b 100644
--- a/tools/editor/asset_library_editor_plugin.cpp
+++ b/tools/editor/asset_library_editor_plugin.cpp
@@ -27,12 +27,12 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "asset_library_editor_plugin.h"
+
#include "editor_node.h"
#include "editor_settings.h"
#include "io/json.h"
-
void EditorAssetLibraryItem::configure(const String& p_title,int p_asset_id,const String& p_category,int p_category_id,const String& p_author,int p_author_id,int p_rating,const String& p_cost) {
title->set_text(p_title);
@@ -789,7 +789,7 @@ void EditorAssetLibrary::_image_request_completed(int p_status, int p_code, cons
}
}
- image_queue[p_queue_id].request->queue_delete();;
+ image_queue[p_queue_id].request->queue_delete();
image_queue.erase(p_queue_id);
_update_image_queue();
diff --git a/tools/editor/call_dialog.cpp b/tools/editor/call_dialog.cpp
index f8966093f6..6dfeb87dfd 100644
--- a/tools/editor/call_dialog.cpp
+++ b/tools/editor/call_dialog.cpp
@@ -30,7 +30,7 @@
#if 0
#include "scene/gui/label.h"
-#include "object_type_db.h"
+#include "class_db.h"
#include "print_string.h"
diff --git a/tools/editor/code_editor.cpp b/tools/editor/code_editor.cpp
index 00767fd297..0a25b43716 100644
--- a/tools/editor/code_editor.cpp
+++ b/tools/editor/code_editor.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "code_editor.h"
+
#include "editor_settings.h"
#include "scene/gui/margin_container.h"
#include "scene/gui/separator.h"
diff --git a/tools/editor/connections_dialog.cpp b/tools/editor/connections_dialog.cpp
index 92dd206030..91ba419c97 100644
--- a/tools/editor/connections_dialog.cpp
+++ b/tools/editor/connections_dialog.cpp
@@ -28,10 +28,7 @@
/*************************************************************************/
#include "connections_dialog.h"
-
#include "scene/gui/label.h"
-
-
#include "print_string.h"
#include "editor_settings.h"
#include "editor_node.h"
diff --git a/tools/editor/create_dialog.cpp b/tools/editor/create_dialog.cpp
index b69234e704..53e968f389 100644
--- a/tools/editor/create_dialog.cpp
+++ b/tools/editor/create_dialog.cpp
@@ -28,7 +28,7 @@
/*************************************************************************/
#include "create_dialog.h"
-#include "object_type_db.h"
+#include "class_db.h"
#include "print_string.h"
#include "scene/gui/box_container.h"
#include "editor_node.h"
diff --git a/tools/editor/dependency_editor.cpp b/tools/editor/dependency_editor.cpp
index 20e185104b..a01383a868 100644
--- a/tools/editor/dependency_editor.cpp
+++ b/tools/editor/dependency_editor.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "dependency_editor.h"
+
#include "os/file_access.h"
#include "scene/gui/margin_container.h"
#include "io/resource_loader.h"
diff --git a/tools/editor/editor_asset_installer.cpp b/tools/editor/editor_asset_installer.cpp
index 9992100ff8..8af01012a4 100644
--- a/tools/editor/editor_asset_installer.cpp
+++ b/tools/editor/editor_asset_installer.cpp
@@ -27,10 +27,12 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_asset_installer.h"
+
#include "io/zip_io.h"
#include "os/dir_access.h"
#include "os/file_access.h"
#include "editor_node.h"
+
void EditorAssetInstaller::_update_subitems(TreeItem* p_item,bool p_check,bool p_first) {
diff --git a/tools/editor/editor_autoload_settings.cpp b/tools/editor/editor_autoload_settings.cpp
index 087bf1a3b7..0038ab48d5 100644
--- a/tools/editor/editor_autoload_settings.cpp
+++ b/tools/editor/editor_autoload_settings.cpp
@@ -26,12 +26,10 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-
#include "editor_autoload_settings.h"
#include "globals.h"
#include "global_constants.h"
-
#include "editor_node.h"
#define PREVIEW_LIST_MAX_SIZE 10
diff --git a/tools/editor/editor_data.cpp b/tools/editor/editor_data.cpp
index 08b03ae65f..44de1836b6 100644
--- a/tools/editor/editor_data.cpp
+++ b/tools/editor/editor_data.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_data.h"
+
#include "globals.h"
#include "editor_settings.h"
#include "os/dir_access.h"
diff --git a/tools/editor/editor_dir_dialog.cpp b/tools/editor/editor_dir_dialog.cpp
index e2b7d475b0..bb9ddc2aef 100644
--- a/tools/editor/editor_dir_dialog.cpp
+++ b/tools/editor/editor_dir_dialog.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_dir_dialog.h"
+
#include "os/os.h"
#include "os/keyboard.h"
#include "tools/editor/editor_settings.h"
diff --git a/tools/editor/editor_file_dialog.cpp b/tools/editor/editor_file_dialog.cpp
index d4ca515493..e23e2419d8 100644
--- a/tools/editor/editor_file_dialog.cpp
+++ b/tools/editor/editor_file_dialog.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_file_dialog.h"
+
#include "scene/gui/label.h"
#include "scene/gui/center_container.h"
#include "print_string.h"
@@ -36,6 +37,7 @@
#include "scene/gui/margin_container.h"
#include "os/file_access.h"
#include "editor_scale.h"
+
EditorFileDialog::GetIconFunc EditorFileDialog::get_icon_func=NULL;
EditorFileDialog::GetIconFunc EditorFileDialog::get_large_icon_func=NULL;
@@ -1150,7 +1152,7 @@ void EditorFileDialog::set_display_mode(DisplayMode p_mode) {
mode_list->set_pressed(true);
}
display_mode=p_mode;
- invalidate();;
+ invalidate();
}
EditorFileDialog::DisplayMode EditorFileDialog::get_display_mode() const{
diff --git a/tools/editor/editor_file_system.cpp b/tools/editor/editor_file_system.cpp
index 1d32415be9..39869beef4 100644
--- a/tools/editor/editor_file_system.cpp
+++ b/tools/editor/editor_file_system.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_file_system.h"
+
#include "globals.h"
#include "io/resource_loader.h"
#include "os/os.h"
diff --git a/tools/editor/editor_fonts.cpp b/tools/editor/editor_fonts.cpp
index 3c846fc538..3652a59978 100644
--- a/tools/editor/editor_fonts.cpp
+++ b/tools/editor/editor_fonts.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_fonts.h"
+
#include "doc_font.h"
#include "doc_title_font.h"
#include "doc_code_font.h"
diff --git a/tools/editor/editor_help.cpp b/tools/editor/editor_help.cpp
index f96a02bc52..03e631cbc3 100644
--- a/tools/editor/editor_help.cpp
+++ b/tools/editor/editor_help.cpp
@@ -27,15 +27,13 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_help.h"
+
#include "editor_node.h"
#include "editor_settings.h"
#include "os/keyboard.h"
#include "doc_data_compressed.h"
#include "tools/editor/plugins/script_editor_plugin.h"
-
-#include "os/keyboard.h"
-
void EditorHelpSearch::popup() {
popup_centered_ratio(0.6);
if (search_box->get_text()!="") {
diff --git a/tools/editor/editor_import_export.cpp b/tools/editor/editor_import_export.cpp
index cf83052ee0..a94604743c 100644
--- a/tools/editor/editor_import_export.cpp
+++ b/tools/editor/editor_import_export.cpp
@@ -26,8 +26,9 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "version.h"
#include "editor_import_export.h"
+
+#include "version.h"
#include "script_language.h"
#include "globals.h"
#include "os/file_access.h"
@@ -1174,7 +1175,7 @@ Error EditorExportPlatform::save_pack_file(void *p_userdata,const String& p_path
pd->f->store_32(cs.length());
pd->f->store_buffer((uint8_t*)cs.get_data(),cs.length());
TempData td;
- td.pos=pd->f->get_pos();;
+ td.pos=pd->f->get_pos();
td.ofs=pd->ftmp->get_pos();
td.size=p_data.size();
pd->file_ofs.push_back(td);
diff --git a/tools/editor/editor_initialize_ssl.cpp b/tools/editor/editor_initialize_ssl.cpp
index 9ac4f90e9f..c08dcc6656 100644
--- a/tools/editor/editor_initialize_ssl.cpp
+++ b/tools/editor/editor_initialize_ssl.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_initialize_ssl.h"
+
#include "certs_compressed.h"
#include "io/stream_peer_ssl.h"
#include "io/compression.h"
diff --git a/tools/editor/editor_log.cpp b/tools/editor/editor_log.cpp
index fd2da2e4c0..6b6a1b9988 100644
--- a/tools/editor/editor_log.cpp
+++ b/tools/editor/editor_log.cpp
@@ -26,8 +26,9 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "version.h"
#include "editor_log.h"
+
+#include "version.h"
#include "scene/gui/center_container.h"
#include "editor_node.h"
diff --git a/tools/editor/editor_name_dialog.cpp b/tools/editor/editor_name_dialog.cpp
index e7dcea4d40..da9f25f1e3 100644
--- a/tools/editor/editor_name_dialog.cpp
+++ b/tools/editor/editor_name_dialog.cpp
@@ -26,9 +26,9 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-
#include "editor_name_dialog.h"
-#include "object_type_db.h"
+
+#include "class_db.h"
#include "os/keyboard.h"
void EditorNameDialog::_line_gui_input(const InputEvent& p_event) {
diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp
index bb33f19a2b..0c8d786f03 100644
--- a/tools/editor/editor_node.cpp
+++ b/tools/editor/editor_node.cpp
@@ -26,22 +26,20 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "version.h"
#include "editor_node.h"
+
+#include "version.h"
#include "print_string.h"
#include "editor_themes.h"
-
#include "editor_help.h"
#include "core/io/resource_saver.h"
#include "core/io/resource_loader.h"
#include "servers/physics_2d_server.h"
#include "scene/resources/packed_scene.h"
#include "editor_settings.h"
-#include "io_plugins/editor_import_collada.h"
-#include "io_plugins/editor_scene_importer_fbxconv.h"
#include "globals.h"
#include <stdio.h>
-#include "object_type_db.h"
+#include "class_db.h"
#include "os/keyboard.h"
#include "os/os.h"
#include "os/file_access.h"
@@ -56,6 +54,8 @@
#include "io/config_file.h"
#include "animation_editor.h"
#include "io/stream_peer_ssl.h"
+#include "main/input_default.h"
+
// plugins
#include "plugins/sprite_frames_editor_plugin.h"
#include "plugins/texture_region_editor_plugin.h"
@@ -76,7 +76,6 @@
#include "plugins/mesh_instance_editor_plugin.h"
#include "plugins/mesh_editor_plugin.h"
#include "plugins/theme_editor_plugin.h"
-
#include "plugins/tile_map_editor_plugin.h"
#include "plugins/cube_grid_theme_editor_plugin.h"
#include "plugins/shader_editor_plugin.h"
@@ -100,17 +99,19 @@
#include "plugins/color_ramp_editor_plugin.h"
#include "plugins/collision_shape_2d_editor_plugin.h"
#include "plugins/gi_probe_editor_plugin.h"
-#include "main/input_default.h"
+
// end
-#include "tools/editor/editor_settings.h"
-#include "tools/editor/io_plugins/editor_texture_import_plugin.h"
-#include "tools/editor/io_plugins/editor_scene_import_plugin.h"
-#include "tools/editor/io_plugins/editor_font_import_plugin.h"
-#include "tools/editor/io_plugins/editor_sample_import_plugin.h"
-#include "tools/editor/io_plugins/editor_translation_import_plugin.h"
-#include "tools/editor/io_plugins/editor_bitmask_import_plugin.h"
-#include "tools/editor/io_plugins/editor_mesh_import_plugin.h"
-#include "tools/editor/io_plugins/editor_export_scene.h"
+#include "editor_settings.h"
+#include "io_plugins/editor_texture_import_plugin.h"
+#include "io_plugins/editor_scene_import_plugin.h"
+#include "io_plugins/editor_font_import_plugin.h"
+#include "io_plugins/editor_sample_import_plugin.h"
+#include "io_plugins/editor_translation_import_plugin.h"
+#include "io_plugins/editor_bitmask_import_plugin.h"
+#include "io_plugins/editor_mesh_import_plugin.h"
+#include "io_plugins/editor_export_scene.h"
+#include "io_plugins/editor_import_collada.h"
+#include "io_plugins/editor_scene_importer_fbxconv.h"
#include "plugins/editor_preview_plugins.h"
#include "editor_initialize_ssl.h"
@@ -279,7 +280,7 @@ void EditorNode::_notification(int p_what) {
editor_selection->update();
{
- uint32_t p32 = AudioServer::get_singleton()->read_output_peak()>>8;
+ uint32_t p32 = 0;//AudioServer::get_singleton()->read_output_peak()>>8;
float peak = p32==0? -80 : Math::linear2db(p32 / 65535.0);
@@ -830,7 +831,7 @@ bool EditorNode::_find_and_save_edited_subresources(Object *obj,Map<RES,bool>& p
case Variant::DICTIONARY: {
- Dictionary d=obj->get(E->get().name);;
+ Dictionary d=obj->get(E->get().name);
List<Variant> keys;
d.get_key_list(&keys);
for(List<Variant>::Element *E=keys.front();E;E=E->next()) {
@@ -916,7 +917,7 @@ void EditorNode::_save_scene_with_preview(String p_file) {
save.step(TTR("Creating Thumbnail"),3);
#if 0
Image img = VS::get_singleton()->viewport_texture(scree_capture(viewport);
- int preview_size = EditorSettings::get_singleton()->get("filesystem/file_dialog/thumbnail_size");;
+ int preview_size = EditorSettings::get_singleton()->get("filesystem/file_dialog/thumbnail_size");
preview_size*=EDSCALE;
int width,height;
if (img.get_width() > preview_size && img.get_width() >= img.get_height()) {
@@ -1055,7 +1056,7 @@ void EditorNode::_import_action(const String& p_action) {
//accept->get_cancel()->hide();
accept->get_ok()->set_text("Ugh");
accept->set_text("Error importing scene.");
- accept->popup_centered(Size2(300,70));;
+ accept->popup_centered(Size2(300,70));
return;
}
@@ -1071,7 +1072,7 @@ void EditorNode::_import_action(const String& p_action) {
//accept->get_cancel()->hide();
accept->get_ok()->set_text("Ugh");
accept->set_text("Error load scene to update.");
- accept->popup_centered(Size2(300,70));;
+ accept->popup_centered(Size2(300,70));
return;
}
@@ -1112,7 +1113,7 @@ void EditorNode::_import(const String &p_file) {
//accept->get_cancel()->hide();
accept->get_ok()->set_text("Ugh");
accept->set_text("Error importing scene.");
- accept->popup_centered(Size2(300,70));;
+ accept->popup_centered(Size2(300,70));
return;
}
@@ -2254,7 +2255,7 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
//confirmation->get_cancel()->hide();
accept->get_ok()->set_text("I see..");
accept->set_text("This operation can't be done without a tree root.");
- accept->popup_centered(Size2(300,70));;
+ accept->popup_centered(Size2(300,70));
break;
}
@@ -2276,7 +2277,7 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
//confirmation->get_cancel()->hide();
accept->get_ok()->set_text("I see..");
accept->set_text("Please save the scene first.");
- accept->popup_centered(Size2(300,70));;
+ accept->popup_centered(Size2(300,70));
break;
}
@@ -2291,7 +2292,7 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
Ref<EditorExporter> exporter = export_db->get_exporter(target);
if (exporter.is_null()) {
accept->set_text("No exporter for platform '"+target+"' yet.");
- accept->popup_centered(Size2(300,70));;
+ accept->popup_centered(Size2(300,70));
return;
}
@@ -2474,7 +2475,7 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
//accept->get_cancel()->hide();
accept->get_ok()->set_text("I see..");
accept->set_text("This operation can't be done without a selected node.");
- accept->popup_centered(Size2(300,70));;
+ accept->popup_centered(Size2(300,70));
break;
}
@@ -2486,7 +2487,7 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
//confirmation->get_cancel()->hide();
accept->get_ok()->set_text("I see..");
accept->set_text("This operation can't be done without a selected node.");
- accept->popup_centered(Size2(300,70));;
+ accept->popup_centered(Size2(300,70));
break;
}
@@ -2498,7 +2499,7 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
//accept->get_cancel()->hide();
accept->get_ok()->set_text("Ugh");
accept->set_text("Error loading scene from "+external_file);
- accept->popup_centered(Size2(300,70));;
+ accept->popup_centered(Size2(300,70));
return;
}
@@ -2593,20 +2594,20 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
} break;
case OBJECT_COPY_PARAMS: {
- editor_data.apply_changes_in_editors();;
+ editor_data.apply_changes_in_editors();
if (current)
editor_data.copy_object_params(current);
} break;
case OBJECT_PASTE_PARAMS: {
- editor_data.apply_changes_in_editors();;
+ editor_data.apply_changes_in_editors();
if (current)
editor_data.paste_object_params(current);
editor_data.get_undo_redo().clear_history();
} break;
case OBJECT_UNIQUE_RESOURCES: {
- editor_data.apply_changes_in_editors();;
+ editor_data.apply_changes_in_editors();
if (current) {
List<PropertyInfo> props;
current->get_property_list(&props);
@@ -2914,7 +2915,7 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
//accept->get_cancel()->hide();
accept->get_ok()->set_text("I see..");
accept->set_text("Can't import if edited scene was not saved."); //i dont think this code will ever run
- accept->popup_centered(Size2(300,70));;
+ accept->popup_centered(Size2(300,70));
break;
}
@@ -2934,7 +2935,16 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
default: {
- if (p_option>=OBJECT_METHOD_BASE) {
+ if (p_option>=TOOL_MENU_BASE) {
+ int idx = p_option - TOOL_MENU_BASE;
+
+ if (tool_menu_items[idx].submenu != "")
+ break;
+
+ Object *handler = ObjectDB::get_instance(tool_menu_items[idx].handler);
+ ERR_FAIL_COND(!handler);
+ handler->call(tool_menu_items[idx].callback, tool_menu_items[idx].ud);
+ } else if (p_option>=OBJECT_METHOD_BASE) {
ERR_FAIL_COND(!current);
@@ -3372,7 +3382,7 @@ Error EditorNode::save_optimized_copy(const String& p_scene,const String& p_pres
//accept->"()->hide();
accept->get_ok()->set_text("I see..");
accept->set_text("Optimizer preset not found: "+p_preset);
- accept->popup_centered(Size2(300,70));;
+ accept->popup_centered(Size2(300,70));
ERR_EXPLAIN("Optimizer preset not found: "+p_preset);
ERR_FAIL_V(ERR_INVALID_PARAMETER);
@@ -3432,7 +3442,7 @@ Error EditorNode::save_optimized_copy(const String& p_scene,const String& p_pres
//accept->get_cancel()->hide();
accept->get_ok()->set_text("I see..");
accept->set_text("Couldn't save scene. Likely dependencies (instances) couldn't be satisfied.");
- accept->popup_centered(Size2(300,70));;
+ accept->popup_centered(Size2(300,70));
return ERR_INVALID_DATA;
}
@@ -3443,7 +3453,7 @@ Error EditorNode::save_optimized_copy(const String& p_scene,const String& p_pres
//accept->"()->hide();
accept->get_ok()->set_text("I see..");
accept->set_text("Error saving optimized scene: "+path);
- accept->popup_centered(Size2(300,70));;
+ accept->popup_centered(Size2(300,70));
ERR_FAIL_COND_V(err,err);
@@ -4028,7 +4038,7 @@ void EditorNode::_save_optimized() {
//accept->"()->hide();
accept->get_ok()->set_text("I see..");
accept->set_text("Error saving optimized scene: "+path);
- accept->popup_centered(Size2(300,70));;
+ accept->popup_centered(Size2(300,70));
return;
}
@@ -5269,6 +5279,100 @@ void EditorNode::add_plugin_init_callback(EditorPluginInitializeCallback p_callb
EditorPluginInitializeCallback EditorNode::plugin_init_callbacks[EditorNode::MAX_INIT_CALLBACKS];
+void EditorNode::_tool_menu_insert_item(const ToolMenuItem& p_item) {
+
+ int idx = tool_menu_items.size();
+
+ String cat;
+ if (p_item.name.find("/") >= 0) {
+ cat = p_item.name.get_slice("/", 0);
+ } else {
+ idx = 0;
+ cat = "";
+ }
+
+ for (int i = tool_menu_items.size() - 1; i >= 0; i--) {
+ String name = tool_menu_items[i].name;
+
+ if (name.begins_with(cat) && (cat != "" || name.find("/") < 0)) {
+ idx = i + 1;
+ break;
+ }
+ }
+
+ tool_menu_items.insert(idx, p_item);
+}
+
+void EditorNode::_rebuild_tool_menu() const {
+
+ if (_initializing_tool_menu)
+ return;
+
+ PopupMenu *menu = tool_menu->get_popup();
+ menu->clear();
+
+ for (int i = 0; i < tool_menu_items.size(); i++) {
+ menu->add_item(tool_menu_items[i].name.get_slice("/", 1), TOOL_MENU_BASE + i);
+
+ if (tool_menu_items[i].submenu != "")
+ menu->set_item_submenu(i, tool_menu_items[i].submenu);
+ }
+}
+
+void EditorNode::add_tool_menu_item(const String& p_name, Object *p_handler, const String& p_callback, const Variant& p_ud) {
+
+ ERR_FAIL_COND(!p_handler);
+
+ ToolMenuItem tmi;
+ tmi.name = p_name;
+ tmi.submenu = "";
+ tmi.ud = p_ud;
+ tmi.handler = p_handler->get_instance_ID();
+ tmi.callback = p_callback;
+ _tool_menu_insert_item(tmi);
+
+ _rebuild_tool_menu();
+}
+
+void EditorNode::add_tool_submenu_item(const String& p_name, PopupMenu *p_submenu) {
+
+ ERR_FAIL_COND(!p_submenu);
+ ERR_FAIL_COND(p_submenu->get_parent() != NULL);
+
+ ToolMenuItem tmi;
+ tmi.name = p_name;
+ tmi.submenu = p_submenu->get_name();
+ tmi.ud = Variant();
+ tmi.handler = -1;
+ tmi.callback = "";
+ _tool_menu_insert_item(tmi);
+
+ tool_menu->get_popup()->add_child(p_submenu);
+
+ _rebuild_tool_menu();
+}
+
+void EditorNode::remove_tool_menu_item(const String& p_name) {
+
+ for (int i = 0; i < tool_menu_items.size(); i++) {
+ if (tool_menu_items[i].name == p_name) {
+ String submenu = tool_menu_items[i].submenu;
+
+ if (submenu != "") {
+ Node *n = tool_menu->get_popup()->get_node(submenu);
+
+ if (n) {
+ tool_menu->get_popup()->remove_child(n);
+ memdelete(n);
+ }
+ }
+
+ tool_menu_items.remove(i);
+ }
+ }
+
+ _rebuild_tool_menu();
+}
int EditorNode::build_callback_count=0;
@@ -5412,9 +5516,11 @@ EditorNode::EditorNode() {
docks_visible = true;
+ _initializing_tool_menu = true;
+
FileAccess::set_backup_save(true);
- PathRemap::get_singleton()->clear_remaps();; //editor uses no remaps
+ PathRemap::get_singleton()->clear_remaps(); //editor uses no remaps
TranslationServer::get_singleton()->set_enabled(false);
// load settings
if (!EditorSettings::get_singleton())
@@ -5509,7 +5615,7 @@ EditorNode::EditorNode() {
#if 0
PanelContainer *top_dark_panel = memnew( PanelContainer );
Ref<StyleBoxTexture> top_dark_sb;
- top_dark_sb.instance();;
+ top_dark_sb.instance();
top_dark_sb->set_texture(theme->get_icon("PanelTop","EditorIcons"));
for(int i=0;i<4;i++) {
top_dark_sb->set_margin_size(Margin(i),3);
@@ -5831,7 +5937,7 @@ EditorNode::EditorNode() {
#if 0
node_menu = memnew( MenuButton );
node_menu->set_text("Node");
- node_menu->set_pos( Point2( 50,0) );;
+ node_menu->set_pos( Point2( 50,0) );
menu_panel->add_child( node_menu );
p=node_menu->get_popup();
@@ -5871,10 +5977,9 @@ EditorNode::EditorNode() {
//tool_menu->set_icon(gui_base->get_icon("Save","EditorIcons"));
left_menu_hb->add_child( tool_menu );
+ tool_menu->get_popup()->connect("id_pressed", this, "_menu_option");
- p=tool_menu->get_popup();
- p->connect("id_pressed",this,"_menu_option");
- p->add_item(TTR("Orphan Resource Explorer"),TOOLS_ORPHAN_RESOURCES);
+ add_tool_menu_item(TTR("Orphan Resource Explorer"), this, "_menu_option", TOOLS_ORPHAN_RESOURCES);
export_button = memnew( ToolButton );
export_button->set_tooltip(TTR("Export the project to many platforms."));
@@ -6350,7 +6455,7 @@ EditorNode::EditorNode() {
animation_menu->set_focus_mode(Control::FOCUS_NONE);
menu_panel->add_child(animation_menu);
animation_menu->set_icon(gui_base->get_icon("Animation","EditorIcons"));
- animation_menu->connect("pressed",this,"_animation_visibility_toggle");;
+ animation_menu->connect("pressed",this,"_animation_visibility_toggle");
*/
@@ -6543,13 +6648,13 @@ EditorNode::EditorNode() {
// editor_import_export->add_import_plugin( Ref<EditorSceneAnimationImportPlugin>( memnew(EditorSceneAnimationImportPlugin(this))));
editor_import_export->add_import_plugin( Ref<EditorMeshImportPlugin>( memnew(EditorMeshImportPlugin(this))));
editor_import_export->add_import_plugin( Ref<EditorFontImportPlugin>( memnew(EditorFontImportPlugin(this))));
- editor_import_export->add_import_plugin( Ref<EditorSampleImportPlugin>( memnew(EditorSampleImportPlugin(this))));
+// editor_import_export->add_import_plugin( Ref<EditorSampleImportPlugin>( memnew(EditorSampleImportPlugin(this))));
editor_import_export->add_import_plugin( Ref<EditorTranslationImportPlugin>( memnew(EditorTranslationImportPlugin(this))));
editor_import_export->add_import_plugin( Ref<EditorBitMaskImportPlugin>( memnew(EditorBitMaskImportPlugin(this))));
editor_import_export->add_export_plugin( Ref<EditorTextureExportPlugin>( memnew(EditorTextureExportPlugin)));
- editor_import_export->add_export_plugin( Ref<EditorSampleExportPlugin>( memnew(EditorSampleExportPlugin)));
+// editor_import_export->add_export_plugin( Ref<EditorSampleExportPlugin>( memnew(EditorSampleExportPlugin)));
editor_import_export->add_export_plugin( Ref<EditorSceneExportPlugin>( memnew(EditorSceneExportPlugin)));
@@ -6574,8 +6679,8 @@ EditorNode::EditorNode() {
add_editor_plugin( memnew( ShaderEditorPlugin(this,false) ) );*/
add_editor_plugin( memnew( CameraEditorPlugin(this) ) );
- add_editor_plugin( memnew( SampleEditorPlugin(this) ) );
- add_editor_plugin( memnew( SampleLibraryEditorPlugin(this) ) );
+// add_editor_plugin( memnew( SampleEditorPlugin(this) ) );
+// add_editor_plugin( memnew( SampleLibraryEditorPlugin(this) ) );
add_editor_plugin( memnew( ThemeEditorPlugin(this) ) );
add_editor_plugin( memnew( MultiMeshEditorPlugin(this) ) );
add_editor_plugin( memnew( MeshInstanceEditorPlugin(this) ) );
@@ -6755,7 +6860,8 @@ EditorNode::EditorNode() {
_initializing_addons=false;
}
-
+ _initializing_tool_menu = false;
+ _rebuild_tool_menu();
_load_docks();
diff --git a/tools/editor/editor_node.h b/tools/editor/editor_node.h
index dd5ff1e175..2baa9091ff 100644
--- a/tools/editor/editor_node.h
+++ b/tools/editor/editor_node.h
@@ -197,7 +197,9 @@ private:
IMPORT_PLUGIN_BASE=100,
- OBJECT_METHOD_BASE=500
+ OBJECT_METHOD_BASE=500,
+
+ TOOL_MENU_BASE=1000
};
@@ -593,6 +595,22 @@ private:
void _call_build();
static int build_callback_count;
static EditorBuildCallback build_callbacks[MAX_BUILD_CALLBACKS];
+
+ bool _initializing_tool_menu;
+
+ struct ToolMenuItem {
+ String name;
+ String submenu;
+ Variant ud;
+ ObjectID handler;
+ String callback;
+ };
+
+ Vector<ToolMenuItem> tool_menu_items;
+
+ void _tool_menu_insert_item(const ToolMenuItem& p_item);
+ void _rebuild_tool_menu() const;
+
protected:
void _notification(int p_what);
static void _bind_methods();
@@ -755,6 +773,9 @@ public:
Variant drag_files(const Vector<String>& p_files,Control* p_from);
Variant drag_files_and_dirs(const Vector<String>& p_files,Control* p_from);
+ void add_tool_menu_item(const String& p_name, Object *p_handler, const String& p_callback, const Variant& p_ud = Variant());
+ void add_tool_submenu_item(const String& p_name, PopupMenu *p_submenu);
+ void remove_tool_menu_item(const String& p_name);
EditorNode();
~EditorNode();
diff --git a/tools/editor/editor_path.cpp b/tools/editor/editor_path.cpp
index b359522e4f..8cd31c4bcc 100644
--- a/tools/editor/editor_path.cpp
+++ b/tools/editor/editor_path.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_path.h"
+
#include "editor_scale.h"
#include "editor_node.h"
diff --git a/tools/editor/editor_plugin.cpp b/tools/editor/editor_plugin.cpp
index 8769fe2cd8..69be7f8a4d 100644
--- a/tools/editor/editor_plugin.cpp
+++ b/tools/editor/editor_plugin.cpp
@@ -27,6 +27,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_plugin.h"
+
+#include "scene/gui/popup_menu.h"
#include "scene/3d/camera.h"
#include "plugins/canvas_item_editor_plugin.h"
#include "plugins/spatial_editor_plugin.h"
@@ -132,6 +134,24 @@ void EditorPlugin::add_control_to_container(CustomControlContainer p_location,Co
}
}
+void EditorPlugin::add_tool_menu_item(const String& p_name, Object *p_handler, const String& p_callback, const Variant& p_ud) {
+
+ EditorNode::get_singleton()->add_tool_menu_item(p_name, p_handler, p_callback, p_ud);
+}
+
+void EditorPlugin::add_tool_submenu_item(const String& p_name, Object *p_submenu) {
+
+ ERR_FAIL_NULL(p_submenu);
+ PopupMenu *submenu = p_submenu->cast_to<PopupMenu>();
+ ERR_FAIL_NULL(submenu);
+ EditorNode::get_singleton()->add_tool_submenu_item(p_name, submenu);
+}
+
+void EditorPlugin::remove_tool_menu_item(const String& p_name) {
+
+ EditorNode::get_singleton()->remove_tool_menu_item(p_name);
+}
+
Ref<SpatialEditorGizmo> EditorPlugin::create_spatial_gizmo(Spatial* p_spatial) {
//??
if (get_script_instance() && get_script_instance()->has_method("create_spatial_gizmo")) {
@@ -351,6 +371,9 @@ void EditorPlugin::_bind_methods() {
ClassDB::bind_method(_MD("add_control_to_dock","slot","control:Control"),&EditorPlugin::add_control_to_dock);
ClassDB::bind_method(_MD("remove_control_from_docks","control:Control"),&EditorPlugin::remove_control_from_docks);
ClassDB::bind_method(_MD("remove_control_from_bottom_panel","control:Control"),&EditorPlugin::remove_control_from_bottom_panel);
+ ClassDB::bind_method(_MD("add_tool_menu_item", "name", "handler", "callback", "ud"),&EditorPlugin::add_tool_menu_item,DEFVAL(Variant()));
+ ClassDB::bind_method(_MD("add_tool_submenu_item", "name", "submenu:PopupMenu"),&EditorPlugin::add_tool_submenu_item);
+ ClassDB::bind_method(_MD("remove_tool_menu_item", "name"),&EditorPlugin::remove_tool_menu_item);
ClassDB::bind_method(_MD("add_custom_type","type","base","script:Script","icon:Texture"),&EditorPlugin::add_custom_type);
ClassDB::bind_method(_MD("remove_custom_type","type"),&EditorPlugin::remove_custom_type);
ClassDB::bind_method(_MD("get_editor_viewport:Control"), &EditorPlugin::get_editor_viewport);
diff --git a/tools/editor/editor_plugin.h b/tools/editor/editor_plugin.h
index 9943e94d98..928b096859 100644
--- a/tools/editor/editor_plugin.h
+++ b/tools/editor/editor_plugin.h
@@ -103,6 +103,10 @@ public:
Control* get_editor_viewport();
void edit_resource(const Ref<Resource>& p_resource);
+ void add_tool_menu_item(const String& p_name, Object *p_handler, const String& p_callback, const Variant& p_ud = Variant());
+ void add_tool_submenu_item(const String& p_name, Object *p_submenu);
+ void remove_tool_menu_item(const String& p_name);
+
virtual Ref<SpatialEditorGizmo> create_spatial_gizmo(Spatial* p_spatial);
virtual bool forward_canvas_gui_input(const Transform2D& p_canvas_xform, const InputEvent& p_event);
virtual void forward_draw_over_canvas(const Transform2D& p_canvas_xform,Control *p_canvas);
diff --git a/tools/editor/editor_plugin_settings.cpp b/tools/editor/editor_plugin_settings.cpp
index 208e576a8a..2b6828e82f 100644
--- a/tools/editor/editor_plugin_settings.cpp
+++ b/tools/editor/editor_plugin_settings.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_plugin_settings.h"
+
#include "scene/gui/margin_container.h"
#include "io/config_file.h"
#include "os/file_access.h"
diff --git a/tools/editor/editor_profiler.cpp b/tools/editor/editor_profiler.cpp
index 5279711b0f..94ec059ea7 100644
--- a/tools/editor/editor_profiler.cpp
+++ b/tools/editor/editor_profiler.cpp
@@ -1,4 +1,33 @@
+/*************************************************************************/
+/* editor_profiler.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#include "editor_profiler.h"
+
#include "editor_settings.h"
#include "os/os.h"
@@ -349,7 +378,7 @@ void EditorProfiler::_update_plot() {
}
- graph_texture->set_data(img);;
+ graph_texture->set_data(img);
graph->set_texture(graph_texture);
diff --git a/tools/editor/editor_profiler.h b/tools/editor/editor_profiler.h
index 52b38cdae8..bf89e3939c 100644
--- a/tools/editor/editor_profiler.h
+++ b/tools/editor/editor_profiler.h
@@ -1,3 +1,31 @@
+/*************************************************************************/
+/* editor_profiler.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#ifndef EDITORPROFILER_H
#define EDITORPROFILER_H
diff --git a/tools/editor/editor_reimport_dialog.cpp b/tools/editor/editor_reimport_dialog.cpp
index c6a8f13dc7..e5ae33e919 100644
--- a/tools/editor/editor_reimport_dialog.cpp
+++ b/tools/editor/editor_reimport_dialog.cpp
@@ -27,8 +27,10 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_reimport_dialog.h"
+
#include "editor_file_system.h"
#include "editor_node.h"
+
void EditorReImportDialog::popup_reimport() {
if (EditorFileSystem::get_singleton()->is_scanning()) {
diff --git a/tools/editor/editor_resource_preview.cpp b/tools/editor/editor_resource_preview.cpp
index 76ae53d821..b4c459a493 100644
--- a/tools/editor/editor_resource_preview.cpp
+++ b/tools/editor/editor_resource_preview.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_resource_preview.h"
+
#include "editor_settings.h"
#include "os/file_access.h"
#include "io/resource_loader.h"
diff --git a/tools/editor/editor_run.cpp b/tools/editor/editor_run.cpp
index 7d79412b3b..813a8ee5b7 100644
--- a/tools/editor/editor_run.cpp
+++ b/tools/editor/editor_run.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_run.h"
+
#include "globals.h"
#include "editor_settings.h"
diff --git a/tools/editor/editor_run_native.cpp b/tools/editor/editor_run_native.cpp
index caa1bf5db7..12b7b761ed 100644
--- a/tools/editor/editor_run_native.cpp
+++ b/tools/editor/editor_run_native.cpp
@@ -27,8 +27,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_run_native.h"
-#include "editor_import_export.h"
+#include "editor_import_export.h"
void EditorRunNative::_notification(int p_what) {
diff --git a/tools/editor/editor_run_script.cpp b/tools/editor/editor_run_script.cpp
index 4a3cbfbccb..6a980019e4 100644
--- a/tools/editor/editor_run_script.cpp
+++ b/tools/editor/editor_run_script.cpp
@@ -27,11 +27,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_run_script.h"
-#include "editor_node.h"
-
-
-
+#include "editor_node.h"
void EditorScript::add_root_node(Node *p_node) {
diff --git a/tools/editor/editor_scale.cpp b/tools/editor/editor_scale.cpp
index 8575e1c30a..5687f97b22 100644
--- a/tools/editor/editor_scale.cpp
+++ b/tools/editor/editor_scale.cpp
@@ -1,4 +1,33 @@
+/*************************************************************************/
+/* editor_scale.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#include "editor_scale.h"
+
#include "os/os.h"
static float scale = 1.0;
diff --git a/tools/editor/editor_scale.h b/tools/editor/editor_scale.h
index 90e575f771..035a5056c1 100644
--- a/tools/editor/editor_scale.h
+++ b/tools/editor/editor_scale.h
@@ -1,3 +1,31 @@
+/*************************************************************************/
+/* editor_scale.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#ifndef EDITOR_SCALE_H
#define EDITOR_SCALE_H
diff --git a/tools/editor/editor_settings.cpp b/tools/editor/editor_settings.cpp
index 807183ae46..27aeaeb5b6 100644
--- a/tools/editor/editor_settings.cpp
+++ b/tools/editor/editor_settings.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http:/www.godotengine.org */
+/* http:/www.godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* */
@@ -27,13 +27,12 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_settings.h"
+
#include "os/os.h"
#include "os/dir_access.h"
#include "os/file_access.h"
-
#include "version.h"
#include "scene/main/scene_main_loop.h"
-#include "os/os.h"
#include "scene/main/node.h"
#include "io/resource_loader.h"
#include "io/resource_saver.h"
@@ -127,7 +126,7 @@ bool EditorSettings::_get(const StringName& p_name,Variant &r_ret) const {
const VariantContainer *v=props.getptr(p_name);
if (!v) {
- //print_line("WARNING NOT FOUND: "+String(p_name));
+ print_line("EditorSettings::_get - Warning, not found: "+String(p_name));
return false;
}
r_ret = v->variant;
diff --git a/tools/editor/editor_sub_scene.cpp b/tools/editor/editor_sub_scene.cpp
index 34c3d47006..094cf049b3 100644
--- a/tools/editor/editor_sub_scene.cpp
+++ b/tools/editor/editor_sub_scene.cpp
@@ -27,10 +27,11 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_sub_scene.h"
+
#include "scene/gui/margin_container.h"
#include "scene/resources/packed_scene.h"
-void EditorSubScene::_path_selected(const String& p_path) {
+void EditorSubScene::_path_selected(const String& p_path) {
path->set_text(p_path);
_path_changed(p_path);
diff --git a/tools/editor/editor_themes.cpp b/tools/editor/editor_themes.cpp
index 56654cad7a..7657996b81 100644
--- a/tools/editor/editor_themes.cpp
+++ b/tools/editor/editor_themes.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* editor_themes.cpp */
+/* editor_themes.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -26,8 +26,8 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-
#include "editor_themes.h"
+
#include "editor_icons.h"
#include "editor_fonts.h"
#include "editor_settings.h"
diff --git a/tools/editor/editor_themes.h b/tools/editor/editor_themes.h
index 83e7dde78a..bf15420917 100644
--- a/tools/editor/editor_themes.h
+++ b/tools/editor/editor_themes.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* editor_themes.h */
+/* editor_themes.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
diff --git a/tools/editor/file_type_cache.cpp b/tools/editor/file_type_cache.cpp
index 176205a7df..aff99fbc05 100644
--- a/tools/editor/file_type_cache.cpp
+++ b/tools/editor/file_type_cache.cpp
@@ -27,10 +27,10 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "file_type_cache.h"
+
#include "globals.h"
#include "os/file_access.h"
-
FileTypeCache* FileTypeCache::singleton=NULL;
bool FileTypeCache::has_file(const String& p_path) const {
diff --git a/tools/editor/fileserver/editor_file_server.cpp b/tools/editor/fileserver/editor_file_server.cpp
index 6330b06d3e..2e5dbf6248 100644
--- a/tools/editor/fileserver/editor_file_server.cpp
+++ b/tools/editor/fileserver/editor_file_server.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_file_server.h"
+
#include "io/marshalls.h"
#include "io/marshalls.h"
#include "../editor_settings.h"
diff --git a/tools/editor/filesystem_dock.cpp b/tools/editor/filesystem_dock.cpp
index 792eb54dd4..b85bd6dfdb 100644
--- a/tools/editor/filesystem_dock.cpp
+++ b/tools/editor/filesystem_dock.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* scenes_dock.cpp */
+/* filesystem_dock.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,14 +27,13 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "filesystem_dock.h"
+
#include "os/dir_access.h"
#include "os/file_access.h"
#include "globals.h"
-
#include "io/resource_loader.h"
#include "os/os.h"
#include "editor_node.h"
-
#include "editor_settings.h"
#include "scene/main/viewport.h"
@@ -990,7 +989,7 @@ void FileSystemDock::_file_option(int p_option) {
} break;
case FILE_MOVE: {
- move_dirs.clear();;
+ move_dirs.clear();
move_files.clear();
for(int i=0;i<files->get_item_count();i++) {
diff --git a/tools/editor/filesystem_dock.h b/tools/editor/filesystem_dock.h
index 0b0a73b9a2..ccd43847d6 100644
--- a/tools/editor/filesystem_dock.h
+++ b/tools/editor/filesystem_dock.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* scenes_dock.h */
+/* filesystem_dock.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
diff --git a/tools/editor/groups_editor.cpp b/tools/editor/groups_editor.cpp
index 07b2bca385..90f0bab6dd 100644
--- a/tools/editor/groups_editor.cpp
+++ b/tools/editor/groups_editor.cpp
@@ -32,6 +32,7 @@
#include "scene/gui/label.h"
#include "editor_node.h"
#include "scene/resources/packed_scene.h"
+
void GroupsEditor::_add_group(const String& p_group) {
if (!node)
diff --git a/tools/editor/io_plugins/editor_atlas.cpp b/tools/editor/io_plugins/editor_atlas.cpp
index ac776f4ff5..c5f1ee73cf 100644
--- a/tools/editor/io_plugins/editor_atlas.cpp
+++ b/tools/editor/io_plugins/editor_atlas.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_atlas.h"
+
#include "print_string.h"
struct _EditorAtlasWorkRect {
diff --git a/tools/editor/io_plugins/editor_bitmask_import_plugin.cpp b/tools/editor/io_plugins/editor_bitmask_import_plugin.cpp
index 722b02f77b..222a9d9517 100644
--- a/tools/editor/io_plugins/editor_bitmask_import_plugin.cpp
+++ b/tools/editor/io_plugins/editor_bitmask_import_plugin.cpp
@@ -1,4 +1,33 @@
+/*************************************************************************/
+/* editor_bitmask_import_plugin.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#include "editor_bitmask_import_plugin.h"
+
#include "io/image_loader.h"
#include "tools/editor/editor_file_dialog.h"
#include "tools/editor/editor_dir_dialog.h"
diff --git a/tools/editor/io_plugins/editor_bitmask_import_plugin.h b/tools/editor/io_plugins/editor_bitmask_import_plugin.h
index 28dddca50a..3a6aababe2 100644
--- a/tools/editor/io_plugins/editor_bitmask_import_plugin.h
+++ b/tools/editor/io_plugins/editor_bitmask_import_plugin.h
@@ -1,3 +1,31 @@
+/*************************************************************************/
+/* editor_bitmask_import_plugin.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#ifndef EDITOR_BITMASK_IMPORT_PLUGIN_H
#define EDITOR_BITMASK_IMPORT_PLUGIN_H
diff --git a/tools/editor/io_plugins/editor_export_scene.cpp b/tools/editor/io_plugins/editor_export_scene.cpp
index ea67128f3c..7d19258411 100644
--- a/tools/editor/io_plugins/editor_export_scene.cpp
+++ b/tools/editor/io_plugins/editor_export_scene.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_export_scene.h"
+
#include "io/resource_loader.h"
#include "io/resource_saver.h"
#include "os/dir_access.h"
diff --git a/tools/editor/io_plugins/editor_font_import_plugin.cpp b/tools/editor/io_plugins/editor_font_import_plugin.cpp
index 099535b1ef..ada6000d82 100644
--- a/tools/editor/io_plugins/editor_font_import_plugin.cpp
+++ b/tools/editor/io_plugins/editor_font_import_plugin.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_font_import_plugin.h"
+
#include "scene/gui/dialogs.h"
#include "tools/editor/editor_file_dialog.h"
#include "tools/editor/editor_node.h"
@@ -34,11 +35,10 @@
#include "editor_atlas.h"
#include "io/image_loader.h"
#include "io/resource_saver.h"
-#ifdef FREETYPE_ENABLED
+#ifdef FREETYPE_ENABLED
#include <ft2build.h>
#include FT_FREETYPE_H
-
#endif
diff --git a/tools/editor/io_plugins/editor_import_collada.cpp b/tools/editor/io_plugins/editor_import_collada.cpp
index 1cbb594a51..a910b9c3ab 100644
--- a/tools/editor/io_plugins/editor_import_collada.cpp
+++ b/tools/editor/io_plugins/editor_import_collada.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_import_collada.h"
+
#include "collada/collada.h"
#include "scene/3d/spatial.h"
#include "scene/3d/skeleton.h"
diff --git a/tools/editor/io_plugins/editor_mesh_import_plugin.cpp b/tools/editor/io_plugins/editor_mesh_import_plugin.cpp
index fa0c36be98..d07a21fc7d 100644
--- a/tools/editor/io_plugins/editor_mesh_import_plugin.cpp
+++ b/tools/editor/io_plugins/editor_mesh_import_plugin.cpp
@@ -32,7 +32,7 @@
#include "tools/editor/editor_dir_dialog.h"
#include "tools/editor/editor_node.h"
#include "tools/editor/property_editor.h"
-#include "scene/resources/sample.h"
+//#include "scene/resources/sample.h"
#include "io/resource_saver.h"
#include "os/file_access.h"
#include "io/marshalls.h"
diff --git a/tools/editor/io_plugins/editor_sample_import_plugin.cpp b/tools/editor/io_plugins/editor_sample_import_plugin.cpp
index eeb61fc443..ca873cab72 100644
--- a/tools/editor/io_plugins/editor_sample_import_plugin.cpp
+++ b/tools/editor/io_plugins/editor_sample_import_plugin.cpp
@@ -27,16 +27,18 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_sample_import_plugin.h"
+
#include "tools/editor/editor_file_dialog.h"
#include "tools/editor/editor_dir_dialog.h"
#include "tools/editor/editor_node.h"
#include "tools/editor/property_editor.h"
-#include "scene/resources/sample.h"
#include "io/resource_saver.h"
#include "os/file_access.h"
#include "io/marshalls.h"
#include "tools/editor/editor_settings.h"
+#if 0
+
class _EditorSampleImportOptions : public Object {
GDCLASS(_EditorSampleImportOptions,Object);
@@ -923,3 +925,5 @@ Vector<uint8_t> EditorSampleExportPlugin::custom_export(String& p_path,const Ref
EditorSampleExportPlugin::EditorSampleExportPlugin() {
}
+
+#endif
diff --git a/tools/editor/io_plugins/editor_sample_import_plugin.h b/tools/editor/io_plugins/editor_sample_import_plugin.h
index 6d781756b2..8e02d0e11d 100644
--- a/tools/editor/io_plugins/editor_sample_import_plugin.h
+++ b/tools/editor/io_plugins/editor_sample_import_plugin.h
@@ -29,6 +29,7 @@
#ifndef EDITOR_SAMPLE_IMPORT_PLUGIN_H
#define EDITOR_SAMPLE_IMPORT_PLUGIN_H
+#if 0
#include "tools/editor/editor_import_export.h"
#include "scene/resources/font.h"
@@ -70,3 +71,4 @@ public:
};
#endif // EDITOR_SAMPLE_IMPORT_PLUGIN_H
+#endif
diff --git a/tools/editor/io_plugins/editor_scene_import_plugin.cpp b/tools/editor/io_plugins/editor_scene_import_plugin.cpp
index 79c88e7407..ce6c49fcba 100644
--- a/tools/editor/io_plugins/editor_scene_import_plugin.cpp
+++ b/tools/editor/io_plugins/editor_scene_import_plugin.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_scene_import_plugin.h"
+
#include "globals.h"
#include "tools/editor/editor_node.h"
#include "scene/resources/packed_scene.h"
diff --git a/tools/editor/io_plugins/editor_scene_importer_fbxconv.cpp b/tools/editor/io_plugins/editor_scene_importer_fbxconv.cpp
index e1b0719941..af12d85650 100644
--- a/tools/editor/io_plugins/editor_scene_importer_fbxconv.cpp
+++ b/tools/editor/io_plugins/editor_scene_importer_fbxconv.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_scene_importer_fbxconv.h"
+
#include "os/file_access.h"
#include "os/os.h"
#include "tools/editor/editor_settings.h"
diff --git a/tools/editor/io_plugins/editor_texture_import_plugin.cpp b/tools/editor/io_plugins/editor_texture_import_plugin.cpp
index 5ba7d0c417..8e1bcb8e4b 100644
--- a/tools/editor/io_plugins/editor_texture_import_plugin.cpp
+++ b/tools/editor/io_plugins/editor_texture_import_plugin.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_texture_import_plugin.h"
+
#include "io/image_loader.h"
#include "tools/editor/editor_node.h"
#include "io/resource_saver.h"
@@ -779,7 +780,7 @@ EditorTextureImportDialog::EditorTextureImportDialog(EditorTextureImportPlugin*
set_hide_on_ok(false);
- texture_options = memnew( EditorImportTextureOptions );;
+ texture_options = memnew( EditorImportTextureOptions );
vbc->add_child(texture_options);
texture_options->set_v_size_flags(SIZE_EXPAND_FILL);
diff --git a/tools/editor/io_plugins/editor_translation_import_plugin.cpp b/tools/editor/io_plugins/editor_translation_import_plugin.cpp
index d9288f5990..7079120feb 100644
--- a/tools/editor/io_plugins/editor_translation_import_plugin.cpp
+++ b/tools/editor/io_plugins/editor_translation_import_plugin.cpp
@@ -27,11 +27,12 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_translation_import_plugin.h"
+
#include "scene/gui/file_dialog.h"
#include "tools/editor/editor_dir_dialog.h"
#include "tools/editor/editor_node.h"
#include "tools/editor/property_editor.h"
-#include "scene/resources/sample.h"
+//#include "scene/resources/sample.h"
#include "io/resource_saver.h"
#include "os/file_access.h"
#include "translation.h"
diff --git a/tools/editor/multi_node_edit.cpp b/tools/editor/multi_node_edit.cpp
index 47b776ed06..97a996fe48 100644
--- a/tools/editor/multi_node_edit.cpp
+++ b/tools/editor/multi_node_edit.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "multi_node_edit.h"
+
#include "editor_node.h"
bool MultiNodeEdit::_set(const StringName& p_name, const Variant& p_value){
diff --git a/tools/editor/node_dock.cpp b/tools/editor/node_dock.cpp
index a8e66a8680..3d906cf960 100644
--- a/tools/editor/node_dock.cpp
+++ b/tools/editor/node_dock.cpp
@@ -1,4 +1,33 @@
+/*************************************************************************/
+/* node_dock.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#include "node_dock.h"
+
#include "editor_node.h"
void NodeDock::show_groups() {
diff --git a/tools/editor/node_dock.h b/tools/editor/node_dock.h
index fd4105d1b2..df41ecf5bd 100644
--- a/tools/editor/node_dock.h
+++ b/tools/editor/node_dock.h
@@ -1,3 +1,31 @@
+/*************************************************************************/
+/* node_dock.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#ifndef NODE_DOCK_H
#define NODE_DOCK_H
diff --git a/tools/editor/plugins/animation_player_editor_plugin.cpp b/tools/editor/plugins/animation_player_editor_plugin.cpp
index a3f254ce49..b3d16bb660 100644
--- a/tools/editor/plugins/animation_player_editor_plugin.cpp
+++ b/tools/editor/plugins/animation_player_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "animation_player_editor_plugin.h"
+
#include "globals.h"
#include "io/resource_loader.h"
#include "io/resource_saver.h"
diff --git a/tools/editor/plugins/animation_tree_editor_plugin.cpp b/tools/editor/plugins/animation_tree_editor_plugin.cpp
index eedebab1c9..1ed52d2df6 100644
--- a/tools/editor/plugins/animation_tree_editor_plugin.cpp
+++ b/tools/editor/plugins/animation_tree_editor_plugin.cpp
@@ -261,9 +261,9 @@ void AnimationTreeEditor::_popup_edit_dialog() {
}
edit_option->hide();
- edit_button->hide();;
+ edit_button->hide();
filter_button->hide();
- edit_check->hide();;
+ edit_check->hide();
Point2 pos = anim_tree->node_get_pos(edited_node)-Point2(h_scroll->get_value(),v_scroll->get_value());
Ref<StyleBox> style = get_stylebox("panel","PopupMenu");
@@ -450,7 +450,7 @@ void AnimationTreeEditor::_popup_edit_dialog() {
edit_label[1]->show();
edit_option->set_begin(Point2(15,75));
- edit_option->clear();;
+ edit_option->clear();
for(int i=0;i<anim_tree->transition_node_get_input_count(edited_node);i++) {
edit_option->add_item(itos(i),i);
@@ -1451,14 +1451,14 @@ AnimationTreeEditor::AnimationTreeEditor() {
edit_button->set_anchor( MARGIN_RIGHT, ANCHOR_END );
edit_button->set_margin(MARGIN_RIGHT, 10);
edit_dialog->add_child(edit_button);
- edit_button->hide();;
+ edit_button->hide();
edit_button->connect("pressed", this,"_edit_oneshot_start");
edit_check = memnew( CheckButton );
edit_check->set_anchor( MARGIN_RIGHT, ANCHOR_END );
edit_check->set_margin(MARGIN_RIGHT, 10);
edit_dialog->add_child(edit_check);
- edit_check->hide();;
+ edit_check->hide();
edit_check->connect("pressed", this,"_edit_dialog_changed");
file_dialog = memnew( EditorFileDialog );
@@ -1480,7 +1480,7 @@ AnimationTreeEditor::AnimationTreeEditor() {
filter_button->set_anchor( MARGIN_RIGHT, ANCHOR_END );
filter_button->set_margin(MARGIN_RIGHT, 10);
edit_dialog->add_child(filter_button);
- filter_button->hide();;
+ filter_button->hide();
filter_button->set_text(TTR("Filters.."));
filter_button->connect("pressed", this,"_edit_filters");
diff --git a/tools/editor/plugins/baked_light_baker.cpp b/tools/editor/plugins/baked_light_baker.cpp
index 0b12d080e4..52220839d9 100644
--- a/tools/editor/plugins/baked_light_baker.cpp
+++ b/tools/editor/plugins/baked_light_baker.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "baked_light_baker.h"
+
#include <stdlib.h>
#include <cmath>
#include "io/marshalls.h"
@@ -1573,7 +1574,7 @@ double BakedLightBaker::get_normalization(int p_light_idx) const {
double nrg=0;
const LightData &dl=lights[p_light_idx];
- double cell_area = cell_size*cell_size;;
+ double cell_area = cell_size*cell_size;
//nrg+= /*dl.energy */ (dl.rays_thrown * cell_area / dl.area);
nrg=dl.rays_thrown * cell_area;
nrg*=(Math_PI*plot_size*plot_size)*0.5; // damping of radial linear gradient kernel
@@ -1591,7 +1592,7 @@ double BakedLightBaker::get_modifier(int p_light_idx) const {
double nrg=0;
const LightData &dl=lights[p_light_idx];
- double cell_area = cell_size*cell_size;;
+ double cell_area = cell_size*cell_size;
//nrg+= /*dl.energy */ (dl.rays_thrown * cell_area / dl.area);
nrg=cell_area;
nrg*=(Math_PI*plot_size*plot_size)*0.5; // damping of radial linear gradient kernel
@@ -2681,7 +2682,7 @@ void BakedLightBaker::clear() {
materials.clear();
textures.clear();
lights.clear();
- triangles.clear();;
+ triangles.clear();
endpoint_normal.clear();
endpoint_normal_bits.clear();
baked_octree_texture_w=0;
diff --git a/tools/editor/plugins/baked_light_editor_plugin.cpp b/tools/editor/plugins/baked_light_editor_plugin.cpp
index 26c3144188..6a7e708b85 100644
--- a/tools/editor/plugins/baked_light_editor_plugin.cpp
+++ b/tools/editor/plugins/baked_light_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "baked_light_editor_plugin.h"
+
#include "scene/gui/box_container.h"
#include "scene/3d/mesh_instance.h"
#include "io/marshalls.h"
diff --git a/tools/editor/plugins/camera_editor_plugin.cpp b/tools/editor/plugins/camera_editor_plugin.cpp
index 1c8c392d65..1e0ec2b4a0 100644
--- a/tools/editor/plugins/camera_editor_plugin.cpp
+++ b/tools/editor/plugins/camera_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "camera_editor_plugin.h"
+
#include "spatial_editor_plugin.h"
diff --git a/tools/editor/plugins/canvas_item_editor_plugin.cpp b/tools/editor/plugins/canvas_item_editor_plugin.cpp
index f321a74c7e..9dbd2513a0 100644
--- a/tools/editor/plugins/canvas_item_editor_plugin.cpp
+++ b/tools/editor/plugins/canvas_item_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "canvas_item_editor_plugin.h"
+
#include "print_string.h"
#include "tools/editor/editor_node.h"
#include "os/keyboard.h"
@@ -391,7 +392,7 @@ void CanvasItemEditor::_remove_canvas_item(CanvasItem *p_canvas_item) {
}
void CanvasItemEditor::_clear_canvas_items() {
- editor_selection->clear();;
+ editor_selection->clear();
#if 0
while(canvas_items.size())
_remove_canvas_item(canvas_items.front()->key());
@@ -601,7 +602,7 @@ bool CanvasItemEditor::_select(CanvasItem *item, Point2 p_click_pos, bool p_appe
if (!item) {
//clear because nothing clicked
- editor_selection->clear();;
+ editor_selection->clear();
if (p_drag) {
drag_from=transform.affine_inverse().xform(p_click_pos);
@@ -1319,7 +1320,7 @@ void CanvasItemEditor::_viewport_gui_input(const InputEvent& p_event) {
{
bone_ik_list.clear();
float closest_dist=1e20;
- int bone_width = EditorSettings::get_singleton()->get("editors/2dbone_width");
+ int bone_width = EditorSettings::get_singleton()->get("editors/2d/bone_width");
for(Map<ObjectID,BoneList>::Element *E=bone_list.front();E;E=E->next()) {
if (E->get().from == E->get().to)
@@ -2113,11 +2114,11 @@ void CanvasItemEditor::_viewport_draw() {
}
if (skeleton_show_bones) {
- int bone_width = EditorSettings::get_singleton()->get("editors/2dbone_width");
- Color bone_color1 = EditorSettings::get_singleton()->get("editors/2dbone_color1");
- Color bone_color2 = EditorSettings::get_singleton()->get("editors/2dbone_color2");
- Color bone_ik_color = EditorSettings::get_singleton()->get("editors/2dbone_ik_color");
- Color bone_selected_color = EditorSettings::get_singleton()->get("editors/2dbone_selected_color");
+ int bone_width = EditorSettings::get_singleton()->get("editors/2d/bone_width");
+ Color bone_color1 = EditorSettings::get_singleton()->get("editors/2d/bone_color1");
+ Color bone_color2 = EditorSettings::get_singleton()->get("editors/2d/bone_color2");
+ Color bone_ik_color = EditorSettings::get_singleton()->get("editors/2d/bone_ik_color");
+ Color bone_selected_color = EditorSettings::get_singleton()->get("editors/2d/bone_selected_color");
for(Map<ObjectID,BoneList>::Element*E=bone_list.front();E;E=E->next()) {
@@ -2412,7 +2413,7 @@ void CanvasItemEditor::_update_scrollbars() {
Rect2 canvas_item_rect=Rect2(Point2(),screen_rect);
- lock_list.clear();;
+ lock_list.clear();
bone_last_frame++;
@@ -2926,7 +2927,7 @@ void CanvasItemEditor::_popup_callback(int p_op) {
} break;*/
case ANIM_COPY_POSE: {
- pose_clipboard.clear();;
+ pose_clipboard.clear();
Map<Node*,Object*> &selection = editor_selection->get_selection();
diff --git a/tools/editor/plugins/collision_polygon_editor_plugin.cpp b/tools/editor/plugins/collision_polygon_editor_plugin.cpp
index 010d6f1a47..c5cd15cf72 100644
--- a/tools/editor/plugins/collision_polygon_editor_plugin.cpp
+++ b/tools/editor/plugins/collision_polygon_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "collision_polygon_editor_plugin.h"
+
#include "spatial_editor_plugin.h"
#include "os/file_access.h"
#include "tools/editor/editor_settings.h"
diff --git a/tools/editor/plugins/collision_shape_2d_editor_plugin.cpp b/tools/editor/plugins/collision_shape_2d_editor_plugin.cpp
index 626ca9e132..a05eeb7a27 100644
--- a/tools/editor/plugins/collision_shape_2d_editor_plugin.cpp
+++ b/tools/editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -29,7 +29,6 @@
#include "collision_shape_2d_editor_plugin.h"
#include "canvas_item_editor_plugin.h"
-
#include "scene/resources/segment_shape_2d.h"
#include "scene/resources/shape_line_2d.h"
#include "scene/resources/circle_shape_2d.h"
diff --git a/tools/editor/plugins/color_ramp_editor_plugin.cpp b/tools/editor/plugins/color_ramp_editor_plugin.cpp
index 90ec1e9f4e..9509eb1b03 100644
--- a/tools/editor/plugins/color_ramp_editor_plugin.cpp
+++ b/tools/editor/plugins/color_ramp_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "color_ramp_editor_plugin.h"
+
#include "spatial_editor_plugin.h"
#include "canvas_item_editor_plugin.h"
diff --git a/tools/editor/plugins/editor_preview_plugins.cpp b/tools/editor/plugins/editor_preview_plugins.cpp
index 478fa2308d..5d9b281874 100644
--- a/tools/editor/plugins/editor_preview_plugins.cpp
+++ b/tools/editor/plugins/editor_preview_plugins.cpp
@@ -27,12 +27,13 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_preview_plugins.h"
+
#include "io/resource_loader.h"
#include "tools/editor/editor_settings.h"
#include "io/file_access_memory.h"
#include "os/os.h"
#include "scene/resources/material.h"
-#include "scene/resources/sample.h"
+//#include "scene/resources/sample.h"
#include "scene/resources/mesh.h"
#include "scene/resources/bit_mask.h"
#include "tools/editor/editor_scale.h"
@@ -521,7 +522,7 @@ EditorScriptPreviewPlugin::EditorScriptPreviewPlugin() {
}
///////////////////////////////////////////////////////////////////
-
+#if 0
bool EditorSamplePreviewPlugin::handles(const String& p_type) const {
return ClassDB::is_type(p_type,"Sample");
@@ -788,7 +789,7 @@ EditorSamplePreviewPlugin::EditorSamplePreviewPlugin() {
}
-
+#endif
///////////////////////////////////////////////////////////////////////////
bool EditorMeshPreviewPlugin::handles(const String& p_type) const {
diff --git a/tools/editor/plugins/editor_preview_plugins.h b/tools/editor/plugins/editor_preview_plugins.h
index 3c1689e61e..078e4cf8b5 100644
--- a/tools/editor/plugins/editor_preview_plugins.h
+++ b/tools/editor/plugins/editor_preview_plugins.h
@@ -94,7 +94,7 @@ public:
EditorScriptPreviewPlugin();
};
-
+#if 0
class EditorSamplePreviewPlugin : public EditorResourcePreviewGenerator {
public:
@@ -104,7 +104,7 @@ public:
EditorSamplePreviewPlugin();
};
-
+#endif
class EditorMeshPreviewPlugin : public EditorResourcePreviewGenerator {
RID scenario;
diff --git a/tools/editor/plugins/gi_probe_editor_plugin.cpp b/tools/editor/plugins/gi_probe_editor_plugin.cpp
index f550b7972a..39f32d0dc7 100644
--- a/tools/editor/plugins/gi_probe_editor_plugin.cpp
+++ b/tools/editor/plugins/gi_probe_editor_plugin.cpp
@@ -1,3 +1,31 @@
+/*************************************************************************/
+/* gi_probe_editor_plugin.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#include "gi_probe_editor_plugin.h"
@@ -44,7 +72,7 @@ GIProbeEditorPlugin::GIProbeEditorPlugin(EditorNode *p_node) {
editor=p_node;
bake = memnew( Button );
bake->set_icon(editor->get_gui_base()->get_icon("BakedLight","EditorIcons"));
- bake->hide();;
+ bake->hide();
bake->connect("pressed",this,"_bake");
add_control_to_container(CONTAINER_SPATIAL_EDITOR_MENU,bake);
gi_probe=NULL;
diff --git a/tools/editor/plugins/gi_probe_editor_plugin.h b/tools/editor/plugins/gi_probe_editor_plugin.h
index 8d2ec17d2f..35e0b93aae 100644
--- a/tools/editor/plugins/gi_probe_editor_plugin.h
+++ b/tools/editor/plugins/gi_probe_editor_plugin.h
@@ -1,3 +1,31 @@
+/*************************************************************************/
+/* gi_probe_editor_plugin.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#ifndef GIPROBEEDITORPLUGIN_H
#define GIPROBEEDITORPLUGIN_H
diff --git a/tools/editor/plugins/material_editor_plugin.cpp b/tools/editor/plugins/material_editor_plugin.cpp
index e9bcf063fd..1aababa91b 100644
--- a/tools/editor/plugins/material_editor_plugin.cpp
+++ b/tools/editor/plugins/material_editor_plugin.cpp
@@ -1,4 +1,33 @@
+/*************************************************************************/
+/* material_editor_plugin.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#include "material_editor_plugin.h"
+
#include "scene/main/viewport.h"
#if 0
diff --git a/tools/editor/plugins/material_editor_plugin.h b/tools/editor/plugins/material_editor_plugin.h
index 556e56e66b..5daae124e0 100644
--- a/tools/editor/plugins/material_editor_plugin.h
+++ b/tools/editor/plugins/material_editor_plugin.h
@@ -1,3 +1,31 @@
+/*************************************************************************/
+/* material_editor_plugin.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#ifndef MATERIAL_EDITOR_PLUGIN_H
#define MATERIAL_EDITOR_PLUGIN_H
diff --git a/tools/editor/plugins/mesh_instance_editor_plugin.cpp b/tools/editor/plugins/mesh_instance_editor_plugin.cpp
index de29991057..322e212534 100644
--- a/tools/editor/plugins/mesh_instance_editor_plugin.cpp
+++ b/tools/editor/plugins/mesh_instance_editor_plugin.cpp
@@ -1,3 +1,31 @@
+/*************************************************************************/
+/* mesh_instance_editor_plugin.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#include "mesh_instance_editor_plugin.h"
#include "scene/3d/physics_body.h"
diff --git a/tools/editor/plugins/mesh_instance_editor_plugin.h b/tools/editor/plugins/mesh_instance_editor_plugin.h
index 23dcbfc9b1..441d4d1d3f 100644
--- a/tools/editor/plugins/mesh_instance_editor_plugin.h
+++ b/tools/editor/plugins/mesh_instance_editor_plugin.h
@@ -1,3 +1,31 @@
+/*************************************************************************/
+/* mesh_instance_editor_plugin.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#ifndef MESH_INSTANCE_EDITOR_PLUGIN_H
#define MESH_INSTANCE_EDITOR_PLUGIN_H
diff --git a/tools/editor/plugins/multimesh_editor_plugin.cpp b/tools/editor/plugins/multimesh_editor_plugin.cpp
index cce1c52215..80765be6c0 100644
--- a/tools/editor/plugins/multimesh_editor_plugin.cpp
+++ b/tools/editor/plugins/multimesh_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "multimesh_editor_plugin.h"
+
#include "scene/gui/box_container.h"
#include "scene/3d/mesh_instance.h"
#include "spatial_editor_plugin.h"
@@ -177,7 +178,7 @@ void MultiMeshEditor::_populate() {
Map<float,int> triangle_area_map;
for(int i=0;i<facecount;i++) {
- float area = r[i].get_area();;
+ float area = r[i].get_area();
if (area<CMP_EPSILON)
continue;
triangle_area_map[area_accum]=i;
diff --git a/tools/editor/plugins/navigation_polygon_editor_plugin.cpp b/tools/editor/plugins/navigation_polygon_editor_plugin.cpp
index b2d62af7bb..e70f2be9fa 100644
--- a/tools/editor/plugins/navigation_polygon_editor_plugin.cpp
+++ b/tools/editor/plugins/navigation_polygon_editor_plugin.cpp
@@ -127,7 +127,7 @@ bool NavigationPolygonEditor::forward_gui_input(const InputEvent& p_event) {
create_nav->set_text("No NavigationPolygon resource on this node.\nCreate and assign one?");
create_nav->popup_centered_minsize();
}
- return (p_event.type==InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index==1);;
+ return (p_event.type==InputEvent::MOUSE_BUTTON && p_event.mouse_button.button_index==1);
}
diff --git a/tools/editor/plugins/particles_2d_editor_plugin.cpp b/tools/editor/plugins/particles_2d_editor_plugin.cpp
index 331a958518..20b1b9d1ca 100644
--- a/tools/editor/plugins/particles_2d_editor_plugin.cpp
+++ b/tools/editor/plugins/particles_2d_editor_plugin.cpp
@@ -26,8 +26,8 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-
#include "particles_2d_editor_plugin.h"
+
#include "canvas_item_editor_plugin.h"
#include "io/image_loader.h"
#include "scene/gui/separator.h"
diff --git a/tools/editor/plugins/particles_editor_plugin.cpp b/tools/editor/plugins/particles_editor_plugin.cpp
index 382dc29c61..fd5ec5b5b9 100644
--- a/tools/editor/plugins/particles_editor_plugin.cpp
+++ b/tools/editor/plugins/particles_editor_plugin.cpp
@@ -212,7 +212,7 @@ void ParticlesEditor::_generate_emission_points() {
for(int i=0;i<geometry.size();i++) {
- float area = geometry[i].get_area();;
+ float area = geometry[i].get_area();
if (area<CMP_EPSILON)
continue;
triangle_area_map[area_accum]=i;
diff --git a/tools/editor/plugins/path_editor_plugin.cpp b/tools/editor/plugins/path_editor_plugin.cpp
index 4f0afe9e94..2e148d6486 100644
--- a/tools/editor/plugins/path_editor_plugin.cpp
+++ b/tools/editor/plugins/path_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "path_editor_plugin.h"
+
#include "spatial_editor_plugin.h"
#include "scene/resources/curve.h"
#include "os/keyboard.h"
@@ -376,7 +377,7 @@ bool PathEditorPlugin::forward_spatial_gui_input(Camera* p_camera,const InputEve
ur->create_action(TTR("Split Path"));
ur->add_do_method(c.ptr(),"add_point",closest_seg_point,Vector3(),Vector3(),closest_seg+1);
ur->add_undo_method(c.ptr(),"remove_point",closest_seg+1);
- ur->commit_action();;
+ ur->commit_action();
return true;
} else {
@@ -396,7 +397,7 @@ bool PathEditorPlugin::forward_spatial_gui_input(Camera* p_camera,const InputEve
ur->create_action(TTR("Add Point to Curve"));
ur->add_do_method(c.ptr(),"add_point",it.xform(inters),Vector3(),Vector3(),-1);
ur->add_undo_method(c.ptr(),"remove_point",c->get_point_count());
- ur->commit_action();;
+ ur->commit_action();
return true;
}
diff --git a/tools/editor/plugins/polygon_2d_editor_plugin.cpp b/tools/editor/plugins/polygon_2d_editor_plugin.cpp
index dc56348700..7958dce75a 100644
--- a/tools/editor/plugins/polygon_2d_editor_plugin.cpp
+++ b/tools/editor/plugins/polygon_2d_editor_plugin.cpp
@@ -26,8 +26,8 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-
#include "polygon_2d_editor_plugin.h"
+
#include "canvas_item_editor_plugin.h"
#include "os/file_access.h"
#include "tools/editor/editor_settings.h"
diff --git a/tools/editor/plugins/resource_preloader_editor_plugin.cpp b/tools/editor/plugins/resource_preloader_editor_plugin.cpp
index 0799732e02..cb139cbe24 100644
--- a/tools/editor/plugins/resource_preloader_editor_plugin.cpp
+++ b/tools/editor/plugins/resource_preloader_editor_plugin.cpp
@@ -27,13 +27,12 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "resource_preloader_editor_plugin.h"
+
#include "io/resource_loader.h"
#include "globals.h"
#include "tools/editor/editor_settings.h"
-
-
void ResourcePreloaderEditor::_gui_input(InputEvent p_event) {
diff --git a/tools/editor/plugins/rich_text_editor_plugin.cpp b/tools/editor/plugins/rich_text_editor_plugin.cpp
index f91af2fa60..8629d6ec8f 100644
--- a/tools/editor/plugins/rich_text_editor_plugin.cpp
+++ b/tools/editor/plugins/rich_text_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "rich_text_editor_plugin.h"
+
#include "os/file_access.h"
#include "canvas_item_editor_plugin.h"
diff --git a/tools/editor/plugins/sample_editor_plugin.cpp b/tools/editor/plugins/sample_editor_plugin.cpp
index cbeaeb7d60..c333ba017f 100644
--- a/tools/editor/plugins/sample_editor_plugin.cpp
+++ b/tools/editor/plugins/sample_editor_plugin.cpp
@@ -28,6 +28,7 @@
/*************************************************************************/
#include "sample_editor_plugin.h"
+#if 0
#include "io/resource_loader.h"
#include "globals.h"
#include "tools/editor/editor_settings.h"
@@ -447,4 +448,4 @@ SampleEditorPlugin::~SampleEditorPlugin()
{
}
-
+#endif
diff --git a/tools/editor/plugins/sample_editor_plugin.h b/tools/editor/plugins/sample_editor_plugin.h
index 6a416ddfbf..651cd14a84 100644
--- a/tools/editor/plugins/sample_editor_plugin.h
+++ b/tools/editor/plugins/sample_editor_plugin.h
@@ -29,7 +29,7 @@
#ifndef SAMPLE_EDITOR_PLUGIN_H
#define SAMPLE_EDITOR_PLUGIN_H
-
+#if 0
#include "tools/editor/editor_plugin.h"
#include "tools/editor/editor_node.h"
#include "scene/audio/sample_player.h"
@@ -87,4 +87,6 @@ public:
};
+#endif
+
#endif // SAMPLE_EDITOR_PLUGIN_H
diff --git a/tools/editor/plugins/sample_library_editor_plugin.cpp b/tools/editor/plugins/sample_library_editor_plugin.cpp
index c3e2481b5a..116c5d11b6 100644
--- a/tools/editor/plugins/sample_library_editor_plugin.cpp
+++ b/tools/editor/plugins/sample_library_editor_plugin.cpp
@@ -26,6 +26,8 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
+#if 0
#include "sample_library_editor_plugin.h"
#include "io/resource_loader.h"
@@ -541,3 +543,4 @@ SampleLibraryEditorPlugin::SampleLibraryEditorPlugin(EditorNode *p_node) {
SampleLibraryEditorPlugin::~SampleLibraryEditorPlugin()
{
}
+#endif
diff --git a/tools/editor/plugins/sample_library_editor_plugin.h b/tools/editor/plugins/sample_library_editor_plugin.h
index 1856d338ed..35028df859 100644
--- a/tools/editor/plugins/sample_library_editor_plugin.h
+++ b/tools/editor/plugins/sample_library_editor_plugin.h
@@ -30,7 +30,7 @@
#define SAMPLE_LIBRARY_EDITOR_PLUGIN_H
-
+#if 0
#include "tools/editor/editor_plugin.h"
#include "tools/editor/editor_node.h"
#include "scene/audio/sample_player.h"
@@ -104,4 +104,5 @@ public:
};
+#endif
#endif // SAMPLE_LIBRARY_EDITOR_PLUGIN_H
diff --git a/tools/editor/plugins/sample_player_editor_plugin.cpp b/tools/editor/plugins/sample_player_editor_plugin.cpp
index ae958a5c6e..dd6450bfe7 100644
--- a/tools/editor/plugins/sample_player_editor_plugin.cpp
+++ b/tools/editor/plugins/sample_player_editor_plugin.cpp
@@ -26,7 +26,11 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
+#if 0
#include "sample_player_editor_plugin.h"
+
+
#include "scene/resources/sample_library.h"
@@ -89,7 +93,7 @@ void SamplePlayerEditor::_update_sample_library() {
Ref<SampleLibrary> sl = node->call("get_sample_library");
if (sl.is_null()) {
samples->add_item("<NO SAMPLE LIBRARY>");
- return; //no sample library;;
+ return; //no sample library;
}
List<StringName> samplenames;
@@ -196,3 +200,4 @@ SamplePlayerEditorPlugin::~SamplePlayerEditorPlugin()
}
+#endif
diff --git a/tools/editor/plugins/sample_player_editor_plugin.h b/tools/editor/plugins/sample_player_editor_plugin.h
index d18496b4fd..ba1684497c 100644
--- a/tools/editor/plugins/sample_player_editor_plugin.h
+++ b/tools/editor/plugins/sample_player_editor_plugin.h
@@ -29,6 +29,8 @@
#ifndef SAMPLE_PLAYER_EDITOR_PLUGIN_H
#define SAMPLE_PLAYER_EDITOR_PLUGIN_H
+#if 0
+
#include "tools/editor/editor_plugin.h"
#include "tools/editor/editor_node.h"
#include "scene/3d/spatial_sample_player.h"
@@ -84,4 +86,5 @@ public:
};
+#endif
#endif // SAMPLE_PLAYER_EDITOR_PLUGIN_H
diff --git a/tools/editor/plugins/script_editor_plugin.cpp b/tools/editor/plugins/script_editor_plugin.cpp
index 61c2d5acfc..4738b348f4 100644
--- a/tools/editor/plugins/script_editor_plugin.cpp
+++ b/tools/editor/plugins/script_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "script_editor_plugin.h"
+
#include "tools/editor/editor_settings.h"
#include "io/resource_loader.h"
#include "io/resource_saver.h"
diff --git a/tools/editor/plugins/script_text_editor.cpp b/tools/editor/plugins/script_text_editor.cpp
index 95e7afa04c..e26a3b23bc 100644
--- a/tools/editor/plugins/script_text_editor.cpp
+++ b/tools/editor/plugins/script_text_editor.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "script_text_editor.h"
+
#include "tools/editor/editor_settings.h"
#include "os/keyboard.h"
#include "tools/editor/script_editor_debugger.h"
diff --git a/tools/editor/plugins/shader_editor_plugin.cpp b/tools/editor/plugins/shader_editor_plugin.cpp
index 90d0f7fc93..56a8fccb9c 100644
--- a/tools/editor/plugins/shader_editor_plugin.cpp
+++ b/tools/editor/plugins/shader_editor_plugin.cpp
@@ -27,8 +27,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "shader_editor_plugin.h"
-#include "tools/editor/editor_settings.h"
+#include "tools/editor/editor_settings.h"
#include "spatial_editor_plugin.h"
#include "scene/resources/shader_graph.h"
#include "io/resource_loader.h"
diff --git a/tools/editor/plugins/shader_graph_editor_plugin.cpp b/tools/editor/plugins/shader_graph_editor_plugin.cpp
index d989c5b30d..d86fec11d8 100644
--- a/tools/editor/plugins/shader_graph_editor_plugin.cpp
+++ b/tools/editor/plugins/shader_graph_editor_plugin.cpp
@@ -464,8 +464,7 @@ void GraphCurveMapEdit::_plot_curve(const Vector2& p_a,const Vector2& p_b,const
/* compose the basis and geometry matrices */
- static const float CR_basis[4][4] =
- {
+ static const float CR_basis[4][4] = {
{ -0.5, 1.5, -1.5, 0.5 },
{ 1.0, -2.5, 2.0, -0.5 },
{ -0.5, 0.0, 0.5, 0.0 },
diff --git a/tools/editor/plugins/spatial_editor_plugin.cpp b/tools/editor/plugins/spatial_editor_plugin.cpp
index 97bc5a25e3..f45194f53f 100644
--- a/tools/editor/plugins/spatial_editor_plugin.cpp
+++ b/tools/editor/plugins/spatial_editor_plugin.cpp
@@ -27,8 +27,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "spatial_editor_plugin.h"
-#include "print_string.h"
+#include "print_string.h"
#include "os/keyboard.h"
#include "scene/3d/visual_instance.h"
#include "scene/3d/camera.h"
@@ -1527,11 +1527,11 @@ void SpatialEditorViewport::_sinput(const InputEvent &p_event) {
if (m.mod.meta)
mod=KEY_META;
- if (mod == _get_key_modifier("3d_editor/pan_modifier"))
+ if (mod == _get_key_modifier("editors/3d/pan_modifier"))
nav_mode = NAVIGATION_PAN;
- else if (mod == _get_key_modifier("3d_editor/zoom_modifier"))
+ else if (mod == _get_key_modifier("editors/3d/zoom_modifier"))
nav_mode = NAVIGATION_ZOOM;
- else if (mod == _get_key_modifier("3d_editor/orbit_modifier"))
+ else if (mod == _get_key_modifier("editors/3d/orbit_modifier"))
nav_mode = NAVIGATION_ORBIT;
} else if (nav_scheme == NAVIGATION_MAYA) {
@@ -1552,11 +1552,11 @@ void SpatialEditorViewport::_sinput(const InputEvent &p_event) {
mod=KEY_META;
if(mod){
- if (mod == _get_key_modifier("3d_editor/pan_modifier"))
+ if (mod == _get_key_modifier("editors/3d/pan_modifier"))
nav_mode = NAVIGATION_PAN;
- else if (mod == _get_key_modifier("3d_editor/zoom_modifier"))
+ else if (mod == _get_key_modifier("editors/3d/zoom_modifier"))
nav_mode = NAVIGATION_ZOOM;
- else if (mod == _get_key_modifier("3d_editor/orbit_modifier"))
+ else if (mod == _get_key_modifier("editors/3d/orbit_modifier"))
nav_mode = NAVIGATION_ORBIT;
}
}
@@ -1587,7 +1587,7 @@ void SpatialEditorViewport::_sinput(const InputEvent &p_event) {
if (nav_scheme==NAVIGATION_MAYA && m.mod.shift)
zoom_speed *= zoom_speed_modifier;
- NavigationZoomStyle zoom_style = (NavigationZoomStyle)EditorSettings::get_singleton()->get("3d_editor/zoom_style").operator int();
+ NavigationZoomStyle zoom_style = (NavigationZoomStyle)EditorSettings::get_singleton()->get("editors/3d/zoom_style").operator int();
if (zoom_style == NAVIGATION_ZOOM_HORIZONTAL) {
if ( m.relative_x > 0)
cursor.distance*=1-m.relative_x*zoom_speed;
@@ -2350,7 +2350,7 @@ SpatialEditorViewport::SpatialEditorViewport(SpatialEditor *p_spatial_editor, Ed
index=p_index;
editor=p_editor;
- editor_selection=editor->get_editor_selection();;
+ editor_selection=editor->get_editor_selection();
undo_redo=editor->get_undo_redo();
clicked=0;
clicked_includes_current=false;
@@ -2606,12 +2606,12 @@ Dictionary SpatialEditor::get_state() const {
d["viewports"]=vpdata;
- d["default_light"]=view_menu->get_popup()->is_item_checked( view_menu->get_popup()->get_item_index(MENU_VIEW_USE_DEFAULT_LIGHT) );;
+ d["default_light"]=view_menu->get_popup()->is_item_checked( view_menu->get_popup()->get_item_index(MENU_VIEW_USE_DEFAULT_LIGHT) );
d["ambient_light_color"]=settings_ambient_color->get_pick_color();
- d["default_srgb"]=view_menu->get_popup()->is_item_checked( view_menu->get_popup()->get_item_index(MENU_VIEW_USE_DEFAULT_SRGB) );;
- d["show_grid"]=view_menu->get_popup()->is_item_checked( view_menu->get_popup()->get_item_index(MENU_VIEW_GRID) );;
- d["show_origin"]=view_menu->get_popup()->is_item_checked( view_menu->get_popup()->get_item_index(MENU_VIEW_ORIGIN) );;
+ d["default_srgb"]=view_menu->get_popup()->is_item_checked( view_menu->get_popup()->get_item_index(MENU_VIEW_USE_DEFAULT_SRGB) );
+ d["show_grid"]=view_menu->get_popup()->is_item_checked( view_menu->get_popup()->get_item_index(MENU_VIEW_GRID) );
+ d["show_origin"]=view_menu->get_popup()->is_item_checked( view_menu->get_popup()->get_item_index(MENU_VIEW_ORIGIN) );
d["fov"]=get_fov();
d["znear"]=get_znear();
d["zfar"]=get_zfar();
@@ -3141,7 +3141,7 @@ void SpatialEditor::_init_indicators() {
{
- indicator_mat.instance();;
+ indicator_mat.instance();
indicator_mat->set_flag(FixedSpatialMaterial::FLAG_UNSHADED,true);
indicator_mat->set_flag(FixedSpatialMaterial::FLAG_ONTOP,true);
indicator_mat->set_flag(FixedSpatialMaterial::FLAG_ALBEDO_FROM_VERTEX_COLOR,true);
@@ -4095,7 +4095,7 @@ SpatialEditor::SpatialEditor(EditorNode *p_editor) {
add_to_group("_spatial_editor_group");
EDITOR_DEF("editors/3d/manipulator_gizmo_size",80);
- EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::INT,"3d_editor/manipulator_gizmo_size",PROPERTY_HINT_RANGE,"16,1024,1"));
+ EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::INT,"editors/3d/manipulator_gizmo_size",PROPERTY_HINT_RANGE,"16,1024,1"));
EDITOR_DEF("editors/3d/manipulator_gizmo_opacity",0.2);
over_gizmo_handle=-1;
diff --git a/tools/editor/plugins/stream_editor_plugin.cpp b/tools/editor/plugins/stream_editor_plugin.cpp
index 00d7b208c8..991c29b6db 100644
--- a/tools/editor/plugins/stream_editor_plugin.cpp
+++ b/tools/editor/plugins/stream_editor_plugin.cpp
@@ -28,7 +28,7 @@
/*************************************************************************/
#include "stream_editor_plugin.h"
-
+#if 0
void StreamEditor::_notification(int p_what) {
@@ -146,3 +146,4 @@ StreamEditorPlugin::~StreamEditorPlugin()
{
}
+#endif
diff --git a/tools/editor/plugins/stream_editor_plugin.h b/tools/editor/plugins/stream_editor_plugin.h
index af29f64f93..cc853d4661 100644
--- a/tools/editor/plugins/stream_editor_plugin.h
+++ b/tools/editor/plugins/stream_editor_plugin.h
@@ -29,7 +29,7 @@
#ifndef STREAM_EDITOR_PLUGIN_H
#define STREAM_EDITOR_PLUGIN_H
-
+#if 0
#include "tools/editor/editor_plugin.h"
#include "tools/editor/editor_node.h"
#include "scene/audio/stream_player.h"
@@ -81,3 +81,4 @@ public:
};
#endif // STREAM_EDITOR_PLUGIN_H
+#endif
diff --git a/tools/editor/plugins/texture_editor_plugin.cpp b/tools/editor/plugins/texture_editor_plugin.cpp
index a846a908d2..82cba7ac0e 100644
--- a/tools/editor/plugins/texture_editor_plugin.cpp
+++ b/tools/editor/plugins/texture_editor_plugin.cpp
@@ -1,3 +1,31 @@
+/*************************************************************************/
+/* texture_editor_plugin.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#include "texture_editor_plugin.h"
#include "io/resource_loader.h"
diff --git a/tools/editor/plugins/texture_editor_plugin.h b/tools/editor/plugins/texture_editor_plugin.h
index 4b05f7f7ab..456a5249de 100644
--- a/tools/editor/plugins/texture_editor_plugin.h
+++ b/tools/editor/plugins/texture_editor_plugin.h
@@ -1,3 +1,31 @@
+/*************************************************************************/
+/* texture_editor_plugin.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#ifndef TEXTURE_EDITOR_PLUGIN_H
#define TEXTURE_EDITOR_PLUGIN_H
diff --git a/tools/editor/plugins/texture_region_editor_plugin.cpp b/tools/editor/plugins/texture_region_editor_plugin.cpp
index 1ad880c4d6..9b0ca0a482 100644
--- a/tools/editor/plugins/texture_region_editor_plugin.cpp
+++ b/tools/editor/plugins/texture_region_editor_plugin.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* texture_region_editor_plugin.cpp */
+/* texture_region_editor_plugin.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,9 +28,9 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+#include "texture_region_editor_plugin.h"
#include "core/core_string_names.h"
-#include "texture_region_editor_plugin.h"
#include "scene/gui/check_box.h"
#include "os/input.h"
#include "os/keyboard.h"
diff --git a/tools/editor/plugins/texture_region_editor_plugin.h b/tools/editor/plugins/texture_region_editor_plugin.h
index 35c0f18efa..da713a53d3 100644
--- a/tools/editor/plugins/texture_region_editor_plugin.h
+++ b/tools/editor/plugins/texture_region_editor_plugin.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* texture_region_editor_plugin.h */
+/* texture_region_editor_plugin.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
diff --git a/tools/editor/plugins/theme_editor_plugin.cpp b/tools/editor/plugins/theme_editor_plugin.cpp
index 027e91ade8..4b8fea5a45 100644
--- a/tools/editor/plugins/theme_editor_plugin.cpp
+++ b/tools/editor/plugins/theme_editor_plugin.cpp
@@ -26,8 +26,9 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "version.h"
#include "theme_editor_plugin.h"
+
+#include "version.h"
#include "os/file_access.h"
void ThemeEditor::edit(const Ref<Theme>& p_theme) {
@@ -584,7 +585,7 @@ void ThemeEditor::_theme_menu_cbk(int p_option) {
List<StringName> types;
base_theme->get_type_list(&types);
- type_menu->get_popup()->clear();;
+ type_menu->get_popup()->clear();
if (p_option==0 || p_option==1) {//add
diff --git a/tools/editor/plugins/tile_map_editor_plugin.cpp b/tools/editor/plugins/tile_map_editor_plugin.cpp
index 1a8c35a0be..7c232f0c32 100644
--- a/tools/editor/plugins/tile_map_editor_plugin.cpp
+++ b/tools/editor/plugins/tile_map_editor_plugin.cpp
@@ -26,12 +26,10 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-
#include "tile_map_editor_plugin.h"
#include "os/keyboard.h"
#include "os/input.h"
-
#include "canvas_item_editor_plugin.h"
#include "tools/editor/editor_settings.h"
#include "tools/editor/editor_scale.h"
diff --git a/tools/editor/plugins/tile_set_editor_plugin.cpp b/tools/editor/plugins/tile_set_editor_plugin.cpp
index bb6236a6d6..3db6c94917 100644
--- a/tools/editor/plugins/tile_set_editor_plugin.cpp
+++ b/tools/editor/plugins/tile_set_editor_plugin.cpp
@@ -27,8 +27,10 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "tile_set_editor_plugin.h"
+
#include "scene/2d/sprite.h"
#include "scene/2d/physics_body_2d.h"
+
void TileSetEditor::edit(const Ref<TileSet>& p_tileset) {
tileset=p_tileset;
diff --git a/tools/editor/progress_dialog.cpp b/tools/editor/progress_dialog.cpp
index 03303b8c48..76626c4556 100644
--- a/tools/editor/progress_dialog.cpp
+++ b/tools/editor/progress_dialog.cpp
@@ -27,10 +27,12 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "progress_dialog.h"
+
#include "main/main.h"
#include "message_queue.h"
#include "os/os.h"
#include "editor_scale.h"
+
void BackgroundProgress::_add_task(const String& p_task,const String& p_label, int p_steps) {
_THREAD_SAFE_METHOD_
diff --git a/tools/editor/project_export.cpp b/tools/editor/project_export.cpp
index 10005b6850..cacefaa1a2 100644
--- a/tools/editor/project_export.cpp
+++ b/tools/editor/project_export.cpp
@@ -31,12 +31,10 @@
#include "os/dir_access.h"
#include "os/file_access.h"
#include "globals.h"
-
#include "io/resource_loader.h"
#include "io/resource_saver.h"
#include "os/os.h"
#include "scene/gui/box_container.h"
-
#include "scene/gui/tab_container.h"
#include "scene/gui/scroll_container.h"
#include "editor_data.h"
diff --git a/tools/editor/project_manager.cpp b/tools/editor/project_manager.cpp
index 2cf940a29a..fb8cccdb79 100644
--- a/tools/editor/project_manager.cpp
+++ b/tools/editor/project_manager.cpp
@@ -26,8 +26,9 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "version.h"
#include "project_manager.h"
+
+#include "version.h"
#include "os/os.h"
#include "os/dir_access.h"
#include "os/file_access.h"
@@ -36,20 +37,16 @@
#include "scene/gui/separator.h"
#include "scene/gui/tool_button.h"
#include "io/config_file.h"
-
#include "scene/gui/line_edit.h"
#include "scene/gui/panel_container.h"
#include "scene/gui/center_container.h"
#include "io/stream_peer_ssl.h"
-
#include "scene/gui/texture_rect.h"
#include "scene/gui/margin_container.h"
#include "io/resource_saver.h"
-
#include "editor_themes.h"
#include "editor_initialize_ssl.h"
#include "editor_scale.h"
-
#include "io/zip_io.h"
class NewProjectDialog : public ConfirmationDialog {
diff --git a/tools/editor/project_settings.cpp b/tools/editor/project_settings.cpp
index 0396456c49..15d03b8a2b 100644
--- a/tools/editor/project_settings.cpp
+++ b/tools/editor/project_settings.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "project_settings.h"
+
#include "scene/gui/tab_container.h"
#include "globals.h"
#include "os/keyboard.h"
@@ -779,7 +780,7 @@ void ProjectSettings::_copy_to_platform(int p_which) {
String name = catname+"/"+propname;
Variant value=GlobalConfig::get_singleton()->get(name);
- catname+="."+popup_platform->get_popup()->get_item_text(p_which);;
+ catname+="."+popup_platform->get_popup()->get_item_text(p_which);
name = catname+"/"+propname;
GlobalConfig::get_singleton()->set(name,value);
@@ -1362,7 +1363,7 @@ ProjectSettings::ProjectSettings(EditorData *p_data) {
Control *input_base = memnew( Control );
input_base->set_name(TTR("Input Map"));
- input_base->set_area_as_parent_rect();;
+ input_base->set_area_as_parent_rect();
tab_container->add_child(input_base);
VBoxContainer *vbc = memnew( VBoxContainer );
diff --git a/tools/editor/property_editor.cpp b/tools/editor/property_editor.cpp
index 8f294a5102..fc1fe43cef 100644
--- a/tools/editor/property_editor.cpp
+++ b/tools/editor/property_editor.cpp
@@ -27,10 +27,11 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "property_editor.h"
+
#include "scene/gui/label.h"
#include "io/resource_loader.h"
#include "io/image_loader.h"
-#include "object_type_db.h"
+#include "class_db.h"
#include "print_string.h"
#include "globals.h"
#include "scene/resources/font.h"
@@ -4660,7 +4661,7 @@ void SectionedPropertyEditor::_section_selected() {
void SectionedPropertyEditor::set_current_section(const String& p_section) {
if (section_map.has(p_section)) {
- section_map[p_section]->select(0);;
+ section_map[p_section]->select(0);
}
}
diff --git a/tools/editor/property_selector.cpp b/tools/editor/property_selector.cpp
index 3d9695ac2a..3eeec1634d 100644
--- a/tools/editor/property_selector.cpp
+++ b/tools/editor/property_selector.cpp
@@ -1,6 +1,34 @@
+/*************************************************************************/
+/* property_selector.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#include "property_selector.h"
-#include "editor_scale.h"
+#include "editor_scale.h"
#include "os/keyboard.h"
void PropertySelector::_text_changed(const String& p_newtext) {
diff --git a/tools/editor/property_selector.h b/tools/editor/property_selector.h
index 4823d50e0f..d29183f85e 100644
--- a/tools/editor/property_selector.h
+++ b/tools/editor/property_selector.h
@@ -1,3 +1,31 @@
+/*************************************************************************/
+/* property_selector.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
#ifndef PROPERTYSELECTOR_H
#define PROPERTYSELECTOR_H
diff --git a/tools/editor/pvrtc_compress.cpp b/tools/editor/pvrtc_compress.cpp
index 7f84d8d00e..b130f6c773 100644
--- a/tools/editor/pvrtc_compress.cpp
+++ b/tools/editor/pvrtc_compress.cpp
@@ -27,12 +27,14 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "pvrtc_compress.h"
+
#include "editor_settings.h"
#include "scene/resources/texture.h"
#include "io/resource_saver.h"
#include "io/resource_loader.h"
#include "os/os.h"
#include "os/file_access.h"
+
static void (*_base_image_compress_pvrtc2_func)(Image *)=NULL;
static void (*_base_image_compress_pvrtc4_func)(Image *)=NULL;
diff --git a/tools/editor/quick_open.cpp b/tools/editor/quick_open.cpp
index ff5ecdf01b..615b42b411 100644
--- a/tools/editor/quick_open.cpp
+++ b/tools/editor/quick_open.cpp
@@ -27,8 +27,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "quick_open.h"
-#include "os/keyboard.h"
+#include "os/keyboard.h"
void EditorQuickOpen::popup(const StringName &p_base, bool p_enable_multi, bool p_add_dirs, bool p_dontclear) {
diff --git a/tools/editor/reparent_dialog.cpp b/tools/editor/reparent_dialog.cpp
index 4b6a032b64..c5b74d9006 100644
--- a/tools/editor/reparent_dialog.cpp
+++ b/tools/editor/reparent_dialog.cpp
@@ -30,8 +30,6 @@
#include "scene/gui/label.h"
#include "scene/gui/box_container.h"
-
-
#include "print_string.h"
void ReparentDialog::_notification(int p_what) {
@@ -107,7 +105,7 @@ ReparentDialog::ReparentDialog() {
vbc->add_child(keep_transform);
- //vbc->add_margin_child("Options:",node_only);;
+ //vbc->add_margin_child("Options:",node_only);
//cancel->connect("pressed", this,"_cancel");
diff --git a/tools/editor/resources_dock.cpp b/tools/editor/resources_dock.cpp
index ddd4a782e4..e89262db25 100644
--- a/tools/editor/resources_dock.cpp
+++ b/tools/editor/resources_dock.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "resources_dock.h"
+
#include "editor_node.h"
#include "io/resource_loader.h"
#include "io/resource_saver.h"
@@ -122,7 +123,7 @@ void ResourcesDock::_notification(int p_what) {
void ResourcesDock::save_resource(const String& p_path,const Ref<Resource>& p_resource) {
- editor->get_editor_data().apply_changes_in_editors();;
+ editor->get_editor_data().apply_changes_in_editors();
int flg=0;
if (EditorSettings::get_singleton()->get("on_save/compress_binary_resources"))
flg|=ResourceSaver::FLAG_COMPRESS;
diff --git a/tools/editor/scene_tree_dock.cpp b/tools/editor/scene_tree_dock.cpp
index 9b625c422b..6247a9b578 100644
--- a/tools/editor/scene_tree_dock.cpp
+++ b/tools/editor/scene_tree_dock.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "scene_tree_dock.h"
+
#include "editor_node.h"
#include "globals.h"
#include "os/keyboard.h"
diff --git a/tools/editor/scene_tree_editor.cpp b/tools/editor/scene_tree_editor.cpp
index 7b6a03e20e..77640b9c80 100644
--- a/tools/editor/scene_tree_editor.cpp
+++ b/tools/editor/scene_tree_editor.cpp
@@ -27,13 +27,13 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "scene_tree_editor.h"
+
#include "scene/gui/label.h"
#include "editor_node.h"
#include "print_string.h"
#include "message_queue.h"
#include "scene/main/viewport.h"
#include "tools/editor/plugins/canvas_item_editor_plugin.h"
-
#include "scene/resources/packed_scene.h"
Node *SceneTreeEditor::get_scene_node() {
diff --git a/tools/editor/script_create_dialog.cpp b/tools/editor/script_create_dialog.cpp
index 2a76224e33..da01cdefe5 100644
--- a/tools/editor/script_create_dialog.cpp
+++ b/tools/editor/script_create_dialog.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "script_create_dialog.h"
+
#include "script_language.h"
#include "globals.h"
#include "io/resource_saver.h"
diff --git a/tools/editor/script_editor_debugger.cpp b/tools/editor/script_editor_debugger.cpp
index e53e69d9e0..42ab234d4b 100644
--- a/tools/editor/script_editor_debugger.cpp
+++ b/tools/editor/script_editor_debugger.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "script_editor_debugger.h"
+
#include "scene/gui/separator.h"
#include "scene/gui/label.h"
#include "scene/gui/split_container.h"
@@ -1188,7 +1189,7 @@ void ScriptEditorDebugger::_profiler_seeked() {
if (breaked)
return;
- debug_break();;
+ debug_break();
}
diff --git a/tools/editor/settings_config_dialog.cpp b/tools/editor/settings_config_dialog.cpp
index c72f2641b7..31cbcee5ae 100644
--- a/tools/editor/settings_config_dialog.cpp
+++ b/tools/editor/settings_config_dialog.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "settings_config_dialog.h"
+
#include "editor_settings.h"
#include "scene/gui/margin_container.h"
#include "globals.h"
diff --git a/tools/editor/spatial_editor_gizmos.cpp b/tools/editor/spatial_editor_gizmos.cpp
index 82dfa94c06..adbac4b12b 100644
--- a/tools/editor/spatial_editor_gizmos.cpp
+++ b/tools/editor/spatial_editor_gizmos.cpp
@@ -27,6 +27,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "spatial_editor_gizmos.h"
+
#include "geometry.h"
#include "scene/3d/camera.h"
#include "scene/resources/surface_tool.h"
@@ -285,7 +286,8 @@ void EditorSpatialGizmo::add_handles(const Vector<Vector3> &p_handles, bool p_bi
Vector<Vector3> normals;
int vtx_idx=0;
-#define ADD_VTX(m_idx);\
+
+#define ADD_VTX(m_idx) \
vertices.push_back( (face_points[m_idx]*HANDLE_HALF_SIZE+p_handles[ih]) );\
normals.push_back( normal_points[m_idx] );\
vtx_idx++;\
@@ -953,28 +955,6 @@ LightSpatialGizmo::LightSpatialGizmo(Light* p_light){
set_spatial_node(p_light);
}
-//////
-
-void ListenerSpatialGizmo::redraw() {
-
- clear();
-
- add_unscaled_billboard(SpatialEditorGizmos::singleton->listener_icon, 0.05);
-
- add_mesh(SpatialEditorGizmos::singleton->listener_line_mesh);
- Vector<Vector3> cursor_points;
- cursor_points.push_back(Vector3(0, 0, 0));
- cursor_points.push_back(Vector3(0, 0, -1.0));
- add_collision_segments(cursor_points);
-
-}
-
-ListenerSpatialGizmo::ListenerSpatialGizmo(Listener* p_listener){
-
- set_spatial_node(p_listener);
- listener = p_listener;
-}
-
//////
@@ -1391,32 +1371,6 @@ SkeletonSpatialGizmo::SkeletonSpatialGizmo(Skeleton* p_skel) {
set_spatial_node(p_skel);
}
-/////
-
-
-void SpatialPlayerSpatialGizmo::redraw() {
-
- clear();
- if (splayer->cast_to<SpatialStreamPlayer>()) {
-
- add_unscaled_billboard(SpatialEditorGizmos::singleton->stream_player_icon,0.05);
-
- } else if (splayer->cast_to<SpatialSamplePlayer>()) {
-
- add_unscaled_billboard(SpatialEditorGizmos::singleton->sample_player_icon,0.05);
-
- }
-
-}
-
-SpatialPlayerSpatialGizmo::SpatialPlayerSpatialGizmo(SpatialPlayer* p_splayer){
-
- set_spatial_node(p_splayer);
- splayer=p_splayer;
-}
-
-
-/////
void RoomSpatialGizmo::redraw() {
@@ -2168,7 +2122,7 @@ void VisibilityNotifierGizmo::set_handle(int p_idx,Camera *p_camera, const Point
Vector3 ray_dir = p_camera->project_ray_normal(p_point);
Vector3 sg[2]={gi.xform(ray_from),gi.xform(ray_from+ray_dir*4096)};
- Vector3 ofs = aabb.pos+aabb.size*0.5;;
+ Vector3 ofs = aabb.pos+aabb.size*0.5;
Vector3 axis;
axis[p_idx]=1.0;
@@ -3165,11 +3119,7 @@ Ref<SpatialEditorGizmo> SpatialEditorGizmos::get_gizmo(Spatial *p_spatial) {
return lsg;
}
- if (p_spatial->cast_to<Listener>()) {
- Ref<ListenerSpatialGizmo> misg = memnew(ListenerSpatialGizmo(p_spatial->cast_to<Listener>()));
- return misg;
- }
if (p_spatial->cast_to<Camera>()) {
@@ -3227,12 +3177,6 @@ Ref<SpatialEditorGizmo> SpatialEditorGizmos::get_gizmo(Spatial *p_spatial) {
return misg;
}
- if (p_spatial->cast_to<SpatialPlayer>()) {
-
- Ref<SpatialPlayerSpatialGizmo> misg = memnew( SpatialPlayerSpatialGizmo(p_spatial->cast_to<SpatialPlayer>()) );
- return misg;
- }
-
if (p_spatial->cast_to<CollisionShape>()) {
Ref<CollisionShapeSpatialGizmo> misg = memnew( CollisionShapeSpatialGizmo(p_spatial->cast_to<CollisionShape>()) );
@@ -3494,7 +3438,7 @@ SpatialEditorGizmos::SpatialEditorGizmos() {
PoolVector<Vector3> vertices;
#undef ADD_VTX
-#define ADD_VTX(m_idx);\
+#define ADD_VTX(m_idx) \
vertices.push_back( face_points[m_idx] );
for (int i=0;i<6;i++) {
diff --git a/tools/editor/spatial_editor_gizmos.h b/tools/editor/spatial_editor_gizmos.h
index 8fde52b05a..8a63d4f81e 100644
--- a/tools/editor/spatial_editor_gizmos.h
+++ b/tools/editor/spatial_editor_gizmos.h
@@ -35,8 +35,6 @@
#include "scene/3d/listener.h"
#include "scene/3d/camera.h"
#include "scene/3d/position_3d.h"
-#include "scene/3d/spatial_sample_player.h"
-#include "scene/3d/spatial_stream_player.h"
#include "scene/3d/test_cube.h"
#include "scene/3d/mesh_instance.h"
#include "scene/3d/body_shape.h"
@@ -146,19 +144,6 @@ public:
};
-class ListenerSpatialGizmo : public EditorSpatialGizmo {
-
- GDCLASS(ListenerSpatialGizmo, EditorSpatialGizmo);
-
- Listener* listener;
-
-public:
-
- void redraw();
- ListenerSpatialGizmo(Listener* p_listener = NULL);
-
-};
-
class CameraSpatialGizmo : public EditorSpatialGizmo {
GDCLASS(CameraSpatialGizmo,EditorSpatialGizmo);
@@ -220,23 +205,6 @@ public:
};
-
-
-class SpatialPlayerSpatialGizmo : public EditorSpatialGizmo {
-
- GDCLASS(SpatialPlayerSpatialGizmo,EditorSpatialGizmo);
-
- SpatialPlayer* splayer;
-
-public:
-
- void redraw();
- SpatialPlayerSpatialGizmo(SpatialPlayer* p_splayer=NULL);
-
-};
-
-
-
class TestCubeSpatialGizmo : public EditorSpatialGizmo {
GDCLASS(TestCubeSpatialGizmo,EditorSpatialGizmo);