From d1cdad855371fcd31c1de22998fb1ecbc649012e Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 8 Mar 2018 19:31:30 +0300 Subject: [PATCH] Change project to make it work with UnShame's gulp script --- .gitignore | 5 +- FEATURES_LIST.MD | 146 ----------- COMPILE_VMF.bat => compile.bat | 4 +- .../physx_334_win32.physx_metadata | Bin .../physx_334_win32_64bit.physx_metadata | Bin .../core/shader_nodes/abs.shader_node | 0 .../core/shader_nodes/add.shader_node | 0 .../particle_id.shader_node | 0 .../particle_uv_frame.shader_node | 0 .../particle_uv_scale.shader_node | 0 .../particle_vertex_color.shader_node | 0 .../soft_particles.shader_node | 0 .../billboard_particles/texcoord.shader_node | 0 .../uv_animation.shader_node | 0 .../core/shader_nodes/blackbody.shader_node | 0 .../shader_nodes/blend_normals.shader_node | 0 .../shader_nodes/camera_position.shader_node | 0 .../core/shader_nodes/ceil.shader_node | 0 .../core/shader_nodes/clamp.shader_node | 0 .../shader_nodes/colormap_jet.shader_node | 0 .../shader_nodes/constant_scalar.shader_node | 0 .../shader_nodes/constant_vector2.shader_node | 0 .../shader_nodes/constant_vector3.shader_node | 0 .../shader_nodes/constant_vector4.shader_node | 0 .../construct_vector2.shader_node | 0 .../construct_vector3.shader_node | 0 .../construct_vector4.shader_node | 0 .../core/shader_nodes/cos.shader_node | 0 .../core/shader_nodes/cross.shader_node | 0 .../shader_nodes/current_time.shader_node | 0 .../core/shader_nodes/ddx.shader_node | 0 .../core/shader_nodes/ddy.shader_node | 0 .../decal_box_distance.shader_node | 0 .../shader_nodes/decal_parallax.shader_node | 0 .../decal_tangent_to_world.shader_node | 0 .../core/shader_nodes/decal_uv.shader_node | 0 .../decal_world_position.shader_node | 0 .../shader_nodes/desaturation.shader_node | 0 .../core/shader_nodes/distance.shader_node | 0 .../shader_nodes/distance_fade.shader_node | 0 .../core/shader_nodes/div.shader_node | 0 .../core/shader_nodes/dot.shader_node | 0 .../core/shader_nodes/exp.shader_node | 0 .../shader_nodes/eye_intensity.shader_node | 0 .../core/shader_nodes/eye_vector.shader_node | 0 .../core/shader_nodes/flipbook.shader_node | 0 .../shader_nodes/flipbook_sampler.shader_node | 0 .../core/shader_nodes/floor.shader_node | 0 .../core/shader_nodes/fmod.shader_node | 0 .../core/shader_nodes/frac.shader_node | 0 .../core/shader_nodes/fresnel.shader_node | 0 .../shader_nodes/graph_common.shader_source | 0 .../core/shader_nodes/hsv_to_rgb.shader_node | 0 .../core/shader_nodes/if.shader_node | 0 .../core/shader_nodes/invert.shader_node | 0 .../core/shader_nodes/length.shader_node | 0 .../core/shader_nodes/lerp.shader_node | 0 .../core/shader_nodes/light_color.shader_node | 0 .../shader_nodes/light_vector.shader_node | 0 .../material_variable.shader_node | 0 .../core/shader_nodes/max.shader_node | 0 .../core/shader_nodes/min.shader_node | 0 .../core/shader_nodes/mul.shader_node | 0 .../shader_nodes/noise/noise2D.shader_node | 0 .../shader_nodes/noise/noise3D.shader_node | 0 .../shader_nodes/noise/noise4D.shader_node | 0 .../core/shader_nodes/normalize.shader_node | 0 .../shader_nodes/normalize_vs.shader_node | 0 .../shader_nodes/object_to_world.shader_node | 0 .../core/shader_nodes/option.shader_node | 0 .../orientation_forward.shader_node | 0 .../orientation_position.shader_node | 0 .../orientation_right.shader_node | 0 .../shader_nodes/orientation_up.shader_node | 0 .../core/shader_nodes/panner.shader_node | 0 .../core/shader_nodes/parallax.shader_node | 0 .../core/shader_nodes/pixel_depth.shader_node | 0 .../core/shader_nodes/power.shader_node | 0 .../projected_texcoord.shader_node | 0 .../core/shader_nodes/reflect.shader_node | 0 .../core/shader_nodes/refract.shader_node | 0 .../core/shader_nodes/rgb_to_hsv.shader_node | 0 .../ribbon_texcoord.shader_node | 0 .../ribbon_uv_frame.shader_node | 0 .../ribbon_uv_scale.shader_node | 0 .../ribbon_vertex_color.shader_node | 0 .../core/shader_nodes/rotator.shader_node | 0 .../core/shader_nodes/sample_cube.shader_node | 0 .../shader_nodes/sample_texture.shader_node | 0 ...sample_texture_or_pass_through.shader_node | 0 .../sample_texture_vertex.shader_node | 0 .../core/shader_nodes/sin.shader_node | 0 .../skydome/skydome_cloud_map.shader_node | 0 .../skydome_cloud_speed_scale.shader_node | 0 .../skydome/skydome_color.shader_node | 0 .../skydome/skydome_fog_color.shader_node | 0 .../skydome_fog_height_falloff.shader_node | 0 .../skydome/skydome_intensity.shader_node | 0 .../skydome/skydome_tint_color.shader_node | 0 .../core/shader_nodes/smoothstep.shader_node | 0 .../core/shader_nodes/square_root.shader_node | 0 .../core/shader_nodes/subtract.shader_node | 0 .../core/shader_nodes/sun_color.shader_node | 0 .../shader_nodes/sun_direction.shader_node | 0 .../shader_nodes/sun_shadow_mask.shader_node | 0 .../shader_nodes/tangent_to_world.shader_node | 0 .../terrain_base_normal.shader_node | 0 .../terrain_blend_mask.shader_node | 0 .../shader_nodes/terrain_height.shader_node | 0 .../core/shader_nodes/terrain_uv.shader_node | 0 .../texture_coordinate0.shader_node | 0 .../texture_coordinate1.shader_node | 0 .../texture_coordinate2.shader_node | 0 .../texture_coordinate3.shader_node | 0 .../texture_coordinate4.shader_node | 0 .../core/shader_nodes/translation.shader_node | 0 .../vegetation_bending.shader_node | 0 .../shader_nodes/vertex_binormal.shader_node | 0 .../shader_nodes/vertex_color0.shader_node | 0 .../vertex_instanceid.shader_node | 0 .../shader_nodes/vertex_position.shader_node | 0 .../shader_nodes/vertex_tangent.shader_node | 0 .../wave_displacement.shader_node | 0 .../core/shader_nodes/wind_amount.shader_node | 0 .../world_space_normal.shader_node | 0 .../shader_nodes/world_to_object.shader_node | 0 .../shader_nodes/world_to_tangent.shader_node | 0 .../shader_nodes/world_to_view.shader_node | 0 .../environments/color_grading_identity.dds | Bin .../color_grading_identity.texture | 0 ...lt_shading_environment.object_creator_item | 0 .../environments/empty_black.dds | Bin .../environments/empty_black.texture | 0 .../environments/env_materials.material | 0 .../environments/lensdirt.dds | Bin .../environments/lensdirt.texture | 0 .../environments/midday/diffuse_cube.dds | Bin .../environments/midday/diffuse_cube.texture | 0 .../midday/midday.shading_environment | 0 .../midday/midday_shading_environment.entity | 0 .../environments/midday/skydome.dds | Bin .../environments/midday/skydome.texture | 0 .../environments/midday/specular_cube.dds | Bin .../environments/midday/specular_cube.texture | 0 .../outdoor.shading_environment_template | 0 .../output_nodes/anisotropic_base.shader_node | 0 .../output_nodes/billboard_base.shader_node | 0 .../billboard_unlit_base.shader_node | 0 .../output_nodes/decal_base.shader_node | 0 .../output_nodes/light_base.shader_node | 0 .../output_nodes/particle_base.shader_node | 0 .../particle_distortion_base.shader_node | 0 .../particle_gbuffer_base.shader_node | 0 .../output_nodes/probe_base.shader_node | 0 .../output_nodes/ribbon_base.shader_node | 0 .../output_nodes/skydome_base.shader_node | 0 .../output_nodes/standard_base.shader_node | 0 .../standard_base_bitsquid.shader_node | 0 .../output_nodes/terrain_base.shader_node | 0 .../output_nodes/unlit_base.shader_node | 0 .../shader_import/global_textures.config | 0 .../shader_import/no_uvs.material | 0 .../shader_import/no_uvs_transparent.material | 0 .../shader_import/standard.material | 0 .../shader_import/standard.shader_import | 0 .../shader_import/standard_masked.material | 0 .../standard_transparent.material | 0 .../shader_libraries/common.shader_source | 0 .../shader_libraries/compute.shader_source | 0 .../shader_libraries/decals.shader_source | 0 .../default_shaders.shader_source | 0 .../default_shaders_mobile.shader_source | 0 .../development.shader_source | 0 .../shader_libraries/extra.shader_source | 0 .../shader_libraries/fxaa.shader_source | 0 .../shader_libraries/gui.shader_source | 0 .../shader_libraries/heatmap.shader_source | 0 .../shader_libraries/lighting.shader_source | 0 .../lighting_common.shader_source | 0 .../shader_libraries/noise.shader_source | 0 .../particle_billboard.shader_source | 0 .../particle_lighting_common.shader_source | 0 .../particle_ribbon.shader_source | 0 .../placeholders.shader_source | 0 .../post_processing.shader_source | 0 .../post_processing_common.shader_source | 0 .../sampling_common.shader_source | 0 .../shadow_map_common.shader_source | 0 .../shader_libraries/terrain.shader_source | 0 .../terrain_utilities.shader_source | 0 .../shader_libraries/water.shader_source | 0 {vmf_source => vmf}/gui/vmf/.gitignore | 0 .../gui/vmf/header_fav_arrow.dds | Bin .../gui/vmf/header_fav_arrow.texture | 0 .../gui/vmf/header_fav_icon.dds | Bin .../gui/vmf/header_fav_icon.texture | 0 .../gui/vmf/header_fav_icon_lit.dds | Bin .../gui/vmf/header_fav_icon_lit.texture | 0 .../gui/vmf/mutator_button.dds | Bin .../gui/vmf/mutator_button.texture | 0 .../gui/vmf/mutator_button_hover.dds | Bin .../gui/vmf/mutator_button_hover.texture | 0 .../gui/vmf/search_bar_icon.dds | Bin .../gui/vmf/search_bar_icon.texture | 0 vmf/item.cfg | 7 + .../localization/mutator_manager.lua | 0 {vmf_source => vmf}/localization/vmf.lua | 0 .../materials/vmf/header_fav_arrow.material | 0 .../materials/vmf/header_fav_icon.material | 0 .../vmf/header_fav_icon_lit.material | 0 .../materials/vmf/mutator_button.material | 0 .../vmf/mutator_button_hover.material | 0 .../materials/vmf/search_bar_icon.material | 0 vmf/preview.jpg | Bin 0 -> 135902 bytes .../resource_packages/vmf.package | 0 .../scripts/mods/vmf/functions/table.lua | 0 .../scripts/mods/vmf/modules/core/chat.lua | 0 .../mods/vmf/modules/core/core_functions.lua | 0 .../modules/core/delayed_chat_messages.lua | 0 .../scripts/mods/vmf/modules/core/events.lua | 0 .../scripts/mods/vmf/modules/core/hooks.lua | 0 .../mods/vmf/modules/core/keybindings.lua | 0 .../mods/vmf/modules/core/localization.lua | 0 .../scripts/mods/vmf/modules/core/network.lua | 0 .../mods/vmf/modules/core/settings.lua | 0 .../mods/vmf/modules/core/toggling.lua | 0 .../mods/vmf/modules/debug/dev_console.lua | 0 .../mods/vmf/modules/debug/table_dump.lua | 0 .../mods/vmf/modules/gui/custom_menus.lua | 0 .../mods/vmf/modules/gui/custom_textures.lua | 0 .../mods/vmf/modules/gui/ui_scaling.lua | 0 .../scripts/mods/vmf/modules/mods.lua | 0 .../mods/vmf/modules/mutators/README.md | 0 .../mutators/mutator_default_config.lua | 0 .../vmf/modules/mutators/mutator_dice.lua | 0 .../mods/vmf/modules/mutators/mutator_gui.lua | 0 .../mutators/mutator_gui_definitions.lua | 0 .../vmf/modules/mutators/mutator_info.lua | 0 .../vmf/modules/mutators/mutator_manager.lua | 0 .../modules/options_menu/vmf_options_view.lua | 0 .../mods/vmf/modules/testing_stuff_here.lua | 230 +++++++++++++++++- .../scripts/mods/vmf/modules/vmf_options.lua | 0 .../scripts/mods/vmf/vmf_loader.lua | 0 {vmf_source => vmf}/settings.ini | 0 {vmf_source => vmf}/vmf.mod | 0 245 files changed, 237 insertions(+), 155 deletions(-) delete mode 100644 FEATURES_LIST.MD rename COMPILE_VMF.bat => compile.bat (97%) rename {vmf_source => vmf}/core/physx_metadata/physx_334_win32.physx_metadata (100%) rename {vmf_source => vmf}/core/physx_metadata/physx_334_win32_64bit.physx_metadata (100%) rename {vmf_source => vmf}/core/shader_nodes/abs.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/add.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/billboard_particles/particle_id.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/billboard_particles/particle_uv_frame.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/billboard_particles/particle_uv_scale.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/billboard_particles/particle_vertex_color.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/billboard_particles/soft_particles.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/billboard_particles/texcoord.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/billboard_particles/uv_animation.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/blackbody.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/blend_normals.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/camera_position.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/ceil.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/clamp.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/colormap_jet.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/constant_scalar.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/constant_vector2.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/constant_vector3.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/constant_vector4.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/construct_vector2.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/construct_vector3.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/construct_vector4.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/cos.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/cross.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/current_time.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/ddx.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/ddy.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/decal_box_distance.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/decal_parallax.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/decal_tangent_to_world.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/decal_uv.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/decal_world_position.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/desaturation.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/distance.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/distance_fade.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/div.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/dot.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/exp.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/eye_intensity.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/eye_vector.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/flipbook.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/flipbook_sampler.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/floor.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/fmod.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/frac.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/fresnel.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/graph_common.shader_source (100%) rename {vmf_source => vmf}/core/shader_nodes/hsv_to_rgb.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/if.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/invert.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/length.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/lerp.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/light_color.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/light_vector.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/material_variable.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/max.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/min.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/mul.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/noise/noise2D.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/noise/noise3D.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/noise/noise4D.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/normalize.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/normalize_vs.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/object_to_world.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/option.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/orientation_forward.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/orientation_position.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/orientation_right.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/orientation_up.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/panner.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/parallax.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/pixel_depth.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/power.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/projected_texcoord.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/reflect.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/refract.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/rgb_to_hsv.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/ribbon_particles/ribbon_texcoord.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/ribbon_particles/ribbon_uv_frame.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/ribbon_particles/ribbon_uv_scale.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/ribbon_particles/ribbon_vertex_color.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/rotator.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/sample_cube.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/sample_texture.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/sample_texture_or_pass_through.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/sample_texture_vertex.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/sin.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/skydome/skydome_cloud_map.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/skydome/skydome_cloud_speed_scale.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/skydome/skydome_color.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/skydome/skydome_fog_color.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/skydome/skydome_fog_height_falloff.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/skydome/skydome_intensity.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/skydome/skydome_tint_color.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/smoothstep.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/square_root.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/subtract.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/sun_color.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/sun_direction.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/sun_shadow_mask.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/tangent_to_world.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/terrain_base_normal.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/terrain_blend_mask.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/terrain_height.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/terrain_uv.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/texture_coordinate0.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/texture_coordinate1.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/texture_coordinate2.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/texture_coordinate3.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/texture_coordinate4.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/translation.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/vegetation_bending.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/vertex_binormal.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/vertex_color0.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/vertex_instanceid.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/vertex_position.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/vertex_tangent.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/wave_displacement.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/wind_amount.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/world_space_normal.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/world_to_object.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/world_to_tangent.shader_node (100%) rename {vmf_source => vmf}/core/shader_nodes/world_to_view.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/color_grading_identity.dds (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/color_grading_identity.texture (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/default_shading_environment.object_creator_item (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/empty_black.dds (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/empty_black.texture (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/env_materials.material (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/lensdirt.dds (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/lensdirt.texture (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/midday/diffuse_cube.dds (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/midday/diffuse_cube.texture (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/midday/midday.shading_environment (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/midday/midday_shading_environment.entity (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/midday/skydome.dds (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/midday/skydome.texture (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/midday/specular_cube.dds (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/midday/specular_cube.texture (100%) rename {vmf_source => vmf}/core/stingray_renderer/environments/outdoor.shading_environment_template (100%) rename {vmf_source => vmf}/core/stingray_renderer/output_nodes/anisotropic_base.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/output_nodes/billboard_base.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/output_nodes/billboard_unlit_base.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/output_nodes/decal_base.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/output_nodes/light_base.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/output_nodes/particle_base.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/output_nodes/particle_distortion_base.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/output_nodes/particle_gbuffer_base.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/output_nodes/probe_base.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/output_nodes/ribbon_base.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/output_nodes/skydome_base.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/output_nodes/standard_base.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/output_nodes/standard_base_bitsquid.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/output_nodes/terrain_base.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/output_nodes/unlit_base.shader_node (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_import/global_textures.config (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_import/no_uvs.material (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_import/no_uvs_transparent.material (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_import/standard.material (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_import/standard.shader_import (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_import/standard_masked.material (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_import/standard_transparent.material (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/common.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/compute.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/decals.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/default_shaders.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/default_shaders_mobile.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/development.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/extra.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/fxaa.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/gui.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/heatmap.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/lighting.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/lighting_common.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/noise.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/particle_billboard.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/particle_lighting_common.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/particle_ribbon.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/placeholders.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/post_processing.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/post_processing_common.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/sampling_common.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/shadow_map_common.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/terrain.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/terrain_utilities.shader_source (100%) rename {vmf_source => vmf}/core/stingray_renderer/shader_libraries/water.shader_source (100%) rename {vmf_source => vmf}/gui/vmf/.gitignore (100%) rename {vmf_source => vmf}/gui/vmf/header_fav_arrow.dds (100%) rename {vmf_source => vmf}/gui/vmf/header_fav_arrow.texture (100%) rename {vmf_source => vmf}/gui/vmf/header_fav_icon.dds (100%) rename {vmf_source => vmf}/gui/vmf/header_fav_icon.texture (100%) rename {vmf_source => vmf}/gui/vmf/header_fav_icon_lit.dds (100%) rename {vmf_source => vmf}/gui/vmf/header_fav_icon_lit.texture (100%) rename {vmf_source => vmf}/gui/vmf/mutator_button.dds (100%) rename {vmf_source => vmf}/gui/vmf/mutator_button.texture (100%) rename {vmf_source => vmf}/gui/vmf/mutator_button_hover.dds (100%) rename {vmf_source => vmf}/gui/vmf/mutator_button_hover.texture (100%) rename {vmf_source => vmf}/gui/vmf/search_bar_icon.dds (100%) rename {vmf_source => vmf}/gui/vmf/search_bar_icon.texture (100%) create mode 100644 vmf/item.cfg rename {vmf_source => vmf}/localization/mutator_manager.lua (100%) rename {vmf_source => vmf}/localization/vmf.lua (100%) rename {vmf_source => vmf}/materials/vmf/header_fav_arrow.material (100%) rename {vmf_source => vmf}/materials/vmf/header_fav_icon.material (100%) rename {vmf_source => vmf}/materials/vmf/header_fav_icon_lit.material (100%) rename {vmf_source => vmf}/materials/vmf/mutator_button.material (100%) rename {vmf_source => vmf}/materials/vmf/mutator_button_hover.material (100%) rename {vmf_source => vmf}/materials/vmf/search_bar_icon.material (100%) create mode 100644 vmf/preview.jpg rename {vmf_source => vmf}/resource_packages/vmf.package (100%) rename {vmf_source => vmf}/scripts/mods/vmf/functions/table.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/core/chat.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/core/core_functions.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/core/delayed_chat_messages.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/core/events.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/core/hooks.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/core/keybindings.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/core/localization.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/core/network.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/core/settings.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/core/toggling.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/debug/dev_console.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/debug/table_dump.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/gui/custom_menus.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/gui/custom_textures.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/gui/ui_scaling.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/mods.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/mutators/README.md (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/mutators/mutator_default_config.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/mutators/mutator_dice.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/mutators/mutator_gui.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/mutators/mutator_gui_definitions.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/mutators/mutator_info.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/mutators/mutator_manager.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/options_menu/vmf_options_view.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/testing_stuff_here.lua (54%) rename {vmf_source => vmf}/scripts/mods/vmf/modules/vmf_options.lua (100%) rename {vmf_source => vmf}/scripts/mods/vmf/vmf_loader.lua (100%) rename {vmf_source => vmf}/settings.ini (100%) rename {vmf_source => vmf}/vmf.mod (100%) diff --git a/.gitignore b/.gitignore index 140ef3e..2c93475 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ -bin/ -TEMP/ -Docs/ \ No newline at end of file +.temp +vmf/dist \ No newline at end of file diff --git a/FEATURES_LIST.MD b/FEATURES_LIST.MD deleted file mode 100644 index 1d91584..0000000 --- a/FEATURES_LIST.MD +++ /dev/null @@ -1,146 +0,0 @@ -Goals -===== -The old Vermintide Mod Framework is a good tool, but it has a lot of legacy code, some of its components' code is hardly readable, and after the new workshop update it's more like a bunch of functions than a framework. So I decided to rewrite the whole thing from the scratch. My goals were: - -1. Write VMF using self-documenting code. So it would be easy to read and maintain. -2. Move all the managing code from the mods to VMF if possible. So the modders will spend less time on writing managing code. -3. Make public VMF functions names short and clear. This and #2 will make mods' code shorter and clearer. -4. Make it easy for the mods to communicate with each other. -5. Make it work with bundled mods (new mod format). - -In short, make VMF the real framework, which will provide a very user-friendly API and will do all the managing for the modders. - -New Approach -============ -From now on, I'll refer to old VMF as "Old-VMF" and to new VMF as "VMF". -Also, when comparing functions, (*) means same functionality and (+) means new functionality. - -Mods Handling -------------- - -The modders who's working with Old-VMF are used to the string `local mod, mod_name, oi = Mods.new_mod("ModName")`. That was an unnecessary step. The created "mod" was just a table which could be accessed from anywhere with `Mods.get_mod("ModName")` function, and all the interactions with VMF were made via public functions. So a lot of modders just skipped this step since they didn't need it. - -But, from now on, the mod instance is not a table anymore, it's the object of the class `VMFMod` and it is the core element of any mod. It is the bridge between the mod and VMF. From this moment, there are only 2 public functions in VMF: - -* `new_mod(mod_name)` - creates the new instance of `VMFMod` class object and returns it -* `get_mod(mod_name)` - returns already created mod instance or `nil` if it doesn't exist - -All the other VMF functionality can be accessed only through the created `VMFMod` objects. - -To understand what I'm talking about, just look at this little example: -```lua -local mod = new_mod("totally_useless_mod") - -mod:hook("MatchmakingManager.update", function(func, ...) - func(...) - mod:echo("Some annoying message you'll see a lot of times no matter what") -end) -``` -This approach allows to simplify a lot of things for the modder and makes it much easier for VMF to handle things on its own. - -Basic functions and events --------------------------- - -Now let's get to some basic functions. - -Before: -`EchoConsole(message [string])` -After: -`mod:echo(message [string], show_mod_name [bool])` -(*) Shows the message in the chat. -(+) If `show_mod_name` is `true` the message will be prefixed with `[mod_name] `. -(+) The message will also appear in the log as `[ECHO][mod_name] message` - -Before: -`Safe_pcall(...)` -After: -`mod:pcall(...)` -(*) Lets safely execute function, shows the error message in the chat -(+) Shows which mod failed to execute the code. -(+) Log it. - -Also, there is the new thing in VMF: events. It's working like this: - -1. The modder defines `mod.some_event_name = some_function` -2. Certain conditions for some_event are met -3. If the mod has `mod.some_event_name` defined, VMF calls it and passes specific event arguments - -Here are some basic events: - -`mod.unload()` - is called when the mod is about to be reloaded -`mod.update(dt)` - is called every tick - -Now, the example from above, but using `update` event this time: -```lua -local mod = new_mod("totally_useless_mod") - -mod.update = function(dt) - mod:echo("Some annoying message you'll see a lot of times no matter what") -end -``` - -Hooking system --------------- -Imagine that you're debugging your code and experimenting with different hooks, but some time later you notice, that some hook you deleted from the code 20 mins ago is still working. You do the /reload, but it doesn't help, so you have to restart the game to stop it. Sounds familiar? Well, that's not the case anymore. Now VMF removes all the hooks when it's about to be reloaded. - -Before: -`Mods.hook.set(mod_name, "Object.Function", new_function)` -After: -`mod:hook("Object.Function", new_function)` -(*) Hooks the function -(+) It won't crash anymore if there's misprint in `"Object.Function"` or it doesn't exist. The error message with the mod name will be shown in the chat instead. Actually, there are many small changes like that, which will make debugging easier. There is no point to describe them all so I just skip them from now on. - -Before: -`Mods.hook.enable(false, mod_name, "Object.Function")` -After: -`mod:hook_disable("Object.Function")` -(*) Disables hook (but not removes) - -Before: -`Mods.hook.enable(true, mod_name, "Object.Function")` -After: -`mod:hook_enable("Object.Function")` -(*) Enables disabled hook - -Before: -`Mods.hook.remove("Object.Function", mod_name)` -After: -`mod:hook_remove("Object.Function")` -(*) Removes hook - -Also, new functions: -`mod:disable_all_hooks()` -`mod:enable_all_hooks()` -`mod:remove_all_hooks()` -(*) Disables/enables/removes all hooks for certain mod - - -Settings manager -------------------------- -This is the new thing. In the Old-VMF mods interacted with user settings via 'Application' directly. Now VMF is using settings manager. What's the difference? - -* Settings manager operates settings within the mod namespace, so now you can define settings with the same name for different mods. Forget about `cb_bot_improvements_keep_tomes`. `keep_tomes` will do it. -* In Old-VMF, in order to actually save changed settings, some mods had to save settings to file right after changing it. That wasn't good for HDD. Now, setting manager takes care of it. It will automatically save changed settings to file when changing map / reloading VMF / closing options menu. - -FUNCTIONS: - -`mod:get(setting_name)` - returns setting value or `nil` - -`mod:set(setting_name, setting_value, call_setting_changed_event)` - changes setting value. If `call_setting_changed_event` is `true`, the `setting_changed` event will be called for the mod. - -EVENT: - -`mod.setting_changed(setting_name)` - is called whenever something changes mods setting with `call_setting_changed_event` set to `true`. - -With this event you won't need to repeatedly check if some option is changed. By default, after mod initilizing, the only thing that will call `mod:set` is the the VMF options menu. And it will always call `setting_changed` event. - - - -Gui (WIP) -Options menu (WIP) -Keybindings (Will do) -Network (Will do) -Actions -Localization -Game modes -Debug modules \ No newline at end of file diff --git a/COMPILE_VMF.bat b/compile.bat similarity index 97% rename from COMPILE_VMF.bat rename to compile.bat index af67e42..74b1ce6 100644 --- a/COMPILE_VMF.bat +++ b/compile.bat @@ -3,8 +3,8 @@ :: project-defined variable, you probably shouldn't change them -set SOUCE_CODE_DIR=.\vmf_source -set TEMP_DIR=.\TEMP +set SOUCE_CODE_DIR=.\vmf +set TEMP_DIR=.\.temp\vmf set ORIGINAL_VMF_BUNDLE_FILE_NAME=98161451961848df set NEW_VMF_BUNDLE_FILE_NAME=VMF diff --git a/vmf_source/core/physx_metadata/physx_334_win32.physx_metadata b/vmf/core/physx_metadata/physx_334_win32.physx_metadata similarity index 100% rename from vmf_source/core/physx_metadata/physx_334_win32.physx_metadata rename to vmf/core/physx_metadata/physx_334_win32.physx_metadata diff --git a/vmf_source/core/physx_metadata/physx_334_win32_64bit.physx_metadata b/vmf/core/physx_metadata/physx_334_win32_64bit.physx_metadata similarity index 100% rename from vmf_source/core/physx_metadata/physx_334_win32_64bit.physx_metadata rename to vmf/core/physx_metadata/physx_334_win32_64bit.physx_metadata diff --git a/vmf_source/core/shader_nodes/abs.shader_node b/vmf/core/shader_nodes/abs.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/abs.shader_node rename to vmf/core/shader_nodes/abs.shader_node diff --git a/vmf_source/core/shader_nodes/add.shader_node b/vmf/core/shader_nodes/add.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/add.shader_node rename to vmf/core/shader_nodes/add.shader_node diff --git a/vmf_source/core/shader_nodes/billboard_particles/particle_id.shader_node b/vmf/core/shader_nodes/billboard_particles/particle_id.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/billboard_particles/particle_id.shader_node rename to vmf/core/shader_nodes/billboard_particles/particle_id.shader_node diff --git a/vmf_source/core/shader_nodes/billboard_particles/particle_uv_frame.shader_node b/vmf/core/shader_nodes/billboard_particles/particle_uv_frame.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/billboard_particles/particle_uv_frame.shader_node rename to vmf/core/shader_nodes/billboard_particles/particle_uv_frame.shader_node diff --git a/vmf_source/core/shader_nodes/billboard_particles/particle_uv_scale.shader_node b/vmf/core/shader_nodes/billboard_particles/particle_uv_scale.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/billboard_particles/particle_uv_scale.shader_node rename to vmf/core/shader_nodes/billboard_particles/particle_uv_scale.shader_node diff --git a/vmf_source/core/shader_nodes/billboard_particles/particle_vertex_color.shader_node b/vmf/core/shader_nodes/billboard_particles/particle_vertex_color.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/billboard_particles/particle_vertex_color.shader_node rename to vmf/core/shader_nodes/billboard_particles/particle_vertex_color.shader_node diff --git a/vmf_source/core/shader_nodes/billboard_particles/soft_particles.shader_node b/vmf/core/shader_nodes/billboard_particles/soft_particles.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/billboard_particles/soft_particles.shader_node rename to vmf/core/shader_nodes/billboard_particles/soft_particles.shader_node diff --git a/vmf_source/core/shader_nodes/billboard_particles/texcoord.shader_node b/vmf/core/shader_nodes/billboard_particles/texcoord.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/billboard_particles/texcoord.shader_node rename to vmf/core/shader_nodes/billboard_particles/texcoord.shader_node diff --git a/vmf_source/core/shader_nodes/billboard_particles/uv_animation.shader_node b/vmf/core/shader_nodes/billboard_particles/uv_animation.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/billboard_particles/uv_animation.shader_node rename to vmf/core/shader_nodes/billboard_particles/uv_animation.shader_node diff --git a/vmf_source/core/shader_nodes/blackbody.shader_node b/vmf/core/shader_nodes/blackbody.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/blackbody.shader_node rename to vmf/core/shader_nodes/blackbody.shader_node diff --git a/vmf_source/core/shader_nodes/blend_normals.shader_node b/vmf/core/shader_nodes/blend_normals.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/blend_normals.shader_node rename to vmf/core/shader_nodes/blend_normals.shader_node diff --git a/vmf_source/core/shader_nodes/camera_position.shader_node b/vmf/core/shader_nodes/camera_position.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/camera_position.shader_node rename to vmf/core/shader_nodes/camera_position.shader_node diff --git a/vmf_source/core/shader_nodes/ceil.shader_node b/vmf/core/shader_nodes/ceil.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/ceil.shader_node rename to vmf/core/shader_nodes/ceil.shader_node diff --git a/vmf_source/core/shader_nodes/clamp.shader_node b/vmf/core/shader_nodes/clamp.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/clamp.shader_node rename to vmf/core/shader_nodes/clamp.shader_node diff --git a/vmf_source/core/shader_nodes/colormap_jet.shader_node b/vmf/core/shader_nodes/colormap_jet.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/colormap_jet.shader_node rename to vmf/core/shader_nodes/colormap_jet.shader_node diff --git a/vmf_source/core/shader_nodes/constant_scalar.shader_node b/vmf/core/shader_nodes/constant_scalar.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/constant_scalar.shader_node rename to vmf/core/shader_nodes/constant_scalar.shader_node diff --git a/vmf_source/core/shader_nodes/constant_vector2.shader_node b/vmf/core/shader_nodes/constant_vector2.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/constant_vector2.shader_node rename to vmf/core/shader_nodes/constant_vector2.shader_node diff --git a/vmf_source/core/shader_nodes/constant_vector3.shader_node b/vmf/core/shader_nodes/constant_vector3.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/constant_vector3.shader_node rename to vmf/core/shader_nodes/constant_vector3.shader_node diff --git a/vmf_source/core/shader_nodes/constant_vector4.shader_node b/vmf/core/shader_nodes/constant_vector4.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/constant_vector4.shader_node rename to vmf/core/shader_nodes/constant_vector4.shader_node diff --git a/vmf_source/core/shader_nodes/construct_vector2.shader_node b/vmf/core/shader_nodes/construct_vector2.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/construct_vector2.shader_node rename to vmf/core/shader_nodes/construct_vector2.shader_node diff --git a/vmf_source/core/shader_nodes/construct_vector3.shader_node b/vmf/core/shader_nodes/construct_vector3.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/construct_vector3.shader_node rename to vmf/core/shader_nodes/construct_vector3.shader_node diff --git a/vmf_source/core/shader_nodes/construct_vector4.shader_node b/vmf/core/shader_nodes/construct_vector4.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/construct_vector4.shader_node rename to vmf/core/shader_nodes/construct_vector4.shader_node diff --git a/vmf_source/core/shader_nodes/cos.shader_node b/vmf/core/shader_nodes/cos.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/cos.shader_node rename to vmf/core/shader_nodes/cos.shader_node diff --git a/vmf_source/core/shader_nodes/cross.shader_node b/vmf/core/shader_nodes/cross.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/cross.shader_node rename to vmf/core/shader_nodes/cross.shader_node diff --git a/vmf_source/core/shader_nodes/current_time.shader_node b/vmf/core/shader_nodes/current_time.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/current_time.shader_node rename to vmf/core/shader_nodes/current_time.shader_node diff --git a/vmf_source/core/shader_nodes/ddx.shader_node b/vmf/core/shader_nodes/ddx.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/ddx.shader_node rename to vmf/core/shader_nodes/ddx.shader_node diff --git a/vmf_source/core/shader_nodes/ddy.shader_node b/vmf/core/shader_nodes/ddy.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/ddy.shader_node rename to vmf/core/shader_nodes/ddy.shader_node diff --git a/vmf_source/core/shader_nodes/decal_box_distance.shader_node b/vmf/core/shader_nodes/decal_box_distance.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/decal_box_distance.shader_node rename to vmf/core/shader_nodes/decal_box_distance.shader_node diff --git a/vmf_source/core/shader_nodes/decal_parallax.shader_node b/vmf/core/shader_nodes/decal_parallax.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/decal_parallax.shader_node rename to vmf/core/shader_nodes/decal_parallax.shader_node diff --git a/vmf_source/core/shader_nodes/decal_tangent_to_world.shader_node b/vmf/core/shader_nodes/decal_tangent_to_world.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/decal_tangent_to_world.shader_node rename to vmf/core/shader_nodes/decal_tangent_to_world.shader_node diff --git a/vmf_source/core/shader_nodes/decal_uv.shader_node b/vmf/core/shader_nodes/decal_uv.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/decal_uv.shader_node rename to vmf/core/shader_nodes/decal_uv.shader_node diff --git a/vmf_source/core/shader_nodes/decal_world_position.shader_node b/vmf/core/shader_nodes/decal_world_position.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/decal_world_position.shader_node rename to vmf/core/shader_nodes/decal_world_position.shader_node diff --git a/vmf_source/core/shader_nodes/desaturation.shader_node b/vmf/core/shader_nodes/desaturation.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/desaturation.shader_node rename to vmf/core/shader_nodes/desaturation.shader_node diff --git a/vmf_source/core/shader_nodes/distance.shader_node b/vmf/core/shader_nodes/distance.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/distance.shader_node rename to vmf/core/shader_nodes/distance.shader_node diff --git a/vmf_source/core/shader_nodes/distance_fade.shader_node b/vmf/core/shader_nodes/distance_fade.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/distance_fade.shader_node rename to vmf/core/shader_nodes/distance_fade.shader_node diff --git a/vmf_source/core/shader_nodes/div.shader_node b/vmf/core/shader_nodes/div.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/div.shader_node rename to vmf/core/shader_nodes/div.shader_node diff --git a/vmf_source/core/shader_nodes/dot.shader_node b/vmf/core/shader_nodes/dot.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/dot.shader_node rename to vmf/core/shader_nodes/dot.shader_node diff --git a/vmf_source/core/shader_nodes/exp.shader_node b/vmf/core/shader_nodes/exp.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/exp.shader_node rename to vmf/core/shader_nodes/exp.shader_node diff --git a/vmf_source/core/shader_nodes/eye_intensity.shader_node b/vmf/core/shader_nodes/eye_intensity.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/eye_intensity.shader_node rename to vmf/core/shader_nodes/eye_intensity.shader_node diff --git a/vmf_source/core/shader_nodes/eye_vector.shader_node b/vmf/core/shader_nodes/eye_vector.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/eye_vector.shader_node rename to vmf/core/shader_nodes/eye_vector.shader_node diff --git a/vmf_source/core/shader_nodes/flipbook.shader_node b/vmf/core/shader_nodes/flipbook.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/flipbook.shader_node rename to vmf/core/shader_nodes/flipbook.shader_node diff --git a/vmf_source/core/shader_nodes/flipbook_sampler.shader_node b/vmf/core/shader_nodes/flipbook_sampler.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/flipbook_sampler.shader_node rename to vmf/core/shader_nodes/flipbook_sampler.shader_node diff --git a/vmf_source/core/shader_nodes/floor.shader_node b/vmf/core/shader_nodes/floor.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/floor.shader_node rename to vmf/core/shader_nodes/floor.shader_node diff --git a/vmf_source/core/shader_nodes/fmod.shader_node b/vmf/core/shader_nodes/fmod.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/fmod.shader_node rename to vmf/core/shader_nodes/fmod.shader_node diff --git a/vmf_source/core/shader_nodes/frac.shader_node b/vmf/core/shader_nodes/frac.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/frac.shader_node rename to vmf/core/shader_nodes/frac.shader_node diff --git a/vmf_source/core/shader_nodes/fresnel.shader_node b/vmf/core/shader_nodes/fresnel.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/fresnel.shader_node rename to vmf/core/shader_nodes/fresnel.shader_node diff --git a/vmf_source/core/shader_nodes/graph_common.shader_source b/vmf/core/shader_nodes/graph_common.shader_source similarity index 100% rename from vmf_source/core/shader_nodes/graph_common.shader_source rename to vmf/core/shader_nodes/graph_common.shader_source diff --git a/vmf_source/core/shader_nodes/hsv_to_rgb.shader_node b/vmf/core/shader_nodes/hsv_to_rgb.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/hsv_to_rgb.shader_node rename to vmf/core/shader_nodes/hsv_to_rgb.shader_node diff --git a/vmf_source/core/shader_nodes/if.shader_node b/vmf/core/shader_nodes/if.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/if.shader_node rename to vmf/core/shader_nodes/if.shader_node diff --git a/vmf_source/core/shader_nodes/invert.shader_node b/vmf/core/shader_nodes/invert.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/invert.shader_node rename to vmf/core/shader_nodes/invert.shader_node diff --git a/vmf_source/core/shader_nodes/length.shader_node b/vmf/core/shader_nodes/length.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/length.shader_node rename to vmf/core/shader_nodes/length.shader_node diff --git a/vmf_source/core/shader_nodes/lerp.shader_node b/vmf/core/shader_nodes/lerp.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/lerp.shader_node rename to vmf/core/shader_nodes/lerp.shader_node diff --git a/vmf_source/core/shader_nodes/light_color.shader_node b/vmf/core/shader_nodes/light_color.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/light_color.shader_node rename to vmf/core/shader_nodes/light_color.shader_node diff --git a/vmf_source/core/shader_nodes/light_vector.shader_node b/vmf/core/shader_nodes/light_vector.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/light_vector.shader_node rename to vmf/core/shader_nodes/light_vector.shader_node diff --git a/vmf_source/core/shader_nodes/material_variable.shader_node b/vmf/core/shader_nodes/material_variable.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/material_variable.shader_node rename to vmf/core/shader_nodes/material_variable.shader_node diff --git a/vmf_source/core/shader_nodes/max.shader_node b/vmf/core/shader_nodes/max.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/max.shader_node rename to vmf/core/shader_nodes/max.shader_node diff --git a/vmf_source/core/shader_nodes/min.shader_node b/vmf/core/shader_nodes/min.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/min.shader_node rename to vmf/core/shader_nodes/min.shader_node diff --git a/vmf_source/core/shader_nodes/mul.shader_node b/vmf/core/shader_nodes/mul.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/mul.shader_node rename to vmf/core/shader_nodes/mul.shader_node diff --git a/vmf_source/core/shader_nodes/noise/noise2D.shader_node b/vmf/core/shader_nodes/noise/noise2D.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/noise/noise2D.shader_node rename to vmf/core/shader_nodes/noise/noise2D.shader_node diff --git a/vmf_source/core/shader_nodes/noise/noise3D.shader_node b/vmf/core/shader_nodes/noise/noise3D.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/noise/noise3D.shader_node rename to vmf/core/shader_nodes/noise/noise3D.shader_node diff --git a/vmf_source/core/shader_nodes/noise/noise4D.shader_node b/vmf/core/shader_nodes/noise/noise4D.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/noise/noise4D.shader_node rename to vmf/core/shader_nodes/noise/noise4D.shader_node diff --git a/vmf_source/core/shader_nodes/normalize.shader_node b/vmf/core/shader_nodes/normalize.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/normalize.shader_node rename to vmf/core/shader_nodes/normalize.shader_node diff --git a/vmf_source/core/shader_nodes/normalize_vs.shader_node b/vmf/core/shader_nodes/normalize_vs.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/normalize_vs.shader_node rename to vmf/core/shader_nodes/normalize_vs.shader_node diff --git a/vmf_source/core/shader_nodes/object_to_world.shader_node b/vmf/core/shader_nodes/object_to_world.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/object_to_world.shader_node rename to vmf/core/shader_nodes/object_to_world.shader_node diff --git a/vmf_source/core/shader_nodes/option.shader_node b/vmf/core/shader_nodes/option.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/option.shader_node rename to vmf/core/shader_nodes/option.shader_node diff --git a/vmf_source/core/shader_nodes/orientation_forward.shader_node b/vmf/core/shader_nodes/orientation_forward.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/orientation_forward.shader_node rename to vmf/core/shader_nodes/orientation_forward.shader_node diff --git a/vmf_source/core/shader_nodes/orientation_position.shader_node b/vmf/core/shader_nodes/orientation_position.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/orientation_position.shader_node rename to vmf/core/shader_nodes/orientation_position.shader_node diff --git a/vmf_source/core/shader_nodes/orientation_right.shader_node b/vmf/core/shader_nodes/orientation_right.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/orientation_right.shader_node rename to vmf/core/shader_nodes/orientation_right.shader_node diff --git a/vmf_source/core/shader_nodes/orientation_up.shader_node b/vmf/core/shader_nodes/orientation_up.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/orientation_up.shader_node rename to vmf/core/shader_nodes/orientation_up.shader_node diff --git a/vmf_source/core/shader_nodes/panner.shader_node b/vmf/core/shader_nodes/panner.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/panner.shader_node rename to vmf/core/shader_nodes/panner.shader_node diff --git a/vmf_source/core/shader_nodes/parallax.shader_node b/vmf/core/shader_nodes/parallax.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/parallax.shader_node rename to vmf/core/shader_nodes/parallax.shader_node diff --git a/vmf_source/core/shader_nodes/pixel_depth.shader_node b/vmf/core/shader_nodes/pixel_depth.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/pixel_depth.shader_node rename to vmf/core/shader_nodes/pixel_depth.shader_node diff --git a/vmf_source/core/shader_nodes/power.shader_node b/vmf/core/shader_nodes/power.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/power.shader_node rename to vmf/core/shader_nodes/power.shader_node diff --git a/vmf_source/core/shader_nodes/projected_texcoord.shader_node b/vmf/core/shader_nodes/projected_texcoord.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/projected_texcoord.shader_node rename to vmf/core/shader_nodes/projected_texcoord.shader_node diff --git a/vmf_source/core/shader_nodes/reflect.shader_node b/vmf/core/shader_nodes/reflect.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/reflect.shader_node rename to vmf/core/shader_nodes/reflect.shader_node diff --git a/vmf_source/core/shader_nodes/refract.shader_node b/vmf/core/shader_nodes/refract.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/refract.shader_node rename to vmf/core/shader_nodes/refract.shader_node diff --git a/vmf_source/core/shader_nodes/rgb_to_hsv.shader_node b/vmf/core/shader_nodes/rgb_to_hsv.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/rgb_to_hsv.shader_node rename to vmf/core/shader_nodes/rgb_to_hsv.shader_node diff --git a/vmf_source/core/shader_nodes/ribbon_particles/ribbon_texcoord.shader_node b/vmf/core/shader_nodes/ribbon_particles/ribbon_texcoord.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/ribbon_particles/ribbon_texcoord.shader_node rename to vmf/core/shader_nodes/ribbon_particles/ribbon_texcoord.shader_node diff --git a/vmf_source/core/shader_nodes/ribbon_particles/ribbon_uv_frame.shader_node b/vmf/core/shader_nodes/ribbon_particles/ribbon_uv_frame.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/ribbon_particles/ribbon_uv_frame.shader_node rename to vmf/core/shader_nodes/ribbon_particles/ribbon_uv_frame.shader_node diff --git a/vmf_source/core/shader_nodes/ribbon_particles/ribbon_uv_scale.shader_node b/vmf/core/shader_nodes/ribbon_particles/ribbon_uv_scale.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/ribbon_particles/ribbon_uv_scale.shader_node rename to vmf/core/shader_nodes/ribbon_particles/ribbon_uv_scale.shader_node diff --git a/vmf_source/core/shader_nodes/ribbon_particles/ribbon_vertex_color.shader_node b/vmf/core/shader_nodes/ribbon_particles/ribbon_vertex_color.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/ribbon_particles/ribbon_vertex_color.shader_node rename to vmf/core/shader_nodes/ribbon_particles/ribbon_vertex_color.shader_node diff --git a/vmf_source/core/shader_nodes/rotator.shader_node b/vmf/core/shader_nodes/rotator.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/rotator.shader_node rename to vmf/core/shader_nodes/rotator.shader_node diff --git a/vmf_source/core/shader_nodes/sample_cube.shader_node b/vmf/core/shader_nodes/sample_cube.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/sample_cube.shader_node rename to vmf/core/shader_nodes/sample_cube.shader_node diff --git a/vmf_source/core/shader_nodes/sample_texture.shader_node b/vmf/core/shader_nodes/sample_texture.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/sample_texture.shader_node rename to vmf/core/shader_nodes/sample_texture.shader_node diff --git a/vmf_source/core/shader_nodes/sample_texture_or_pass_through.shader_node b/vmf/core/shader_nodes/sample_texture_or_pass_through.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/sample_texture_or_pass_through.shader_node rename to vmf/core/shader_nodes/sample_texture_or_pass_through.shader_node diff --git a/vmf_source/core/shader_nodes/sample_texture_vertex.shader_node b/vmf/core/shader_nodes/sample_texture_vertex.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/sample_texture_vertex.shader_node rename to vmf/core/shader_nodes/sample_texture_vertex.shader_node diff --git a/vmf_source/core/shader_nodes/sin.shader_node b/vmf/core/shader_nodes/sin.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/sin.shader_node rename to vmf/core/shader_nodes/sin.shader_node diff --git a/vmf_source/core/shader_nodes/skydome/skydome_cloud_map.shader_node b/vmf/core/shader_nodes/skydome/skydome_cloud_map.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/skydome/skydome_cloud_map.shader_node rename to vmf/core/shader_nodes/skydome/skydome_cloud_map.shader_node diff --git a/vmf_source/core/shader_nodes/skydome/skydome_cloud_speed_scale.shader_node b/vmf/core/shader_nodes/skydome/skydome_cloud_speed_scale.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/skydome/skydome_cloud_speed_scale.shader_node rename to vmf/core/shader_nodes/skydome/skydome_cloud_speed_scale.shader_node diff --git a/vmf_source/core/shader_nodes/skydome/skydome_color.shader_node b/vmf/core/shader_nodes/skydome/skydome_color.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/skydome/skydome_color.shader_node rename to vmf/core/shader_nodes/skydome/skydome_color.shader_node diff --git a/vmf_source/core/shader_nodes/skydome/skydome_fog_color.shader_node b/vmf/core/shader_nodes/skydome/skydome_fog_color.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/skydome/skydome_fog_color.shader_node rename to vmf/core/shader_nodes/skydome/skydome_fog_color.shader_node diff --git a/vmf_source/core/shader_nodes/skydome/skydome_fog_height_falloff.shader_node b/vmf/core/shader_nodes/skydome/skydome_fog_height_falloff.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/skydome/skydome_fog_height_falloff.shader_node rename to vmf/core/shader_nodes/skydome/skydome_fog_height_falloff.shader_node diff --git a/vmf_source/core/shader_nodes/skydome/skydome_intensity.shader_node b/vmf/core/shader_nodes/skydome/skydome_intensity.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/skydome/skydome_intensity.shader_node rename to vmf/core/shader_nodes/skydome/skydome_intensity.shader_node diff --git a/vmf_source/core/shader_nodes/skydome/skydome_tint_color.shader_node b/vmf/core/shader_nodes/skydome/skydome_tint_color.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/skydome/skydome_tint_color.shader_node rename to vmf/core/shader_nodes/skydome/skydome_tint_color.shader_node diff --git a/vmf_source/core/shader_nodes/smoothstep.shader_node b/vmf/core/shader_nodes/smoothstep.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/smoothstep.shader_node rename to vmf/core/shader_nodes/smoothstep.shader_node diff --git a/vmf_source/core/shader_nodes/square_root.shader_node b/vmf/core/shader_nodes/square_root.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/square_root.shader_node rename to vmf/core/shader_nodes/square_root.shader_node diff --git a/vmf_source/core/shader_nodes/subtract.shader_node b/vmf/core/shader_nodes/subtract.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/subtract.shader_node rename to vmf/core/shader_nodes/subtract.shader_node diff --git a/vmf_source/core/shader_nodes/sun_color.shader_node b/vmf/core/shader_nodes/sun_color.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/sun_color.shader_node rename to vmf/core/shader_nodes/sun_color.shader_node diff --git a/vmf_source/core/shader_nodes/sun_direction.shader_node b/vmf/core/shader_nodes/sun_direction.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/sun_direction.shader_node rename to vmf/core/shader_nodes/sun_direction.shader_node diff --git a/vmf_source/core/shader_nodes/sun_shadow_mask.shader_node b/vmf/core/shader_nodes/sun_shadow_mask.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/sun_shadow_mask.shader_node rename to vmf/core/shader_nodes/sun_shadow_mask.shader_node diff --git a/vmf_source/core/shader_nodes/tangent_to_world.shader_node b/vmf/core/shader_nodes/tangent_to_world.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/tangent_to_world.shader_node rename to vmf/core/shader_nodes/tangent_to_world.shader_node diff --git a/vmf_source/core/shader_nodes/terrain_base_normal.shader_node b/vmf/core/shader_nodes/terrain_base_normal.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/terrain_base_normal.shader_node rename to vmf/core/shader_nodes/terrain_base_normal.shader_node diff --git a/vmf_source/core/shader_nodes/terrain_blend_mask.shader_node b/vmf/core/shader_nodes/terrain_blend_mask.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/terrain_blend_mask.shader_node rename to vmf/core/shader_nodes/terrain_blend_mask.shader_node diff --git a/vmf_source/core/shader_nodes/terrain_height.shader_node b/vmf/core/shader_nodes/terrain_height.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/terrain_height.shader_node rename to vmf/core/shader_nodes/terrain_height.shader_node diff --git a/vmf_source/core/shader_nodes/terrain_uv.shader_node b/vmf/core/shader_nodes/terrain_uv.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/terrain_uv.shader_node rename to vmf/core/shader_nodes/terrain_uv.shader_node diff --git a/vmf_source/core/shader_nodes/texture_coordinate0.shader_node b/vmf/core/shader_nodes/texture_coordinate0.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/texture_coordinate0.shader_node rename to vmf/core/shader_nodes/texture_coordinate0.shader_node diff --git a/vmf_source/core/shader_nodes/texture_coordinate1.shader_node b/vmf/core/shader_nodes/texture_coordinate1.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/texture_coordinate1.shader_node rename to vmf/core/shader_nodes/texture_coordinate1.shader_node diff --git a/vmf_source/core/shader_nodes/texture_coordinate2.shader_node b/vmf/core/shader_nodes/texture_coordinate2.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/texture_coordinate2.shader_node rename to vmf/core/shader_nodes/texture_coordinate2.shader_node diff --git a/vmf_source/core/shader_nodes/texture_coordinate3.shader_node b/vmf/core/shader_nodes/texture_coordinate3.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/texture_coordinate3.shader_node rename to vmf/core/shader_nodes/texture_coordinate3.shader_node diff --git a/vmf_source/core/shader_nodes/texture_coordinate4.shader_node b/vmf/core/shader_nodes/texture_coordinate4.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/texture_coordinate4.shader_node rename to vmf/core/shader_nodes/texture_coordinate4.shader_node diff --git a/vmf_source/core/shader_nodes/translation.shader_node b/vmf/core/shader_nodes/translation.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/translation.shader_node rename to vmf/core/shader_nodes/translation.shader_node diff --git a/vmf_source/core/shader_nodes/vegetation_bending.shader_node b/vmf/core/shader_nodes/vegetation_bending.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/vegetation_bending.shader_node rename to vmf/core/shader_nodes/vegetation_bending.shader_node diff --git a/vmf_source/core/shader_nodes/vertex_binormal.shader_node b/vmf/core/shader_nodes/vertex_binormal.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/vertex_binormal.shader_node rename to vmf/core/shader_nodes/vertex_binormal.shader_node diff --git a/vmf_source/core/shader_nodes/vertex_color0.shader_node b/vmf/core/shader_nodes/vertex_color0.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/vertex_color0.shader_node rename to vmf/core/shader_nodes/vertex_color0.shader_node diff --git a/vmf_source/core/shader_nodes/vertex_instanceid.shader_node b/vmf/core/shader_nodes/vertex_instanceid.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/vertex_instanceid.shader_node rename to vmf/core/shader_nodes/vertex_instanceid.shader_node diff --git a/vmf_source/core/shader_nodes/vertex_position.shader_node b/vmf/core/shader_nodes/vertex_position.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/vertex_position.shader_node rename to vmf/core/shader_nodes/vertex_position.shader_node diff --git a/vmf_source/core/shader_nodes/vertex_tangent.shader_node b/vmf/core/shader_nodes/vertex_tangent.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/vertex_tangent.shader_node rename to vmf/core/shader_nodes/vertex_tangent.shader_node diff --git a/vmf_source/core/shader_nodes/wave_displacement.shader_node b/vmf/core/shader_nodes/wave_displacement.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/wave_displacement.shader_node rename to vmf/core/shader_nodes/wave_displacement.shader_node diff --git a/vmf_source/core/shader_nodes/wind_amount.shader_node b/vmf/core/shader_nodes/wind_amount.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/wind_amount.shader_node rename to vmf/core/shader_nodes/wind_amount.shader_node diff --git a/vmf_source/core/shader_nodes/world_space_normal.shader_node b/vmf/core/shader_nodes/world_space_normal.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/world_space_normal.shader_node rename to vmf/core/shader_nodes/world_space_normal.shader_node diff --git a/vmf_source/core/shader_nodes/world_to_object.shader_node b/vmf/core/shader_nodes/world_to_object.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/world_to_object.shader_node rename to vmf/core/shader_nodes/world_to_object.shader_node diff --git a/vmf_source/core/shader_nodes/world_to_tangent.shader_node b/vmf/core/shader_nodes/world_to_tangent.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/world_to_tangent.shader_node rename to vmf/core/shader_nodes/world_to_tangent.shader_node diff --git a/vmf_source/core/shader_nodes/world_to_view.shader_node b/vmf/core/shader_nodes/world_to_view.shader_node similarity index 100% rename from vmf_source/core/shader_nodes/world_to_view.shader_node rename to vmf/core/shader_nodes/world_to_view.shader_node diff --git a/vmf_source/core/stingray_renderer/environments/color_grading_identity.dds b/vmf/core/stingray_renderer/environments/color_grading_identity.dds similarity index 100% rename from vmf_source/core/stingray_renderer/environments/color_grading_identity.dds rename to vmf/core/stingray_renderer/environments/color_grading_identity.dds diff --git a/vmf_source/core/stingray_renderer/environments/color_grading_identity.texture b/vmf/core/stingray_renderer/environments/color_grading_identity.texture similarity index 100% rename from vmf_source/core/stingray_renderer/environments/color_grading_identity.texture rename to vmf/core/stingray_renderer/environments/color_grading_identity.texture diff --git a/vmf_source/core/stingray_renderer/environments/default_shading_environment.object_creator_item b/vmf/core/stingray_renderer/environments/default_shading_environment.object_creator_item similarity index 100% rename from vmf_source/core/stingray_renderer/environments/default_shading_environment.object_creator_item rename to vmf/core/stingray_renderer/environments/default_shading_environment.object_creator_item diff --git a/vmf_source/core/stingray_renderer/environments/empty_black.dds b/vmf/core/stingray_renderer/environments/empty_black.dds similarity index 100% rename from vmf_source/core/stingray_renderer/environments/empty_black.dds rename to vmf/core/stingray_renderer/environments/empty_black.dds diff --git a/vmf_source/core/stingray_renderer/environments/empty_black.texture b/vmf/core/stingray_renderer/environments/empty_black.texture similarity index 100% rename from vmf_source/core/stingray_renderer/environments/empty_black.texture rename to vmf/core/stingray_renderer/environments/empty_black.texture diff --git a/vmf_source/core/stingray_renderer/environments/env_materials.material b/vmf/core/stingray_renderer/environments/env_materials.material similarity index 100% rename from vmf_source/core/stingray_renderer/environments/env_materials.material rename to vmf/core/stingray_renderer/environments/env_materials.material diff --git a/vmf_source/core/stingray_renderer/environments/lensdirt.dds b/vmf/core/stingray_renderer/environments/lensdirt.dds similarity index 100% rename from vmf_source/core/stingray_renderer/environments/lensdirt.dds rename to vmf/core/stingray_renderer/environments/lensdirt.dds diff --git a/vmf_source/core/stingray_renderer/environments/lensdirt.texture b/vmf/core/stingray_renderer/environments/lensdirt.texture similarity index 100% rename from vmf_source/core/stingray_renderer/environments/lensdirt.texture rename to vmf/core/stingray_renderer/environments/lensdirt.texture diff --git a/vmf_source/core/stingray_renderer/environments/midday/diffuse_cube.dds b/vmf/core/stingray_renderer/environments/midday/diffuse_cube.dds similarity index 100% rename from vmf_source/core/stingray_renderer/environments/midday/diffuse_cube.dds rename to vmf/core/stingray_renderer/environments/midday/diffuse_cube.dds diff --git a/vmf_source/core/stingray_renderer/environments/midday/diffuse_cube.texture b/vmf/core/stingray_renderer/environments/midday/diffuse_cube.texture similarity index 100% rename from vmf_source/core/stingray_renderer/environments/midday/diffuse_cube.texture rename to vmf/core/stingray_renderer/environments/midday/diffuse_cube.texture diff --git a/vmf_source/core/stingray_renderer/environments/midday/midday.shading_environment b/vmf/core/stingray_renderer/environments/midday/midday.shading_environment similarity index 100% rename from vmf_source/core/stingray_renderer/environments/midday/midday.shading_environment rename to vmf/core/stingray_renderer/environments/midday/midday.shading_environment diff --git a/vmf_source/core/stingray_renderer/environments/midday/midday_shading_environment.entity b/vmf/core/stingray_renderer/environments/midday/midday_shading_environment.entity similarity index 100% rename from vmf_source/core/stingray_renderer/environments/midday/midday_shading_environment.entity rename to vmf/core/stingray_renderer/environments/midday/midday_shading_environment.entity diff --git a/vmf_source/core/stingray_renderer/environments/midday/skydome.dds b/vmf/core/stingray_renderer/environments/midday/skydome.dds similarity index 100% rename from vmf_source/core/stingray_renderer/environments/midday/skydome.dds rename to vmf/core/stingray_renderer/environments/midday/skydome.dds diff --git a/vmf_source/core/stingray_renderer/environments/midday/skydome.texture b/vmf/core/stingray_renderer/environments/midday/skydome.texture similarity index 100% rename from vmf_source/core/stingray_renderer/environments/midday/skydome.texture rename to vmf/core/stingray_renderer/environments/midday/skydome.texture diff --git a/vmf_source/core/stingray_renderer/environments/midday/specular_cube.dds b/vmf/core/stingray_renderer/environments/midday/specular_cube.dds similarity index 100% rename from vmf_source/core/stingray_renderer/environments/midday/specular_cube.dds rename to vmf/core/stingray_renderer/environments/midday/specular_cube.dds diff --git a/vmf_source/core/stingray_renderer/environments/midday/specular_cube.texture b/vmf/core/stingray_renderer/environments/midday/specular_cube.texture similarity index 100% rename from vmf_source/core/stingray_renderer/environments/midday/specular_cube.texture rename to vmf/core/stingray_renderer/environments/midday/specular_cube.texture diff --git a/vmf_source/core/stingray_renderer/environments/outdoor.shading_environment_template b/vmf/core/stingray_renderer/environments/outdoor.shading_environment_template similarity index 100% rename from vmf_source/core/stingray_renderer/environments/outdoor.shading_environment_template rename to vmf/core/stingray_renderer/environments/outdoor.shading_environment_template diff --git a/vmf_source/core/stingray_renderer/output_nodes/anisotropic_base.shader_node b/vmf/core/stingray_renderer/output_nodes/anisotropic_base.shader_node similarity index 100% rename from vmf_source/core/stingray_renderer/output_nodes/anisotropic_base.shader_node rename to vmf/core/stingray_renderer/output_nodes/anisotropic_base.shader_node diff --git a/vmf_source/core/stingray_renderer/output_nodes/billboard_base.shader_node b/vmf/core/stingray_renderer/output_nodes/billboard_base.shader_node similarity index 100% rename from vmf_source/core/stingray_renderer/output_nodes/billboard_base.shader_node rename to vmf/core/stingray_renderer/output_nodes/billboard_base.shader_node diff --git a/vmf_source/core/stingray_renderer/output_nodes/billboard_unlit_base.shader_node b/vmf/core/stingray_renderer/output_nodes/billboard_unlit_base.shader_node similarity index 100% rename from vmf_source/core/stingray_renderer/output_nodes/billboard_unlit_base.shader_node rename to vmf/core/stingray_renderer/output_nodes/billboard_unlit_base.shader_node diff --git a/vmf_source/core/stingray_renderer/output_nodes/decal_base.shader_node b/vmf/core/stingray_renderer/output_nodes/decal_base.shader_node similarity index 100% rename from vmf_source/core/stingray_renderer/output_nodes/decal_base.shader_node rename to vmf/core/stingray_renderer/output_nodes/decal_base.shader_node diff --git a/vmf_source/core/stingray_renderer/output_nodes/light_base.shader_node b/vmf/core/stingray_renderer/output_nodes/light_base.shader_node similarity index 100% rename from vmf_source/core/stingray_renderer/output_nodes/light_base.shader_node rename to vmf/core/stingray_renderer/output_nodes/light_base.shader_node diff --git a/vmf_source/core/stingray_renderer/output_nodes/particle_base.shader_node b/vmf/core/stingray_renderer/output_nodes/particle_base.shader_node similarity index 100% rename from vmf_source/core/stingray_renderer/output_nodes/particle_base.shader_node rename to vmf/core/stingray_renderer/output_nodes/particle_base.shader_node diff --git a/vmf_source/core/stingray_renderer/output_nodes/particle_distortion_base.shader_node b/vmf/core/stingray_renderer/output_nodes/particle_distortion_base.shader_node similarity index 100% rename from vmf_source/core/stingray_renderer/output_nodes/particle_distortion_base.shader_node rename to vmf/core/stingray_renderer/output_nodes/particle_distortion_base.shader_node diff --git a/vmf_source/core/stingray_renderer/output_nodes/particle_gbuffer_base.shader_node b/vmf/core/stingray_renderer/output_nodes/particle_gbuffer_base.shader_node similarity index 100% rename from vmf_source/core/stingray_renderer/output_nodes/particle_gbuffer_base.shader_node rename to vmf/core/stingray_renderer/output_nodes/particle_gbuffer_base.shader_node diff --git a/vmf_source/core/stingray_renderer/output_nodes/probe_base.shader_node b/vmf/core/stingray_renderer/output_nodes/probe_base.shader_node similarity index 100% rename from vmf_source/core/stingray_renderer/output_nodes/probe_base.shader_node rename to vmf/core/stingray_renderer/output_nodes/probe_base.shader_node diff --git a/vmf_source/core/stingray_renderer/output_nodes/ribbon_base.shader_node b/vmf/core/stingray_renderer/output_nodes/ribbon_base.shader_node similarity index 100% rename from vmf_source/core/stingray_renderer/output_nodes/ribbon_base.shader_node rename to vmf/core/stingray_renderer/output_nodes/ribbon_base.shader_node diff --git a/vmf_source/core/stingray_renderer/output_nodes/skydome_base.shader_node b/vmf/core/stingray_renderer/output_nodes/skydome_base.shader_node similarity index 100% rename from vmf_source/core/stingray_renderer/output_nodes/skydome_base.shader_node rename to vmf/core/stingray_renderer/output_nodes/skydome_base.shader_node diff --git a/vmf_source/core/stingray_renderer/output_nodes/standard_base.shader_node b/vmf/core/stingray_renderer/output_nodes/standard_base.shader_node similarity index 100% rename from vmf_source/core/stingray_renderer/output_nodes/standard_base.shader_node rename to vmf/core/stingray_renderer/output_nodes/standard_base.shader_node diff --git a/vmf_source/core/stingray_renderer/output_nodes/standard_base_bitsquid.shader_node b/vmf/core/stingray_renderer/output_nodes/standard_base_bitsquid.shader_node similarity index 100% rename from vmf_source/core/stingray_renderer/output_nodes/standard_base_bitsquid.shader_node rename to vmf/core/stingray_renderer/output_nodes/standard_base_bitsquid.shader_node diff --git a/vmf_source/core/stingray_renderer/output_nodes/terrain_base.shader_node b/vmf/core/stingray_renderer/output_nodes/terrain_base.shader_node similarity index 100% rename from vmf_source/core/stingray_renderer/output_nodes/terrain_base.shader_node rename to vmf/core/stingray_renderer/output_nodes/terrain_base.shader_node diff --git a/vmf_source/core/stingray_renderer/output_nodes/unlit_base.shader_node b/vmf/core/stingray_renderer/output_nodes/unlit_base.shader_node similarity index 100% rename from vmf_source/core/stingray_renderer/output_nodes/unlit_base.shader_node rename to vmf/core/stingray_renderer/output_nodes/unlit_base.shader_node diff --git a/vmf_source/core/stingray_renderer/shader_import/global_textures.config b/vmf/core/stingray_renderer/shader_import/global_textures.config similarity index 100% rename from vmf_source/core/stingray_renderer/shader_import/global_textures.config rename to vmf/core/stingray_renderer/shader_import/global_textures.config diff --git a/vmf_source/core/stingray_renderer/shader_import/no_uvs.material b/vmf/core/stingray_renderer/shader_import/no_uvs.material similarity index 100% rename from vmf_source/core/stingray_renderer/shader_import/no_uvs.material rename to vmf/core/stingray_renderer/shader_import/no_uvs.material diff --git a/vmf_source/core/stingray_renderer/shader_import/no_uvs_transparent.material b/vmf/core/stingray_renderer/shader_import/no_uvs_transparent.material similarity index 100% rename from vmf_source/core/stingray_renderer/shader_import/no_uvs_transparent.material rename to vmf/core/stingray_renderer/shader_import/no_uvs_transparent.material diff --git a/vmf_source/core/stingray_renderer/shader_import/standard.material b/vmf/core/stingray_renderer/shader_import/standard.material similarity index 100% rename from vmf_source/core/stingray_renderer/shader_import/standard.material rename to vmf/core/stingray_renderer/shader_import/standard.material diff --git a/vmf_source/core/stingray_renderer/shader_import/standard.shader_import b/vmf/core/stingray_renderer/shader_import/standard.shader_import similarity index 100% rename from vmf_source/core/stingray_renderer/shader_import/standard.shader_import rename to vmf/core/stingray_renderer/shader_import/standard.shader_import diff --git a/vmf_source/core/stingray_renderer/shader_import/standard_masked.material b/vmf/core/stingray_renderer/shader_import/standard_masked.material similarity index 100% rename from vmf_source/core/stingray_renderer/shader_import/standard_masked.material rename to vmf/core/stingray_renderer/shader_import/standard_masked.material diff --git a/vmf_source/core/stingray_renderer/shader_import/standard_transparent.material b/vmf/core/stingray_renderer/shader_import/standard_transparent.material similarity index 100% rename from vmf_source/core/stingray_renderer/shader_import/standard_transparent.material rename to vmf/core/stingray_renderer/shader_import/standard_transparent.material diff --git a/vmf_source/core/stingray_renderer/shader_libraries/common.shader_source b/vmf/core/stingray_renderer/shader_libraries/common.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/common.shader_source rename to vmf/core/stingray_renderer/shader_libraries/common.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/compute.shader_source b/vmf/core/stingray_renderer/shader_libraries/compute.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/compute.shader_source rename to vmf/core/stingray_renderer/shader_libraries/compute.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/decals.shader_source b/vmf/core/stingray_renderer/shader_libraries/decals.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/decals.shader_source rename to vmf/core/stingray_renderer/shader_libraries/decals.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/default_shaders.shader_source b/vmf/core/stingray_renderer/shader_libraries/default_shaders.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/default_shaders.shader_source rename to vmf/core/stingray_renderer/shader_libraries/default_shaders.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/default_shaders_mobile.shader_source b/vmf/core/stingray_renderer/shader_libraries/default_shaders_mobile.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/default_shaders_mobile.shader_source rename to vmf/core/stingray_renderer/shader_libraries/default_shaders_mobile.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/development.shader_source b/vmf/core/stingray_renderer/shader_libraries/development.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/development.shader_source rename to vmf/core/stingray_renderer/shader_libraries/development.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/extra.shader_source b/vmf/core/stingray_renderer/shader_libraries/extra.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/extra.shader_source rename to vmf/core/stingray_renderer/shader_libraries/extra.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/fxaa.shader_source b/vmf/core/stingray_renderer/shader_libraries/fxaa.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/fxaa.shader_source rename to vmf/core/stingray_renderer/shader_libraries/fxaa.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/gui.shader_source b/vmf/core/stingray_renderer/shader_libraries/gui.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/gui.shader_source rename to vmf/core/stingray_renderer/shader_libraries/gui.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/heatmap.shader_source b/vmf/core/stingray_renderer/shader_libraries/heatmap.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/heatmap.shader_source rename to vmf/core/stingray_renderer/shader_libraries/heatmap.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/lighting.shader_source b/vmf/core/stingray_renderer/shader_libraries/lighting.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/lighting.shader_source rename to vmf/core/stingray_renderer/shader_libraries/lighting.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/lighting_common.shader_source b/vmf/core/stingray_renderer/shader_libraries/lighting_common.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/lighting_common.shader_source rename to vmf/core/stingray_renderer/shader_libraries/lighting_common.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/noise.shader_source b/vmf/core/stingray_renderer/shader_libraries/noise.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/noise.shader_source rename to vmf/core/stingray_renderer/shader_libraries/noise.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/particle_billboard.shader_source b/vmf/core/stingray_renderer/shader_libraries/particle_billboard.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/particle_billboard.shader_source rename to vmf/core/stingray_renderer/shader_libraries/particle_billboard.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/particle_lighting_common.shader_source b/vmf/core/stingray_renderer/shader_libraries/particle_lighting_common.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/particle_lighting_common.shader_source rename to vmf/core/stingray_renderer/shader_libraries/particle_lighting_common.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/particle_ribbon.shader_source b/vmf/core/stingray_renderer/shader_libraries/particle_ribbon.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/particle_ribbon.shader_source rename to vmf/core/stingray_renderer/shader_libraries/particle_ribbon.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/placeholders.shader_source b/vmf/core/stingray_renderer/shader_libraries/placeholders.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/placeholders.shader_source rename to vmf/core/stingray_renderer/shader_libraries/placeholders.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/post_processing.shader_source b/vmf/core/stingray_renderer/shader_libraries/post_processing.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/post_processing.shader_source rename to vmf/core/stingray_renderer/shader_libraries/post_processing.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/post_processing_common.shader_source b/vmf/core/stingray_renderer/shader_libraries/post_processing_common.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/post_processing_common.shader_source rename to vmf/core/stingray_renderer/shader_libraries/post_processing_common.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/sampling_common.shader_source b/vmf/core/stingray_renderer/shader_libraries/sampling_common.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/sampling_common.shader_source rename to vmf/core/stingray_renderer/shader_libraries/sampling_common.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/shadow_map_common.shader_source b/vmf/core/stingray_renderer/shader_libraries/shadow_map_common.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/shadow_map_common.shader_source rename to vmf/core/stingray_renderer/shader_libraries/shadow_map_common.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/terrain.shader_source b/vmf/core/stingray_renderer/shader_libraries/terrain.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/terrain.shader_source rename to vmf/core/stingray_renderer/shader_libraries/terrain.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/terrain_utilities.shader_source b/vmf/core/stingray_renderer/shader_libraries/terrain_utilities.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/terrain_utilities.shader_source rename to vmf/core/stingray_renderer/shader_libraries/terrain_utilities.shader_source diff --git a/vmf_source/core/stingray_renderer/shader_libraries/water.shader_source b/vmf/core/stingray_renderer/shader_libraries/water.shader_source similarity index 100% rename from vmf_source/core/stingray_renderer/shader_libraries/water.shader_source rename to vmf/core/stingray_renderer/shader_libraries/water.shader_source diff --git a/vmf_source/gui/vmf/.gitignore b/vmf/gui/vmf/.gitignore similarity index 100% rename from vmf_source/gui/vmf/.gitignore rename to vmf/gui/vmf/.gitignore diff --git a/vmf_source/gui/vmf/header_fav_arrow.dds b/vmf/gui/vmf/header_fav_arrow.dds similarity index 100% rename from vmf_source/gui/vmf/header_fav_arrow.dds rename to vmf/gui/vmf/header_fav_arrow.dds diff --git a/vmf_source/gui/vmf/header_fav_arrow.texture b/vmf/gui/vmf/header_fav_arrow.texture similarity index 100% rename from vmf_source/gui/vmf/header_fav_arrow.texture rename to vmf/gui/vmf/header_fav_arrow.texture diff --git a/vmf_source/gui/vmf/header_fav_icon.dds b/vmf/gui/vmf/header_fav_icon.dds similarity index 100% rename from vmf_source/gui/vmf/header_fav_icon.dds rename to vmf/gui/vmf/header_fav_icon.dds diff --git a/vmf_source/gui/vmf/header_fav_icon.texture b/vmf/gui/vmf/header_fav_icon.texture similarity index 100% rename from vmf_source/gui/vmf/header_fav_icon.texture rename to vmf/gui/vmf/header_fav_icon.texture diff --git a/vmf_source/gui/vmf/header_fav_icon_lit.dds b/vmf/gui/vmf/header_fav_icon_lit.dds similarity index 100% rename from vmf_source/gui/vmf/header_fav_icon_lit.dds rename to vmf/gui/vmf/header_fav_icon_lit.dds diff --git a/vmf_source/gui/vmf/header_fav_icon_lit.texture b/vmf/gui/vmf/header_fav_icon_lit.texture similarity index 100% rename from vmf_source/gui/vmf/header_fav_icon_lit.texture rename to vmf/gui/vmf/header_fav_icon_lit.texture diff --git a/vmf_source/gui/vmf/mutator_button.dds b/vmf/gui/vmf/mutator_button.dds similarity index 100% rename from vmf_source/gui/vmf/mutator_button.dds rename to vmf/gui/vmf/mutator_button.dds diff --git a/vmf_source/gui/vmf/mutator_button.texture b/vmf/gui/vmf/mutator_button.texture similarity index 100% rename from vmf_source/gui/vmf/mutator_button.texture rename to vmf/gui/vmf/mutator_button.texture diff --git a/vmf_source/gui/vmf/mutator_button_hover.dds b/vmf/gui/vmf/mutator_button_hover.dds similarity index 100% rename from vmf_source/gui/vmf/mutator_button_hover.dds rename to vmf/gui/vmf/mutator_button_hover.dds diff --git a/vmf_source/gui/vmf/mutator_button_hover.texture b/vmf/gui/vmf/mutator_button_hover.texture similarity index 100% rename from vmf_source/gui/vmf/mutator_button_hover.texture rename to vmf/gui/vmf/mutator_button_hover.texture diff --git a/vmf_source/gui/vmf/search_bar_icon.dds b/vmf/gui/vmf/search_bar_icon.dds similarity index 100% rename from vmf_source/gui/vmf/search_bar_icon.dds rename to vmf/gui/vmf/search_bar_icon.dds diff --git a/vmf_source/gui/vmf/search_bar_icon.texture b/vmf/gui/vmf/search_bar_icon.texture similarity index 100% rename from vmf_source/gui/vmf/search_bar_icon.texture rename to vmf/gui/vmf/search_bar_icon.texture diff --git a/vmf/item.cfg b/vmf/item.cfg new file mode 100644 index 0000000..d8ef81e --- /dev/null +++ b/vmf/item.cfg @@ -0,0 +1,7 @@ +title = "Vermintide Mod Framework"; +description = "My Description"; +preview = "preview.jpg"; +content = "dist"; +language = "english"; +visibility = "private"; +published_id = 1289946781L; diff --git a/vmf_source/localization/mutator_manager.lua b/vmf/localization/mutator_manager.lua similarity index 100% rename from vmf_source/localization/mutator_manager.lua rename to vmf/localization/mutator_manager.lua diff --git a/vmf_source/localization/vmf.lua b/vmf/localization/vmf.lua similarity index 100% rename from vmf_source/localization/vmf.lua rename to vmf/localization/vmf.lua diff --git a/vmf_source/materials/vmf/header_fav_arrow.material b/vmf/materials/vmf/header_fav_arrow.material similarity index 100% rename from vmf_source/materials/vmf/header_fav_arrow.material rename to vmf/materials/vmf/header_fav_arrow.material diff --git a/vmf_source/materials/vmf/header_fav_icon.material b/vmf/materials/vmf/header_fav_icon.material similarity index 100% rename from vmf_source/materials/vmf/header_fav_icon.material rename to vmf/materials/vmf/header_fav_icon.material diff --git a/vmf_source/materials/vmf/header_fav_icon_lit.material b/vmf/materials/vmf/header_fav_icon_lit.material similarity index 100% rename from vmf_source/materials/vmf/header_fav_icon_lit.material rename to vmf/materials/vmf/header_fav_icon_lit.material diff --git a/vmf_source/materials/vmf/mutator_button.material b/vmf/materials/vmf/mutator_button.material similarity index 100% rename from vmf_source/materials/vmf/mutator_button.material rename to vmf/materials/vmf/mutator_button.material diff --git a/vmf_source/materials/vmf/mutator_button_hover.material b/vmf/materials/vmf/mutator_button_hover.material similarity index 100% rename from vmf_source/materials/vmf/mutator_button_hover.material rename to vmf/materials/vmf/mutator_button_hover.material diff --git a/vmf_source/materials/vmf/search_bar_icon.material b/vmf/materials/vmf/search_bar_icon.material similarity index 100% rename from vmf_source/materials/vmf/search_bar_icon.material rename to vmf/materials/vmf/search_bar_icon.material diff --git a/vmf/preview.jpg b/vmf/preview.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6104d0b68bed32acbb60fa269f1fbb7748ce75c7 GIT binary patch literal 135902 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

Lhxl%PmEHZ17~D zWoWCKc@}Y37mOrIk_Nfp6gL`21Kf-yS?!}uD-$ZO>7FY=@Rs9`I`QiicO9lkw+W^C zi6-$`h?J;Rm33j%4=*wX0jLxd9YDs?*7knp{^`UjA8*jKHCx{!PaHxTI0!WqJ9-wD zWMfgA31?`-v@jMVay_Ko@8acMnYYP`e)O42+D6<XN0N#P_woTr7e(hTWHpg{pqf$ws)o*ur#R+z? zx=#ub8Pe8}&Z<9ENRQc=9H(1T<#$Hg#2v}9vMh2CQc_ew6q{=p#XN&RPIb3LJjn$JF7m)RDtJE?vciXkeb3EnO=|Pb?)%mhpbn;ST_}v90u5mEPTXwe4|7 z2#)3nR!5UrZw^3Mcq{P+#-#?DYt}gXO}P72$$ayblj{fHfEGyy^kf-U(qe%+PdRny&5y4<8s`~qJ?;1>}ich!PJ*h`kQH`X900tOv zx zmo~krHgCEQGjB}lf>XS2G3$;IQCJKvM9m_wXN}Sr!BqmC#HjJu3W`mwm)-cTuiE$> zyF;1&>e7Q>fuP-0dFRIiT@KQy6txw(N%q*QhNB@@c3K!_NTqV}B6|;9>=(B&MsIoe zOMO*y8#J$}OHdgir~)|vAw~mJQh`I%v9f*aeXZCo@3!7g`>P$ZVo@Y9$pm|BGut?T zs5aNC9z~itS!78VJfbquJ35sB7ug#ZH$k}aS!}!_ni(kNq{hQhR=EnROcE0O@g0s{kw?ixKQ~eY#q;oDfAKz1E#9R25trjUkCN&+;8%S%P_Y?ds~@&TCFxYu26^ zrF4=~UNuHDG6hy`YF?lKbsA>93kM!zFi99=A{ggaI)g1hkjOa~lTtij+z@U(g-yT= zT1g1>{{V~VK(Kge5dx|xYJ9(MO*_XIkly;F&t|ffbsAO~DvXQfdS$ALt*IGAD6-N` zJPWB<5Z33OeVW>D1|I>*R|xu-P_CBJS5QC2r19vQ_iH{5^KD@>+S~3n=HBE)bcx_H zEWQ+jI*>@Afbz{a^uny^W7{PsD+NA8igeb&!1Vb!B(=Ec>cQE%dTqT5~rrCx>1O9mJ5x7ywCF z^{5)MH5~Li?Y-AUhuB+}U_rMduB^>LS3Wy&txYo2W1lBQEj@J+I?*a1mbk^Le!*8PFFOqm@1--+z*iJ6z;il3$4m4t2mgtq*}F=;dtQMYgI!FW(1_ePB&3%4d2eTyE5AR+?JjJNC{?dji zDx@_IlVi616v`!($k&A>lIWqmC>d+kbHFS5{H5 z@J{7BryqrAiVbpft_k2z1JZB2@3?L5&$wKRzuYPMsCg%ATa85t`kDMm=6WG0f=L*% zB9h9g1c6N|uf*-_hDT-gHpIs)VzPoPq_|iF?2S^Jrx{aHk+gZ?^MyEAu7F{*A$m&OoRQZz7>18DfQ5iK+DC)?)q5t@r-`bN=dn_WLumTqAG$ zDZhfj3zRJ$?`JH~#a&BCl3_Gy7@}mCuAZ8K*?WL7*)XHp7};iF*s9dogJ)l(hXw6)b!L<+d4mZKF6 zk-GYf%9PUn;QBCM!1_J3#xK3Jw%g;5tuDtX0H4IV+P^HX+f&hxxckB6@9!YpxuWjp zO|_@FHVrGPlSrqI)(r)J5D6#_IB8PHv~-Z{JcM+$J;_-D30{XQkt-u3u8PV$Rz7`V z15yJeHfJ z50HCgwzjr$s-qz!08~^{;m1OL{KIAUw&mK@5!Va`)03{#C%pGe)k2OMOk9;T_0K_% zo<`9QMxqU6reGGD1LP#Og)u)Q^DG>ju=6#%P_+BxyO4_31zkm)D<-K2nkgcRGVetg zsq3a+dr!ON_ui-7{{XxG^So|JwEIW3a%|g%{{XqkFohDrm+W2nIK+9p+-8MkGQH4(t!CYWAH zH0smtOXRO_WZCZ{<}PZy`o3v;zlKhs1HNkQ@X0u-s{&O;7t5>}``P{YcF%FP3$JAU z?;8wz7qM2cEt$JW{28|!TYu9??V}(yuGvIU6mF|5$_%cltPYbsK#dP-?Ptf(sAv0nAL1A~x>|Xso5r!lM+~I{I6j?9f2Xs*bfvbJkvE9uyo5`x7Yfd$n53%A z0IBXGqz^qLbr}BucgEGsR$qHRZFfDpmUlMWTGMm3d6L#;iXnHmPZUn_GODaXO&Xn8 zg$#{cj**ldbJ%}p7n85Id%Uw$#1P`8H6CE{PSdl@@UMz{60)%%o<5`xVh88WNYoX% zuE|2ghYm>K7MKQvaU-a9Ke_MTqG2uEKEQK3TS<8`Dw}OGG1nuR2$9$H*i@{9_q7KW z=~1=to9hQzEn@7g%@r;=;d=cs(a212ku0JLWvUf3GOK>2Rtm)1=zXBO=N?m;qm1(% zv3Upy@zB>9I%q#Xmr9}gqy6O8+i<;)*}dFHWEk86_SFCY)s89jid=k%79J9#MRL@fvhMJJZvId5#p2TUj&|IEmTGu=6x#l2uNT-1y~vtWjq;3AcMk$bd1Sm6ERs5)8mlR<5x@(mAQ%`bO-|i z;>mtVAQAQF+ZT-1uqw$R@f_y9XOGxAG1=^r@^_EIuAJA*rw5cdD500ta z^w?ajW@<{U#?ZDxx$35=r2E>aT7sH7DF~dW+-nN!Wl;mR`OH>Zw&A+nSl%?VYY-Pf z7+6WrqJgx67?}l9x&rD1l6uYIh{cQv)LkVEC6>mO?{^!cb+lMC6RiyL{n9IE>rCMldqFM3|(}*dk!cxHm?uzlM z4;_dL$GNX-v5j`iIGQ4|h+_m2Skx$`S-Y6fA}^aaGa6;%-s zG=-l+Mg(9QW5etoUVTB?d!u%2T8+_1iKjVyHtH2Mbn7&VDzG`)nl`70Dz9(y%y*b8 zO$QDYR3YQroA$%8b1Q8(H%Hzmv_5)o`z(upd(PE5to=~;HIFUqVOX_20k^ZWxK~K zm~T9!l4SEVtaTH9cs|@qmXhXs!68|h$zQU(50?rGd3kjSzSkT(MV{FyS!jegKMNMF zy4NHzW;LyIT9clz*TIphrNUtHxkEnK+kxi9?fO@rMAc?lUJ9Jtf>(O@=;M=3Ejb=4 zas!ZAS4xW{+bys6P1?@D4fg2w$kZWLfH#6E+FXje)~!-J%}@ESpFPCppKiGe+AZ^$ zS^cx+^&;NdIV2Bq!bWHX`<5o=D^za|3uys}X-6QkC=b)(X}2Z{qZv@m998kx(Mv2$ z%OaPjk4X}!7CPqQz>rt^`!KS(drOFJ6b5u)bLala;nZQf?PB&BVlzBi(2YuahM|%V z`iK|@p%-dxYV5W(TAr#Lbrw208Vane(Hez{uC5B$@i4(dc-pS2vS^heP;6X!tiH%M zUFr)5(qr*1rPRR&11LS!K3aHxE|A_7*|xI@N zTAT)z7*WuD{2}B=iYVlgcX*i;UEPkoOwkTmpFrdM2h-V!pGy#~anX|5y&XhZIQvJK z>LmE#B#kz`FDUbdQh^m#;q=&nc^lPX^dy1ra@?~oin&sM<6n#ZE2fgnkJAfSX6dpBPYgcBWa^A z3W#Tkkd&0)_YKqoen%e7ZErkTZRFQORUr9NxcfgYi#H9Vi*3ROWOJd%@hgxHK5Bk^ zYI+Jbl`VaC#oX}GNBl`^jz%Sxu8bO~5(;SXF~u>6#D<<3DTGlgSX)Zm-`Ixo?i(HN zZ4!YH2B%3hQqE+r&Y;x%$>Gv{<~cX`cgf?Dd$$ll3bcTDgh6W*1xQc^lw~o;iiB0J zK_pb_Jf`l%MW4%1veL!4B%%9fucT=*anjJx$3Q7$^OZ0dnPf%uY6F{*W9*jy0B{>b z7CUXcspG||qzg(0k+ou&I63=IL!NQHPjGq9edeZ)N3fD8t>7|}T)_ltig*qL6{Rp2 z&!yJQ+qAg)x{7LAIBBTlH8t|n(iaSBWOZ28=9kMd!y7mGwE;r?E$s!y=`F)6yq)SX zPhV0z&(HSsP5Yr!437P(q_Y#)gGwMA6;Wsuc@TYift<s$I3YaI;|R zsi#3*=Qvk9r zpwjA(T;jYs$-lYpzFSY--`$RC+_}ZBKd2kt!y%YM7?N1;cGhX_-D3k=2e*>u05vGq z%c$g08z#`mZ9S*AbFC1QErs4|xmp=RjWqc^#XD3)%^Z?Dc=1^RSz~4amfVZ`6kf+3 z>0`QWGBqG=xWqKmEfhf4BR{B|agLylK<1mCQ}^GK{m|PKNi*}W)d4EJf8v+7-XD6S z7gk$okh1Dv8CbTUdT!1_YG`-vQl3PqL)cYvMJq5>Fw*7dAayTdG(@nnsr;w|-T8e= za_=u%_Y0>z*j?ySzM-U zSD}*&Hfq{dqB?wCBvKk?x{8M-u26d>_S0my+oIh!y~5EB{@aAH>SfFTX#=fZU5){pZ}V1ktmuf-%=KuI#CS3Wf)W!T$gc z0pEH7$r+!jWrO~I0fc4Mlk!KkKaX|eNAOt6zqDQc;q5vsJliIvs0 zDZ1ILeWl&Kx8=LbXok@PS==LGwKIkUCm^^FTdx!{I|YtGy9!&A2Mtg zaFEfeLu&A{C+V1;G}5A1B_s|AC`npLr1X)(iYkhHypI5*%S|<9RIDT~6-`ZLOH?4I zWeSZQI!y8U1;J7Y_BBGbky^qTS}4&J8u8KqugJA4)*A13Q}Z7Cyzgxq$36As&C{Sl zx_+WVBCnE_jYvh)>0ET%NgZ`H7Difnc#UkaO-gEGG8c(m$CFxp31u2b)9cT)cZj!l zFqV|~O4X;4^QC;cOSkxzRyTefs+*%#sQ9VJzvt=lr$PqG+qhiS6-?j5XsKkNS|o`z zyVn`jyqc8j44NGXU`4qfUtxRui~Ad;j$4OhB%kR1Ubx};^ex+2vF{^Z}>+}rrl*v0fx&Eva^n1gFsC zWxnOTyJzN?i*8-BXtD+5-$+$`WyVlw1*B3w9;*`to6A7+WknVWx6eS> zGeP`5NhXGtn6$9VT48!<>Zz8ZRgg5kOUjDCT{+8}&A!TYj?PP&;nOFJtiNe3f)=$Z zNCX;r8g-9Sb9U`-HTLrk-C*WuzMRC7QPouHS2{=)^CW^vuSR>WI^zlb+|OonS;xgs zHY#k@4&x3#fW1ar6_>}-GDvXjHEO%i_(tZ9*I9ZVA}k(C4m_Q2sH;ItP1CzQ{MSIcwMV@wRq)^9w1imWvJAz3$PlI z)PgDVrD@bWZCuebEK(p{2ty*VMomQBtTh!DwxPft)Lujg8S}45w%f2OBwU)0vV$Ew zeZoUL!bAmPT@yH!spF4Mmw6oiogpo9Yz?k`(lEglP!@B*aU_#~JoD3%fErUN0yPz4 zO%+8eshHpa>S@yoZn^3_gAay$$TPY%eC_rah`^DFDN!>CD-^N%#T&1rSeudT-c7gZ zSbcTyhN8Lv)aT_v!{=Ib2u@}@p0Dc8$2I&q%6RNV7Ql>EWR{I3Gn7_SHghT2R8C1dswX1k_LF z*7j*Ui5iI1>0SfQl*b=DbTw;mvJ_xUgZZC4{l0xX)>dL%P%Kf@(N)lSpvXM16BN~n zQW_VENMx7DV^2v^6ons8Wp6tXp_+~6Kf(KYUmn+Rx+F}l4Sd1$r=Q!?FW*5glJpJc zlF=*$hwjuJN+pfR2@6SU*n;|)+*{wFo>=u;iB5t^t8gDL&&#Ua?TUOWsKG8MuA|L; zN7#CK+m!gsgjMwQvBdADwKwJWoKoPW15-EfEBJ$zaI2%SsAKGz^D4Y zT_v8=!$xJ3BcO*HC2lvnvlJ1k{{Ri8+Sxk!V*&osj;}X1Ibo3!#s1=HF)biAx9xvZ zZ(}QxlX8T2l1LV5nkdG8ArX{?C(#wa9=|StqV9Qjj#}kqcWYg?P0nz?f-kQYn#cnz z(wKAT5P6=2AeE6pJR+_+*`jK;T6%De6zvQsSzYXqc@{C`L<~!ke!9JaMc9x>BSb?J zPCj2D=0Bf8`8I@IXtRle##m8E(tdig`3|Mzu#~gCFiBylg$VQLZ4!!k))xwz?u|Fq zZg>s#_UdkhJU}T?@cqB+be%SJa)Nk?iHHOaBzce7=hJ@M*(r;rsiLC}@X1qGSnBhl zvwhuU)l9Mw!6gyAybD{>4Zfc5xNp}N^20otkyTcs9|#Ly%n!1?Z*JJ5u!3lpRb-Kz z>d7V8npgZCEGh6c5y+^jZyaHqe%~t1pdZ!r{-0Y9WzBj?C8=6;ZwAyUs3;6NQqtn9 zsDyJzC)=69jI<>@<@Wr# zCERv6?ixKS+_fVg5I8Es%~%o{e-NnYKfdCqqS%|`B|FOmxP7$Kz~sokYaKdCQ+7fX zy>W6))wGgt^!9bjGWh$wtRg`o$V$`9>I4yAOylR!UzsBtX5S6;;6}ER!7i+*Rfa(H zZ8@Rh)F6h~zTiR~s-aSUvHV8u=3ajCj9)KpHLBz2=2Bv+}dWPee<&Yin>gr3?mVnl0oZLqt z39_%s03Cv=n^wZ%41K2GkVjuyl4e_4DMDt_cLE}Coyw<{{Yl;2J>+D zmtjVWf2wjzIz*a4QpZ+~3dHH-(+(p6S4O#7oQx)#qFG_bLk*WgO)13V)ZV?()&t zqUjzWuk0Bkpjy6&PX$D6D?(XxmI-nUifte)2vTbPy0Ozn+vP<&hqPy?B6fhIBX_ksd3m$&fmh+wlQ%%i%n4_ zO6C6mfn~DUj7~>4JvK!takPD*H}BNzkn^XPlD7%mAjW<;Umlj~pgW2J?D4;!YY zvW}2VEQ&!yXI)@}!=WKVITk1KeUihtUM7enm<1TA=+W)1S-}yFOn=lrKU2~#1syDz zY<)!%41HxiMQj-gNbe-RIT=!t@+6)q%3qrUZb!8f-AIXb6p!LtI*kO52hZ$2hts8& zc5ulxwZw1;Wkz7?qmS_Fp~=CoU;or_{!_U;e80=1;>8DS$$`l1nJ{_!>|Pf+il~PZ zO+hDPZwTqP6#2TimW%k^7IKxIIjOw!DFrX?6)J{@<6#>XBJWkXNFaIT1B2#`f&=gH-und ztdF8G@e27?uk$J2S!}mqt}b2W9^}MeC#$K#35ewCDdAsj>ei*-b%40^_*&I_Z1|Q(h94f;@aOIDmP735n?+tXJ@FU+>qAEL?Efy z+oGnHmWr}TDQhbcrP>+QjUIN=Dkw6*6}&)+?`h^etDCHMi|YXLN4DO^j!?JiLvb63 z*efVHmS~v>7*=!|sz5QXH0{^?rOq6y%lETFE%)7m=6D>X7CX(pc;4a$kRIUnb9l-4 zh>5{ol-rvxLxSmec4l^)0h4hIGHj{oqDrQusgAke%u&TFLE*$y(Z?+`i7b*MRKYHl zCd7M&_InGB%bgp4+ohf(R{EtaMq#8F*oxJ|5aUP;6@fU%Q(rb++iYBzHjC(?l^PJX z%!BmF)W)EZN+LK4Nfi#%;Cd@Ninl5{^Cp?RX5ZhKS|-4nO5FV;)MYRdv?h+KmmKt! z5!Pbis6}W|Sv*mg^@c2LW(}qbH0Fzc-Itd;cH<|DsbOs~%qyrf>Qat!D?_cTN>ix6 zcfG%FZ?9zD?5uaaq8|iD^$J~~W*S^Z6o*1UAq!y?SI?rBRxwcW!4&Y)>thuAGPG?GbC0O6y}t&mgZiRurNw~-l8YBSLp+Q%~8OBL!9%a*J=G6l@yy0!Yj85%<5GlEZP z>9wg@irf&TOh5pr06-3qMVCsi(M7novgs}YF*PiF&z*jLr=d#OlNr*K7ywd$0f3+i z00#;HI&g-P9VMk?vWwqPUKL4lK_d21$o8DPlGj2X%BQDAy_`B4=5$Y5kUx>mK3yAq zk4yY>tSRX5`3xLV?Ov4ap2EvwGjPN9d$iN;cqp)2Zk~6kh-9mUC){NyvFwM*EdiOe zgi-7>7Tn)m%)6EJ;t0O3)+ppSCG@Rg0P$j4jNDawM;@Y%W8C9!b@?M`v$&E~n%+Wu zI+czljoVwF!j4cVCV-PcTyz#;JlOggT4jN%U1O=1f46p)XBA5rfhG}zNETUS0f9GC zZ}m16nrL-6GHFoWeyVr_>Hh#1)aNG6GP)>)2jiq1&T0yN@YfqS| z2EJh9{5?ucbg(f)2XVjjU<4*9F-@-DQKEd-exNCqoYDYhKYz`0VC2rppoo9Cg$=a z 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

g@=BkN5Xo^Phh>J-uc&)ckRD=+Ey-4yiXnr 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 z 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 1 then + mod:echo(message) + else + func(self, sender, channel_id, message_sender, message, localization_param, is_system_message, pop_chat, is_dev) + end +end) +]] + +--[[ USEFULL STUFF + + + +mod:hook("ProfileSynchronizer.register_rpcs", function (func, self, network_event_delegate, network_transmit) + func(self, network_event_delegate, network_transmit) + + network_event_delegate:register(mod, "custom_mod_rpc") + mod:echo("It's called, ffs") +end) + + + +mod:hook("ProfileSynchronizer.unregister_network_events", function (func, self) + + if self._network_event_delegate then + self._network_event_delegate:unregister(mod) + end + + func(self) +end) + + + + + +--StateIngame.on_enter: +-- ScriptBackendSession.init(network_event_delegate, disable_backend_sessions) +-- backend_session:register_rpcs(network_event_delegate) + +--mod:dtf(Managers.state.network._event_delegate.event_table, "RPC", 2) +--mod:dtf(Managers.state.network._event_delegate, "_event_delegate", 2) + +mod:dtf(Network, "Network", 2) + + + +mod:hook("PlayerManager.add_remote_player", function (func, self, peer_id, player_controlled, local_player_id, clan_tag) + + mod:echo("PlayerManager.add_remote_player: " .. tostring(peer_id) .. ", " .. tostring(local_player_id)) + return func(self, peer_id, player_controlled, local_player_id, clan_tag) +end) + +mod:hook("PlayerManager.add_player", function (func, self, input_source, viewport_name, viewport_world_name, local_player_id) + + mod:echo("PlayerManager.add_player: " .. tostring(local_player_id)) + return func(self, input_source, viewport_name, viewport_world_name, local_player_id) +end) + +mod:hook("PlayerManager.remove_player", function (func, self, peer_id, local_player_id) + + func(self, peer_id, local_player_id) + mod:echo("PlayerManager.remove_player: " .. tostring(peer_id) .. ", " .. tostring(local_player_id)) +end) +--]] + + + + + + + + + +--[[ +mod:hook("PeerStateMachine.create", function (func, server, peer_id, xb1_preconnect) + + mod:echo("PeerStateMachine.create: " .. tostring(server) .. ", " .. tostring(peer_id)) + return func(server, peer_id, xb1_preconnect) +end) +]] + + + + + + + + + + + + + + + + + + + + --[[ mod:hook("KeystrokeHelper.parse_strokes", function(func, text, index, mode, keystrokes) diff --git a/vmf_source/scripts/mods/vmf/modules/vmf_options.lua b/vmf/scripts/mods/vmf/modules/vmf_options.lua similarity index 100% rename from vmf_source/scripts/mods/vmf/modules/vmf_options.lua rename to vmf/scripts/mods/vmf/modules/vmf_options.lua diff --git a/vmf_source/scripts/mods/vmf/vmf_loader.lua b/vmf/scripts/mods/vmf/vmf_loader.lua similarity index 100% rename from vmf_source/scripts/mods/vmf/vmf_loader.lua rename to vmf/scripts/mods/vmf/vmf_loader.lua diff --git a/vmf_source/settings.ini b/vmf/settings.ini similarity index 100% rename from vmf_source/settings.ini rename to vmf/settings.ini diff --git a/vmf_source/vmf.mod b/vmf/vmf.mod similarity index 100% rename from vmf_source/vmf.mod rename to vmf/vmf.mod