diff --git a/.dir-locals.el b/.dir-locals.el deleted file mode 100644 index 3a8694ec..00000000 --- a/.dir-locals.el +++ /dev/null @@ -1,6 +0,0 @@ -((c++-mode . ((mode . clang-format-on-save))) - (c-mode . ((mode . c++))) - (nil . ((projectile-project-compilation-cmd . "just build") - (projectile-project-run-cmd . "engine/bin/godot.linuxbsd.editor.dev.x86_64.llvm --path project") - (projectile-project-configure-cmd . "engine/bin/godot.linuxbsd.editor.dev.x86_64.llvm --path project -e") - (projectile-project-test-cmd . "engine/bin/godot.linuxbsd.editor.dev.x86.llvm --path project")))) diff --git a/.gitignore b/.gitignore index b18b60ab..3f82628a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,18 +5,16 @@ # When configure fails, SCons outputs these config.log .sconf_temp +.config -# build artifacts +# build artefacts +.cache/ *.o compile_commands.json + engine/.github project/.godot build/authority.pck build/authority.x86_64 build/authority.exe build.zip - -# general-purpose cache folder (used by e.g clangd) -.cache - -__pycache__ diff --git a/assets/textures/props/grass_a.kra b/assets/textures/props/grass_a.kra deleted file mode 100644 index 5dd88a9d..00000000 Binary files a/assets/textures/props/grass_a.kra and /dev/null differ diff --git a/assets/textures/props/grass_a.kra~ b/assets/textures/props/grass_a.kra~ deleted file mode 100644 index a34efc1c..00000000 Binary files a/assets/textures/props/grass_a.kra~ and /dev/null differ diff --git a/design/monarchist_camp.svg b/design/monarchist_camp.svg new file mode 100644 index 00000000..23a1e008 --- /dev/null +++ b/design/monarchist_camp.svg @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/engine b/engine index 6b76a5a8..e531f3eb 160000 --- a/engine +++ b/engine @@ -1 +1 @@ -Subproject commit 6b76a5a8dc011723033cc8ad2ba3da345daab039 +Subproject commit e531f3eb7b13a9adaaf5b15ac9b3aebc4c2030cd diff --git a/justfile b/justfile index db155243..48c61a88 100644 --- a/justfile +++ b/justfile @@ -37,8 +37,9 @@ release-windows: build initialize-template projectname: # Initializing Template {{projectname}} sed -i -e "s/PROJECT/{{projectname}}/g" ./modules/PROJECT/register_types.h ./modules/PROJECT/register_types.cpp ./project/project.godot ./project/export_presets.cfg .gitignore - sed -i -e "s/authority/{{projectname}}/" ./justfile + sed "s/change_me/{{projectname}}/" ./justfile mv ./modules/PROJECT ./modules/{{projectname}} + # Done Initializing, you will still have to update BUILD_NAME in your justfile format: # Formatting Custom Modules diff --git a/modules/authority/__pycache__/config.cpython-313.pyc b/modules/authority/__pycache__/config.cpython-313.pyc new file mode 100644 index 00000000..8d3597ed Binary files /dev/null and b/modules/authority/__pycache__/config.cpython-313.pyc differ diff --git a/modules/authority/actor_body.cpp b/modules/authority/actor_body.cpp new file mode 100644 index 00000000..1f995409 --- /dev/null +++ b/modules/authority/actor_body.cpp @@ -0,0 +1,81 @@ +#include "actor_body.h" +#include "core/config/engine.h" +#include "core/object/object.h" +#include "macros.h" + +void ActorBody::_bind_methods() { + BIND_HPROPERTY(Variant::FLOAT, movement_speed, PROPERTY_HINT_RANGE, "0.0,20.0"); +} + +void ActorBody::physics_process(double delta) { + if (this->teleport_on_process) { + set_global_position(this->teleport_target); + this->teleport_on_process = false; + force_update_transform(); + } + set_velocity(get_movement_direction() * this->movement_speed); + move_and_slide(); +} + +void ActorBody::_notification(int what) { + if (Engine::get_singleton()->is_editor_hint()) { + return; + } + switch (what) { + default: + return; + case NOTIFICATION_READY: + set_physics_process(true); + set_as_top_level(true); + case NOTIFICATION_PHYSICS_PROCESS: + physics_process(get_physics_process_delta_time()); + return; + } +} + +void ActorBody::set_movement_direction(Vector3 direction) { + this->mode = Direction; + this->movement_vector = Vector3(direction.x, 0.f, direction.z).normalized(); +} + +Vector3 ActorBody::get_movement_direction() const { + switch (this->mode) { + case Position: { + Vector3 const direction_3d{ get_global_position().direction_to(get_movement_target()) }; + return Vector3{ direction_3d.x, 0.f, direction_3d.z }; + } break; + case Direction: + return this->movement_vector; + } +} + +void ActorBody::set_movement_target(Vector3 location) { + this->mode = Position; + this->movement_vector = { location.x, 0.f, location.z }; +} + +Vector3 ActorBody::get_movement_target() const { + switch (this->mode) { + case Position: + return this->movement_vector; + case Direction: + return get_global_position() + this->movement_vector; + } +} + +void ActorBody::teleport(Vector3 target) { + this->teleport_target = target; + this->teleport_on_process = true; +} + +void ActorBody::set_movement_speed(float speed) { + this->movement_speed = speed; +} + +float ActorBody::get_movement_speed() const { + return this->movement_speed; +} + +ActorBody::MovementMode ActorBody::get_movement_mode() const { + return this->mode; +} diff --git a/modules/authority/actor_body.h b/modules/authority/actor_body.h new file mode 100644 index 00000000..fa7fbaac --- /dev/null +++ b/modules/authority/actor_body.h @@ -0,0 +1,37 @@ +#ifndef ACTOR_BODY_H +#define ACTOR_BODY_H + +#include "scene/3d/physics/character_body_3d.h" + +class ActorBody : public CharacterBody3D { + GDCLASS(ActorBody, CharacterBody3D); + static void _bind_methods(); + void physics_process(double delta); + +public: + // support both directional and positional movement modes + enum MovementMode { + Direction, + Position + }; + void _notification(int what); + + void set_movement_direction(Vector3 direction); + Vector3 get_movement_direction() const; + void set_movement_target(Vector3 location); + Vector3 get_movement_target() const; + void teleport(Vector3 target); + + void set_movement_speed(float speed); + float get_movement_speed() const; + MovementMode get_movement_mode() const; + +private: + float movement_speed{ 3.f }; + Vector3 movement_vector{ 0.f, 0.f, 0.f }; + MovementMode mode{ Direction }; + bool teleport_on_process{ false }; + Vector3 teleport_target{}; +}; + +#endif //! ACTOR_BODY_H diff --git a/modules/authority/character.cpp b/modules/authority/character.cpp deleted file mode 100644 index 96d58776..00000000 --- a/modules/authority/character.cpp +++ /dev/null @@ -1,155 +0,0 @@ -#include "character.h" -#include "core/config/engine.h" -#include "macros.h" - -void CharacterData::_bind_methods() { - BIND_PROPERTY(Variant::FLOAT, speed); -} - -void Character::_bind_methods() { - BIND_HPROPERTY(Variant::OBJECT, data, PROPERTY_HINT_RESOURCE_TYPE, "CharacterData"); -} - -void Character::physics_process(double delta) { - Vector3 const velocity{ get_velocity() }; - Vector3 new_velocity{ velocity }; - new_velocity.x = this->world_movement_direction.x; - new_velocity.z = this->world_movement_direction.y; - set_velocity(new_velocity); - if (!velocity.is_zero_approx()) { - move_and_slide(); - } -} - -void Character::_notification(int what) { - if (Engine::get_singleton()->is_editor_hint() || !this->data.is_valid()) { - return; - } - switch (what) { - default: - return; - case NOTIFICATION_READY: - set_physics_process(true); - return; - case NOTIFICATION_PHYSICS_PROCESS: - physics_process(get_physics_process_delta_time()); - return; - } -} - -PackedStringArray Character::get_configuration_warnings() const { - PackedStringArray warnings{ super_type::get_configuration_warnings() }; - if (this->data.is_null()) { - warnings.push_back("Character requires 'data' to be initialised. To avoid crashes consider adding a placeholder if you intend to programmatically initialise it."); - } - return warnings; -} - -void Character::set_movement(Vector2 movement) { - this->world_movement_direction = movement; -} - -bool Character::is_moving() const { - return !this->world_movement_direction.is_zero_approx(); -} - -void CharacterState::_bind_methods() { - BIND_PROPERTY(Variant::BOOL, start_active); -} - -void CharacterState::_notification(int what) { - if (Engine::get_singleton()->is_editor_hint()) { - return; - } - switch (what) { - default: - return; - case NOTIFICATION_ENTER_TREE: - this->character = cast_to(get_parent()); - ERR_FAIL_COND_EDMSG(this->character == nullptr, "CharacterState requires parent to be of type Character"); - return; - case NOTIFICATION_READY: - if (start_active) { - callable_mp(this, &self_type::set_state_active).call_deferred(true); - } - return; - } -} - -PackedStringArray CharacterState::get_configuration_warnings() const { - PackedStringArray warnings{ super_type::get_configuration_warnings() }; - if (cast_to(get_parent()) == nullptr) { - warnings.push_back("CharacterState requires direct Character parent"); - } - return warnings; -} - -void CharacterState::switch_to_state(String value) { - if (!this->state_active) { - print_error(vformat("Attempt to switch from inactive state %s to new state %s", get_path(), value)); - return; - } - set_state_active(false); - stack_state_independent(value); -} - -void CharacterState::stack_state_dependent(String value) { - if (!this->state_active) { - print_error(vformat("Attempt to stack dependent state %s from inactive state %s", value, get_path())); - return; - } - Node *node{ get_parent()->get_node(value) }; - if (CharacterState * state{ cast_to(node) }) { - state->depending_state = this; - this->dependent_states.insert(state); - state->set_state_active(true); - } -} - -void CharacterState::notify_dependent_inactive(CharacterState *state) { - if (!this->state_active) { - print_error(vformat("Received notification that dependent state %s became inactive, while depending state %s was inactive", state->get_path(), get_path())); - return; - } - this->dependent_states.erase(state); -} - -void CharacterState::stack_state_independent(String value) { - if (!this->state_active) { - print_error(vformat("Attempt to stack state %s from inactive state %s", value, get_path())); - return; - } - Node *node{ get_parent()->get_node(value) }; - if (CharacterState * state{ cast_to(node) }) { - state->set_state_active(true); - } else { - print_error(vformat("Attempt to stack nonexistent state %s from %s", value, get_path())); - } -} - -void CharacterState::set_state_active(bool active) { - if (this->state_active != active) { - this->state_active = active; - if (active) { - state_entered(); - } else { - state_exited(); - if (this->depending_state && this->depending_state->state_active) { - this->depending_state->notify_dependent_inactive(this); - } - this->depending_state = nullptr; - for (CharacterState *state : this->dependent_states) { - state->set_state_active(false); - } - this->dependent_states.clear(); - } - } -} - -bool CharacterState::get_state_active() const { - return this->state_active; -} - -Character *CharacterState::get_character() const { - return this->character; -} diff --git a/modules/authority/character.h b/modules/authority/character.h deleted file mode 100644 index 5112665e..00000000 --- a/modules/authority/character.h +++ /dev/null @@ -1,69 +0,0 @@ -#pragma once - -#include "core/io/resource.h" -#include "core/templates/hash_set.h" -#include "macros.h" -#include "scene/3d/physics/character_body_3d.h" - -class CharacterData : public Resource { - GDCLASS(CharacterData, Resource); - static void _bind_methods(); - -private: - float speed{}; - -public: - GET_SET_FNS(float, speed); -}; - -class Character : public CharacterBody3D { - GDCLASS(Character, CharacterBody3D); - -protected: - static void _bind_methods(); - void physics_process(double delta); - void _notification(int what); - PackedStringArray get_configuration_warnings() const override; - -public: - void set_movement(Vector2 movement); - bool is_moving() const; - -private: - Ref data{}; - Vector2 world_movement_direction{}; - -public: - GET_SET_FNS(Ref, data); -}; - -class CharacterState : public Node { - GDCLASS(CharacterState, Node); - static void _bind_methods(); - -protected: - void _notification(int what); - PackedStringArray get_configuration_warnings() const override; - void switch_to_state(String state); - void stack_state_dependent(String state); - void notify_dependent_inactive(CharacterState *dependent); - void stack_state_independent(String state); - virtual void state_entered() {} - virtual void state_exited() {} - -public: - void set_state_active(bool active); - bool get_state_active() const; - Character *get_character() const; - -private: - bool start_active{ false }; - bool state_active{ false }; - - Character *character{ nullptr }; - HashSet dependent_states{}; - CharacterState *depending_state{ nullptr }; - -public: - GET_SET_FNS(bool, start_active); -}; diff --git a/modules/authority/game_state.cpp b/modules/authority/game_state.cpp new file mode 100644 index 00000000..d10da4fd --- /dev/null +++ b/modules/authority/game_state.cpp @@ -0,0 +1,18 @@ +#include "game_state.h" +#include "macros.h" + +GameState *GameState::singleton_instance{ nullptr }; + +void GameState::_bind_methods() {} + +GameState::GameState() { + self_type::singleton_instance = this; +} + +GameState::~GameState() { + self_type::singleton_instance = nullptr; +} + +GameState *GameState::get_singleton() { + return self_type::singleton_instance; +} diff --git a/modules/authority/game_state.h b/modules/authority/game_state.h new file mode 100644 index 00000000..0170bd94 --- /dev/null +++ b/modules/authority/game_state.h @@ -0,0 +1,19 @@ +#ifndef GAME_STATE_H +#define GAME_STATE_H + +#include "core/object/class_db.h" +#include "core/object/object.h" +#include "core/templates/vector.h" + +class GameState : public Object { + GDCLASS(GameState, Object); + static void _bind_methods(); + static GameState *singleton_instance; + +public: + GameState(); + virtual ~GameState(); + static GameState *get_singleton(); +}; + +#endif // !GAME_STATE_H diff --git a/modules/macros.h b/modules/authority/macros.h similarity index 51% rename from modules/macros.h rename to modules/authority/macros.h index c139f1f0..53be3185 100644 --- a/modules/macros.h +++ b/modules/authority/macros.h @@ -17,29 +17,4 @@ ADD_PROPERTY(PropertyInfo(m_type, #m_property), "set_" #m_property, \ "get_" #m_property) -#define GET_SET_FNS(m_type, m_property) \ - m_type get_##m_property() const { \ - return this->m_property; \ - } \ - void set_##m_property(m_type value) { \ - this->m_property = value; \ - } - -#define GET_SET_FNS_EX(m_type, m_property, m_ex) \ - m_type get_##m_property() const { \ - return this->m_property; \ - } \ - void set_##m_property(m_type value) { \ - m_ex; \ - this->m_property = value; \ - } - -#define __VA_ARGS__STRING(...) String(#__VA_ARGS__) - -#define GDENUM(M_Name, ...) \ - enum M_Name { __VA_ARGS__ }; \ - static String M_Name##_hint() { \ - return __VA_ARGS__STRING(__VA_ARGS__); \ - } - #endif // !GODOT_EXTRA_MACROS_H diff --git a/modules/authority/nav_marker.cpp b/modules/authority/nav_marker.cpp deleted file mode 100644 index 12690b04..00000000 --- a/modules/authority/nav_marker.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "nav_marker.h" - -void NavMarker::_bind_methods() {} - -void NavMarker::_notification(int what) { - switch (what) { - default: - return; - case NOTIFICATION_ENTER_TREE: - this->set_gizmo_extents(3); - return; - } -} diff --git a/modules/authority/nav_marker.h b/modules/authority/nav_marker.h deleted file mode 100644 index f8b26120..00000000 --- a/modules/authority/nav_marker.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include "macros.h" -#include "scene/3d/marker_3d.h" -class Character; - -class NavMarker : public Marker3D { - GDCLASS(NavMarker, Marker3D); - static void _bind_methods(); - -protected: - void _notification(int what); - -private: - Character *claimed{ nullptr }; - -public: - GET_SET_FNS(Character *, claimed); -}; diff --git a/modules/authority/party_member_states.cpp b/modules/authority/party_member_states.cpp deleted file mode 100644 index 99774610..00000000 --- a/modules/authority/party_member_states.cpp +++ /dev/null @@ -1,84 +0,0 @@ -#include "party_member_states.h" -#include "authority/nav_marker.h" -#include "authority/player_character.h" -#include "core/config/engine.h" -#include "core/error/error_macros.h" -#include "core/templates/vector.h" - -void PartyMemberFollow::_bind_methods() {} - -void PartyMemberFollow::process_position_target() { - Vector3 const marker_position{ this->claimed_marker->get_global_position() }; - Vector3 const nav_target{ this->nav->get_target_position() }; - Vector3 const global_position{ get_character()->get_global_position() }; - if (global_position.distance_squared_to(marker_position) < 0.5) { - return; - } - if (nav_target.distance_squared_to(marker_position) > 0.25) { - this->nav->set_target_position(marker_position); - } - if (this->nav->is_navigation_finished()) { - return; - } - Vector3 velocity{ global_position.direction_to(this->nav->get_next_path_position()) }; - velocity.y = 0; - if (this->nav->get_avoidance_enabled()) { - this->nav->set_velocity(velocity * get_character()->get_data()->get_speed()); - } else { - push_movement_direction(velocity * get_character()->get_data()->get_speed()); - } -} - -void PartyMemberFollow::push_movement_direction(Vector3 velocity) { - get_character()->set_movement(Vector2{ velocity.x, velocity.z }); -} - -void PartyMemberFollow::_notification(int what) { - if (Engine::get_singleton()->is_editor_hint()) { - return; - } - switch (what) { - default: - return; - case NOTIFICATION_READY: - this->nav = cast_to(get_parent()->get_node(NodePath("%NavigationAgent3D"))); - ERR_FAIL_COND_EDMSG(this->nav == nullptr, "PartyMemberFollow cannot initialise without a navigation agent"); - return; - case NOTIFICATION_PROCESS: - process_position_target(); - return; - } -} - -PackedStringArray PartyMemberFollow::get_configuration_warnings() const { - PackedStringArray warnings{ super_type::get_configuration_warnings() }; - if (!get_parent()->has_node(NodePath("%NavigationAgent3D")) || !cast_to(get_parent()->get_node(NodePath("%NavigationAgent3D")))) { - warnings.push_back("PartyMemberFollow expects a scene sibling of type NavigationAgent3D named with unique name '%NavigationAgent3D'"); - } - return warnings; -} - -void PartyMemberFollow::state_entered() { - Vector const &markers{ PlayerCharacter::get_singleton()->get_party_follow_markers() }; - for (NavMarker *marker : markers) { - if (marker->get_claimed() == nullptr) { - marker->set_claimed(get_character()); - this->claimed_marker = marker; - if (this->nav->get_avoidance_enabled()) { - this->nav->connect("velocity_computed", callable_mp(this, &self_type::push_movement_direction)); - } - set_process(true); - return; - } - } - ERR_FAIL_EDMSG("PartyMemberFollow could not find an unclaimed player follow marker"); - set_state_active(false); -} - -void PartyMemberFollow::state_exited() { - if (this->claimed_marker) { - this->claimed_marker->set_claimed(nullptr); - this->nav->disconnect("velocity_computed", callable_mp(this, &self_type::push_movement_direction)); - set_process(false); - } -} diff --git a/modules/authority/party_member_states.h b/modules/authority/party_member_states.h deleted file mode 100644 index 85faa988..00000000 --- a/modules/authority/party_member_states.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include "authority/character.h" -#include "authority/nav_marker.h" -#include "scene/3d/navigation/navigation_agent_3d.h" - -class PartyMemberFollow : public CharacterState { - GDCLASS(PartyMemberFollow, CharacterState); - static void _bind_methods(); - void process_position_target(); - void push_movement_direction(Vector3 velocity); - -protected: - void _notification(int what); - PackedStringArray get_configuration_warnings() const override; - void state_entered() override; - void state_exited() override; - -private: - NavigationAgent3D *nav{ nullptr }; - NavMarker *claimed_marker{ nullptr }; -}; diff --git a/modules/authority/player_actor.cpp b/modules/authority/player_actor.cpp new file mode 100644 index 00000000..0401ec04 --- /dev/null +++ b/modules/authority/player_actor.cpp @@ -0,0 +1,42 @@ +#include "player_actor.h" +#include "authority/game_state.h" +#include "authority/player_input.h" +#include "scene/main/viewport.h" + +void PlayerActor::_bind_methods() { +} + +void PlayerActor::ready() { + PlayerInput *input{ cast_to(get_node(NodePath("%PlayerInput"))) }; + input->connect(PlayerInput::signal_movement, callable_mp(this, &self_type::input_move)); + set_process(true); +} + +void PlayerActor::process(double delta) { + Basis const basis{ this->get_viewport()->get_camera_3d()->get_global_basis() }; + Vector3 x{ basis.get_column(0) }; + x = Vector3{ x.x, 0.f, x.z }.normalized(); + Vector3 z{ basis.get_column(2) }; + z = Vector3{ z.x, 0.f, z.z }.normalized(); + set_movement_direction(x * this->move_input.x + z * this->move_input.y); +} + +void PlayerActor::input_move(Vector2 movement) { + this->move_input = movement; +} + +void PlayerActor::_notification(int what) { + if (Engine::get_singleton()->is_editor_hint()) { + return; + } + switch (what) { + default: + return; + case NOTIFICATION_READY: + ready(); + return; + case NOTIFICATION_PROCESS: + process(get_process_delta_time()); + return; + } +} diff --git a/modules/authority/player_actor.h b/modules/authority/player_actor.h new file mode 100644 index 00000000..6cdcdc59 --- /dev/null +++ b/modules/authority/player_actor.h @@ -0,0 +1,20 @@ +#ifndef PLAYER_ACTOR_H +#define PLAYER_ACTOR_H + +#include "actor_body.h" + +class PlayerActor : public ActorBody { + GDCLASS(PlayerActor, ActorBody); + static void _bind_methods(); + void ready(); + void process(double delta); + void input_move(Vector2 movement); + +public: + void _notification(int what); + +private: + Vector2 move_input{ 0.f, 0.f }; +}; + +#endif // !PLAYER_ACTOR_H diff --git a/modules/authority/player_camera.h b/modules/authority/player_camera.h deleted file mode 100644 index a16c13a6..00000000 --- a/modules/authority/player_camera.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -#include "scene/3d/camera_3d.h" - -class PlayerCamera : public Camera3D { - GDCLASS(PlayerCamera, Camera3D); - static void _bind_methods(); -}; diff --git a/modules/authority/player_character.cpp b/modules/authority/player_character.cpp deleted file mode 100644 index 34610c5d..00000000 --- a/modules/authority/player_character.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "player_character.h" -#include "authority/nav_marker.h" - -void PlayerCharacter::_bind_methods() {} - -void PlayerCharacter::_notification(int what) { - if (Engine::get_singleton()->is_editor_hint()) { - return; - } - switch (what) { - default: - return; - case NOTIFICATION_ENTER_TREE: - instance = this; - return; - case NOTIFICATION_READY: - for (Variant var : find_children("*", "NavMarker")) { - if (NavMarker * marker{ cast_to(var) }) { - this->party_follow_markers.push_back(marker); - } - } - ERR_FAIL_COND_EDMSG(this->party_follow_markers.size() < 4, "PlayerCharacter should have at least 4 follow NavMarkers for party members"); - return; - case NOTIFICATION_EXIT_TREE: - if (instance == this) { - instance = nullptr; - } - return; - } -} - -PlayerCharacter *PlayerCharacter::instance{ nullptr }; - -PlayerCharacter *PlayerCharacter::get_singleton() { - return instance; -} diff --git a/modules/authority/player_character.h b/modules/authority/player_character.h deleted file mode 100644 index 4b74dc4a..00000000 --- a/modules/authority/player_character.h +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include "authority/character.h" -#include "authority/nav_marker.h" -#include "macros.h" - -class PlayerCharacter : public Character { - GDCLASS(PlayerCharacter, Character); - static void _bind_methods(); - -protected: - void _notification(int what); - -private: - Vector party_follow_markers{}; - static PlayerCharacter *instance; - -public: - static PlayerCharacter *get_singleton(); - GET_SET_FNS(Vector const &, party_follow_markers); -}; diff --git a/modules/authority/player_input.cpp b/modules/authority/player_input.cpp new file mode 100644 index 00000000..bfd00590 --- /dev/null +++ b/modules/authority/player_input.cpp @@ -0,0 +1,146 @@ +#include "player_input.h" + +#include "core/input/input_event.h" +#include "macros.h" + +String const PlayerInput::signal_movement{ "movement" }; +String const PlayerInput::signal_look{ "look" }; +String const PlayerInput::signal_mouselook{ "mouselook" }; + +void PlayerInput::_bind_methods() { + BIND_PROPERTY(Variant::STRING, action_move_left); + BIND_PROPERTY(Variant::STRING, action_move_right); + BIND_PROPERTY(Variant::STRING, action_move_forward); + BIND_PROPERTY(Variant::STRING, action_move_back); + BIND_PROPERTY(Variant::STRING, action_look_left); + BIND_PROPERTY(Variant::STRING, action_look_right); + BIND_PROPERTY(Variant::STRING, action_look_up); + BIND_PROPERTY(Variant::STRING, action_look_down); + ADD_SIGNAL(MethodInfo(self_type::signal_movement, PropertyInfo(Variant::VECTOR2, "movement_directions"))); + ADD_SIGNAL(MethodInfo(self_type::signal_look, PropertyInfo(Variant::VECTOR2, "look_delta"))); + ADD_SIGNAL(MethodInfo(self_type::signal_mouselook, PropertyInfo(Variant::VECTOR2, "mouse_delta"))); +} + +void PlayerInput::_notification(int what) { + if (Engine::get_singleton()->is_editor_hint()) { + return; + } + switch (what) { + default: + return; + case NOTIFICATION_READY: + set_process_unhandled_input(true); + Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_CAPTURED); + return; + } +} + +void PlayerInput::unhandled_input(Ref const &event) { + Input *input{ Input::get_singleton() }; + + bool is_movement_action{ event->is_action(self_type::action_move_left) }; + is_movement_action |= event->is_action(self_type::action_move_right); + is_movement_action |= event->is_action(self_type::action_move_forward); + is_movement_action |= event->is_action(self_type::action_move_back); + if (is_movement_action) { + float const h_axis{ input->get_axis(self_type::action_move_left, self_type::action_move_right) }; + float const v_axis{ input->get_axis(self_type::action_move_forward, self_type::action_move_back) }; + emit_signal(self_type::signal_movement, Vector2{ h_axis, v_axis }); + } + + bool is_look_action{ event->is_action(self_type::action_look_left) }; + is_look_action |= event->is_action(self_type::action_look_right); + is_look_action |= event->is_action(self_type::action_look_up); + is_look_action |= event->is_action(self_type::action_look_down); + if (is_look_action) { + float const h_axis{ input->get_axis(self_type::action_look_right, self_type::action_look_left) }; + float const v_axis{ input->get_axis(self_type::action_look_down, self_type::action_look_up) }; + emit_signal(self_type::signal_look, Vector2{ h_axis, v_axis } * this->look_speed); + } + + Ref mouse_motion_action{ event }; + if (mouse_motion_action.is_valid()) { + Vector2 const velocity{ mouse_motion_action->get_relative() }; + emit_signal(self_type::signal_mouselook, velocity * this->mouselook_speed); + } +} + +void PlayerInput::set_mouselook_speed(Vector2 speed) { + this->mouselook_speed = speed; +} + +Vector2 PlayerInput::get_mouselook_speed() const { + return this->mouselook_speed; +} + +void PlayerInput::set_look_speed(Vector2 speed) { + this->look_speed = speed; +} + +Vector2 PlayerInput::get_look_speed() const { + return this->look_speed; +} + +void PlayerInput::set_action_move_left(String action) { + this->action_move_left = action; +} + +String PlayerInput::get_action_move_left() const { + return this->action_move_left; +} + +void PlayerInput::set_action_move_right(String action) { + this->action_move_right = action; +} + +String PlayerInput::get_action_move_right() const { + return this->action_move_right; +} + +void PlayerInput::set_action_move_forward(String action) { + this->action_move_forward = action; +} + +String PlayerInput::get_action_move_forward() const { + return this->action_move_forward; +} + +void PlayerInput::set_action_move_back(String action) { + this->action_move_back = action; +} + +String PlayerInput::get_action_move_back() const { + return this->action_move_back; +} + +void PlayerInput::set_action_look_left(String action) { + this->action_look_left = action; +} + +String PlayerInput::get_action_look_left() const { + return this->action_look_left; +} + +void PlayerInput::set_action_look_right(String action) { + this->action_look_right = action; +} + +String PlayerInput::get_action_look_right() const { + return this->action_look_right; +} + +void PlayerInput::set_action_look_up(String action) { + this->action_look_up = action; +} + +String PlayerInput::get_action_look_up() const { + return this->action_look_up; +} + +void PlayerInput::set_action_look_down(String action) { + this->action_look_down = action; +} + +String PlayerInput::get_action_look_down() const { + return this->action_look_down; +} diff --git a/modules/authority/player_input.h b/modules/authority/player_input.h new file mode 100644 index 00000000..977dc2a1 --- /dev/null +++ b/modules/authority/player_input.h @@ -0,0 +1,58 @@ +#ifndef PLAYER_INPUT_H +#define PLAYER_INPUT_H + +#include "core/input/input_event.h" +#include "scene/main/node.h" + +class PlayerInput : public Node { + GDCLASS(PlayerInput, Node); + static void _bind_methods(); + +public: + void _notification(int what); + virtual void unhandled_input(Ref const &event) override; + + void set_mouselook_speed(Vector2 speed); + Vector2 get_mouselook_speed() const; + void set_look_speed(Vector2 speed); + Vector2 get_look_speed() const; + + void set_action_move_left(String action); + String get_action_move_left() const; + void set_action_move_right(String action); + String get_action_move_right() const; + void set_action_move_forward(String action); + String get_action_move_forward() const; + void set_action_move_back(String action); + String get_action_move_back() const; + + void set_action_look_left(String action); + String get_action_look_left() const; + void set_action_look_right(String action); + String get_action_look_right() const; + void set_action_look_up(String action); + String get_action_look_up() const; + void set_action_look_down(String action); + String get_action_look_down() const; + +public: + static String const signal_movement; + static String const signal_look; + static String const signal_mouselook; + +private: + Vector2 mouselook_speed{ 0.001f, 0.001f }; + Vector2 look_speed{ 1.75f, 1.75f }; + + String action_move_left{ "move_left" }; + String action_move_right{ "move_right" }; + String action_move_forward{ "move_forward" }; + String action_move_back{ "move_back" }; + + String action_look_left{ "look_left" }; + String action_look_right{ "look_right" }; + String action_look_up{ "look_up" }; + String action_look_down{ "look_down" }; +}; + +#endif // !PLAYER_INPUT_H diff --git a/modules/authority/player_states.cpp b/modules/authority/player_states.cpp deleted file mode 100644 index 393730d8..00000000 --- a/modules/authority/player_states.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include "player_states.h" -#include "core/input/input.h" -#include "core/math/basis.h" -#include "scene/3d/camera_3d.h" -#include "scene/main/viewport.h" - -void PlayerInputState::_bind_methods() {} - -void PlayerInputState::unhandled_input(Ref const &what) { - bool const is_move_vertical{ what->is_action("move_forward") || what->is_action("move_backward") }; - bool const is_move_horizontal{ what->is_action("move_right") || what->is_action("move_left") }; - if (is_move_vertical || is_move_horizontal) { - stack_state_dependent("PlayerMovementState"); - get_viewport()->set_input_as_handled(); - } -} - -void PlayerInputState::state_entered() { - set_process_unhandled_input(true); -} - -void PlayerInputState::state_exited() { - set_process_unhandled_input(false); -} - -void PlayerMovementState::_bind_methods() {} - -void PlayerMovementState::process(double delta) { - Basis const basis{ get_viewport()->get_camera_3d()->get_global_basis() }; - Vector2 backward{ basis.get_column(0).x, basis.get_column(0).z }; - if (backward.is_zero_approx()) { - backward = Vector2{ basis.get_column(1).x, basis.get_column(1).z }; - } - Vector2 const right{ basis.get_column(2).x, basis.get_column(2).z }; - get_character()->set_movement((backward.normalized() * this->movement.x + right.normalized() * this->movement.y) * get_character()->get_data()->get_speed()); -} - -void PlayerMovementState::_notification(int what) { - if (Engine::get_singleton()->is_editor_hint()) { - return; - } - switch (what) { - default: - return; - case NOTIFICATION_READY: - set_process_input(true); - return; - case NOTIFICATION_PROCESS: - process(get_process_delta_time()); - return; - } -} - -void PlayerMovementState::input(Ref const &what) { - bool const is_move_vertical{ what->is_action("move_forward") || what->is_action("move_backward") }; - bool const is_move_horizontal{ what->is_action("move_right") || what->is_action("move_left") }; - if (is_move_vertical || is_move_horizontal) { - this->movement = { - Input::get_singleton()->get_axis("move_left", "move_right"), - Input::get_singleton()->get_axis("move_forward", "move_backward") - }; - this->movement.normalize(); - } - if (this->get_state_active() && this->movement.is_zero_approx()) { - set_state_active(false); - } -} - -void PlayerMovementState::state_entered() { - set_process(true); -} - -void PlayerMovementState::state_exited() { - set_process(false); -} diff --git a/modules/authority/player_states.h b/modules/authority/player_states.h deleted file mode 100644 index 733725be..00000000 --- a/modules/authority/player_states.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include "authority/character.h" - -class PlayerInputState : public CharacterState { - GDCLASS(PlayerInputState, CharacterState); - static void _bind_methods(); - -protected: - void unhandled_input(Ref const &event) override; - void state_entered() override; - void state_exited() override; -}; - -class PlayerMovementState : public CharacterState { - GDCLASS(PlayerMovementState, CharacterState); - static void _bind_methods(); - void ready(); - void process(double delta); - -protected: - void _notification(int what); - void input(Ref const &event) override; - void state_entered() override; - void state_exited() override; - -private: - Vector2 movement{}; -}; diff --git a/modules/authority/register_types.cpp b/modules/authority/register_types.cpp index d2ad6d36..8d674102 100644 --- a/modules/authority/register_types.cpp +++ b/modules/authority/register_types.cpp @@ -1,28 +1,34 @@ #include "register_types.h" -#include "authority/character.h" -#include "authority/nav_marker.h" -#include "authority/party_member_states.h" -#include "authority/player_character.h" -#include "authority/player_states.h" +#include "authority/actor_body.h" +#include "authority/game_state.h" +#include "authority/player_actor.h" +#include "authority/player_input.h" +#include "authority/third_person_camera.h" +#include "core/config/engine.h" #include "core/object/class_db.h" +GameState *game_state{ nullptr }; + void initialize_authority_module(ModuleInitializationLevel p_level) { if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) { return; } - ClassDB::register_class(); - ClassDB::register_class(); - ClassDB::register_class(); - ClassDB::register_class(); - ClassDB::register_class(); - ClassDB::register_class(); - ClassDB::register_class(); - ClassDB::register_class(); + GDREGISTER_CLASS(GameState); + GDREGISTER_CLASS(ActorBody); + GDREGISTER_CLASS(PlayerActor); + GDREGISTER_CLASS(PlayerInput); + GDREGISTER_CLASS(ThirdPersonCamera); + + game_state = memnew(GameState); + Engine::get_singleton()->add_singleton(Engine::Singleton("GameState", GameState::get_singleton())); } void uninitialize_authority_module(ModuleInitializationLevel p_level) { if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) { return; } + if (game_state) { + memdelete(game_state); + } } diff --git a/modules/authority/third_person_camera.cpp b/modules/authority/third_person_camera.cpp new file mode 100644 index 00000000..04077cc6 --- /dev/null +++ b/modules/authority/third_person_camera.cpp @@ -0,0 +1,54 @@ +#include "third_person_camera.h" +#include "player_input.h" + +void ThirdPersonCamera::_bind_methods() { +} + +void ThirdPersonCamera::ready() { + set_process(true); + if (PlayerInput * player_input{ cast_to(get_node(NodePath("%PlayerInput"))) }) { + player_input->connect(PlayerInput::signal_look, callable_mp(this, &self_type::on_look_input)); + player_input->connect(PlayerInput::signal_mouselook, callable_mp(this, &self_type::on_mouselook_input)); + } +} + +void ThirdPersonCamera::process(double delta) { + this->look_rotation += look_rotation_motion * delta; + this->look_rotation.y = CLAMP(this->look_rotation.y, -Math_PI / 2.5, Math_PI / 2.5); + Vector3 pivot{ get_parent_node_3d()->get_global_position() }; + pivot.y += this->height; + Vector3 offset{ 0.f, 0.f, this->distance }; + offset.rotate({ 1.f, 0.f, 0.f }, this->look_rotation.y); + offset.rotate({ 0.f, 1.f, 0.f }, this->look_rotation.x); + look_at_from_position(pivot + offset, pivot); +} + +void ThirdPersonCamera::on_look_input(Vector2 input) { + this->look_rotation_motion = input; +} + +void ThirdPersonCamera::on_mouselook_input(Vector2 input) { + this->look_rotation -= input; +} + +void ThirdPersonCamera::_notification(int what) { + if (Engine::get_singleton()->is_editor_hint()) { + return; + } + switch (what) { + case NOTIFICATION_READY: + ready(); + break; + case NOTIFICATION_PROCESS: + process(get_process_delta_time()); + break; + } +} + +void ThirdPersonCamera::set_base_rotation_speed(Vector2 value) { + this->base_rotation_speed = value; +} + +Vector2 ThirdPersonCamera::get_base_rotation_speed() const { + return this->base_rotation_speed; +} diff --git a/modules/authority/third_person_camera.h b/modules/authority/third_person_camera.h new file mode 100644 index 00000000..9ec2935d --- /dev/null +++ b/modules/authority/third_person_camera.h @@ -0,0 +1,29 @@ +#ifndef THIRD_PERSON_CAMERA_H +#define THIRD_PERSON_CAMERA_H + +#include "scene/3d/camera_3d.h" + +class ThirdPersonCamera : public Camera3D { + GDCLASS(ThirdPersonCamera, Camera3D); + static void _bind_methods(); + void ready(); + void process(double delta); + void on_look_input(Vector2 input); + void on_mouselook_input(Vector2 input); + +public: + void _notification(int what); + + void set_base_rotation_speed(Vector2 value); + Vector2 get_base_rotation_speed() const; + +private: + Vector2 look_rotation_motion{ 0.f, 0.f }; + Vector2 look_rotation{ 0.f, 0.f }; + + Vector2 base_rotation_speed{ 0.1f, 0.1f }; + float distance{ 3.f }; + float height{ 2.2f }; +}; + +#endif // !THIRD_PERSON_CAMERA_H diff --git a/modules/terrain/SCsub b/modules/terrain/SCsub deleted file mode 100644 index 2760ab7d..00000000 --- a/modules/terrain/SCsub +++ /dev/null @@ -1,3 +0,0 @@ -Import('env') - -env.add_source_files(env.modules_sources, "*.cpp") diff --git a/modules/terrain/config.py b/modules/terrain/config.py deleted file mode 100644 index 58c88bf1..00000000 --- a/modules/terrain/config.py +++ /dev/null @@ -1,5 +0,0 @@ -def can_build(env, platform): - return True; - -def configure(env): - pass; diff --git a/modules/terrain/register_types.cpp b/modules/terrain/register_types.cpp deleted file mode 100644 index deaa9de4..00000000 --- a/modules/terrain/register_types.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "register_types.h" - -#include "core/object/class_db.h" -#include "terrain/terrain.h" -#include "terrain/terrain_chunk.h" -#include "terrain/terrain_modifier.h" - -void initialize_terrain_module(ModuleInitializationLevel p_level) { - if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) { - return; - } - ClassDB::register_class(); - ClassDB::register_abstract_class(); - ClassDB::register_class(); - ClassDB::register_class(); - ClassDB::register_class(); - ClassDB::register_class(); -} - -void uninitialize_terrain_module(ModuleInitializationLevel p_level) { - if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) { - return; - } -} diff --git a/modules/terrain/register_types.h b/modules/terrain/register_types.h deleted file mode 100644 index 85003560..00000000 --- a/modules/terrain/register_types.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef TERRAIN_REGISTER_TYPES_H -#define TERRAIN_REGISTER_TYPES_H - -#include "modules/register_module_types.h" - -void initialize_terrain_module(ModuleInitializationLevel p_level); -void uninitialize_terrain_module(ModuleInitializationLevel p_level); - -#endif // !TERRAIN_REGISTER_TYPES_H diff --git a/modules/terrain/terrain.cpp b/modules/terrain/terrain.cpp deleted file mode 100644 index f8d4eada..00000000 --- a/modules/terrain/terrain.cpp +++ /dev/null @@ -1,244 +0,0 @@ -#include "terrain.h" -#include "terrain/terrain_chunk.h" -#include "terrain/terrain_modifier.h" - -void Terrain::_bind_methods() { - BIND_HPROPERTY(Variant::OBJECT, mesh_material, PROPERTY_HINT_RESOURCE_TYPE, "Material"); - BIND_PROPERTY(Variant::INT, side_length); - BIND_PROPERTY(Variant::INT, chunk_size); - BIND_PROPERTY(Variant::INT, detail); - BIND_PROPERTY(Variant::INT, thread_count); -} - -void Terrain::child_order_changed() { - this->modifiers.clear(); - for (Variant var : get_children()) { - if (TerrainModifier * mod{ cast_to(var) }) { - mod->set_terrain(this); - this->modifiers.push_back(mod); - } - } -} - -void Terrain::update_meshes() { - size_t num{ 1 }; - this->dirty_meshes_lock.lock(); - num = num > this->dirty_meshes.size() ? this->dirty_meshes.size() : num; - this->dirty_meshes_lock.unlock(); - for (size_t i{ 0 }; i < num; i++) { - this->dirty_meshes_lock.lock(); - TerrainChunkMesh *mesh{ this->dirty_meshes[0] }; - this->dirty_meshes.remove_at(0); - this->dirty_meshes_lock.unlock(); - mesh->apply_new_mesh(); - } -} - -void Terrain::update_threads() { - this->workload_lock.lock(); - if (this->workload.is_empty()) { - this->threads_stop = true; - this->workload_lock.unlock(); - for (Thread &thread : this->threads) { - if (thread.is_started()) { - thread.wait_to_finish(); - } - } - } else { - this->threads_stop = false; - for (Thread &thread : this->threads) { - if (!thread.is_started()) { - thread.start(Terrain::generate_meshes_thread, this); - } - } - this->workload_lock.unlock(); - } -} - -void Terrain::_notification(int what) { - switch (what) { - default: - return; - case NOTIFICATION_ENTER_TREE: - if (!is_ready()) { - connect("child_order_changed", callable_mp(this, &self_type::child_order_changed)); - } - return; - case NOTIFICATION_READY: - construct_chunk_grid(); - return; - case NOTIFICATION_PROCESS: - update_meshes(); - update_threads(); - return; - case NOTIFICATION_EXIT_TREE: - this->workload_lock.lock(); - this->threads_stop = true; - this->workload_lock.unlock(); - for (Thread &thread : this->threads) { - if (thread.is_started()) { - thread.wait_to_finish(); - } - } - return; - } -} - -void Terrain::generate_meshes_thread(void *terrain) { - Terrain *self{ static_cast(terrain) }; - print_line("thread", Thread::get_caller_id(), "start"); - for (;;) { - self->workload_lock.lock(); - if (self->threads_stop) { - self->workload_lock.unlock(); - print_line(Thread::get_caller_id(), "exiting"); - break; - } - if (self->workload.is_empty()) { - self->workload_lock.unlock(); - Thread::yield(); - continue; - } - TerrainChunkMesh *mesh{ self->workload[0] }; - self->workload.remove_at(0); - self->workload_lock.unlock(); - if (!mesh->is_inside_tree()) { - print_line(Thread::get_caller_id(), "mesh is outside tree, exiting"); - break; - } - mesh->update_mesh(); - Thread::yield(); - } - print_line(Thread::get_caller_id(), "done"); - return; -} - -void Terrain::construct_chunk_grid() { - this->workload_lock.lock(); - this->threads_stop = true; - this->workload_lock.unlock(); - for (Thread &thread : this->threads) { - if (thread.is_started()) { - thread.wait_to_finish(); - } - } - this->workload_lock.lock(); - for (TerrainChunkMesh *mesh : this->meshes) { - remove_child(mesh); - mesh->queue_free(); - } - size_t const chunks_per_side{ this->side_length / this->chunk_size }; - Vector3 const origin{ (float)this->chunk_size / 2.f, 0.f, (float)this->chunk_size / 2.f }; - this->meshes.clear(); - this->workload.clear(); - for (size_t y{ 0 }; y < chunks_per_side; ++y) { - for (size_t x{ 0 }; x < chunks_per_side; ++x) { - TerrainChunkMesh *chunk{ memnew(TerrainChunkMesh) }; - chunk->set_size(this->chunk_size); - chunk->set_detail(this->detail); - chunk->set_terrain(this); - chunk->set_material_override(this->mesh_material); - chunk->set_position(origin + Vector3{ (float)this->chunk_size * (float)x, 0.f, (float)this->chunk_size * (float)y }); - add_child(chunk); - chunk->set_owner(this); - this->meshes.push_back(chunk); - this->workload.push_back(chunk); - } - } - this->threads_stop = false; - this->dirty_meshes.clear(); - this->workload_lock.unlock(); - for (Thread &thread : this->threads) { - thread.start(&self_type::generate_meshes_thread, this); - } -} - -float Terrain::height_at(Vector2 world_coordinate) { - float height{ 0 }; - for (TerrainModifier *mod : this->modifiers) { - if (!mod->is_inside_tree()) { - return height; - } - height = mod->evaluate_at(world_coordinate, height); - } - return height; -} - -void Terrain::push_changed(Rect2 area) { - for (TerrainChunkMesh *mesh : this->meshes) { - this->workload_lock.lock(); - if (area.intersects(mesh->get_bounds()) && !this->workload.has(mesh)) { - workload.push_back(mesh); - } - this->workload_lock.unlock(); - } -} - -void Terrain::mesh_dirty(TerrainChunkMesh *mesh) { - this->dirty_meshes_lock.lock(); - this->dirty_meshes.push_back(mesh); - callable_mp(cast_to(this), &self_type::set_process).call_deferred(true); - this->dirty_meshes_lock.unlock(); -} - -void Terrain::set_mesh_material(Ref material) { - this->mesh_material = material; - for (TerrainChunkMesh *mesh : this->meshes) { - mesh->set_material_override(material); - } -} - -Ref Terrain::get_mesh_material() const { - return this->mesh_material; -} - -void Terrain::set_side_length(size_t length) { - this->side_length = length; - if (is_inside_tree()) { - construct_chunk_grid(); - } -} - -size_t Terrain::get_side_length() const { - return this->side_length; -} - -void Terrain::set_chunk_size(size_t size) { - this->chunk_size = size; - if (is_inside_tree()) { - construct_chunk_grid(); - } -} - -size_t Terrain::get_chunk_size() const { - return this->chunk_size; -} - -void Terrain::set_detail(size_t detail) { - this->detail = detail; - if (is_inside_tree()) { - construct_chunk_grid(); - } -} - -size_t Terrain::get_detail() const { - return this->detail; -} - -void Terrain::set_thread_count(size_t num) { - this->workload_lock.lock(); - this->threads_stop = true; - this->workload_lock.unlock(); - for (Thread &thread : this->threads) { - thread.wait_to_finish(); - } - this->threads_stop = false; - this->threads.resize_initialized(num); - for (Thread &thread : this->threads) { - thread.start(&self_type::generate_meshes_thread, this); - } -} - -size_t Terrain::get_thread_count() const { - return this->threads.size(); -} diff --git a/modules/terrain/terrain.h b/modules/terrain/terrain.h deleted file mode 100644 index 64b79a06..00000000 --- a/modules/terrain/terrain.h +++ /dev/null @@ -1,57 +0,0 @@ -#pragma once - -#include "core/math/rect2.h" -#include "core/os/mutex.h" -#include "core/os/thread.h" -#include "core/templates/vector.h" -#include "scene/main/node.h" -#include "scene/resources/material.h" -class TerrainChunkMesh; -class TerrainModifier; - -class Terrain : public Node { - GDCLASS(Terrain, Node); - static void _bind_methods(); - void child_order_changed(); - void update_meshes(); - void update_threads(); - -protected: - void _notification(int what); - static void generate_meshes_thread(void *terrain); - -public: - void construct_chunk_grid(); - float height_at(Vector2 world_coordinate); - void push_changed(Rect2 area); - void mesh_dirty(TerrainChunkMesh *mesh); - -private: - Ref mesh_material{}; - Vector workload{}; - bool threads_stop{ false }; - Mutex workload_lock; - - Vector dirty_meshes{}; - Mutex dirty_meshes_lock{}; - - Vector meshes{}; - Vector modifiers{}; - LocalVector threads{}; - - size_t side_length{ 200 }; - size_t chunk_size{ 50 }; - size_t detail{ 1 }; - -public: - void set_mesh_material(Ref material); - Ref get_mesh_material() const; - void set_side_length(size_t length); - size_t get_side_length() const; - void set_chunk_size(size_t size); - size_t get_chunk_size() const; - void set_detail(size_t detail); - size_t get_detail() const; - void set_thread_count(size_t num); - size_t get_thread_count() const; -}; diff --git a/modules/terrain/terrain_chunk.cpp b/modules/terrain/terrain_chunk.cpp deleted file mode 100644 index 1a5777eb..00000000 --- a/modules/terrain/terrain_chunk.cpp +++ /dev/null @@ -1,89 +0,0 @@ -#include "terrain_chunk.h" -#include "core/variant/variant.h" -#include "scene/resources/surface_tool.h" -#include "terrain/terrain.h" - -void TerrainChunkMesh::_bind_methods() {} - -void TerrainChunkMesh::generate_vertices() { - ERR_FAIL_COND_EDMSG(this->terrain == nullptr, "TerrainChunkMesh::generate_vertices: no terrain assigned"); - ERR_FAIL_COND_EDMSG(this->size <= 0.f, "TerrainChunkMesh::generate_vertices: size <= 0"); - ERR_FAIL_COND_EDMSG(points_per_side() <= 0, "TerrainChunkMesh::generate_vertices: points per side <= 0"); - float const half_extent{ (float)this->size / 2.f }; - float const point_distance{ (float)this->size / ((float)points_per_side() - 1) }; - Vector3 origin{ this->safe_position - Vector3{ half_extent, 0, half_extent } }; - for (size_t x{ 0 }; x < points_per_side(); ++x) { - for (size_t y{ 0 }; y < points_per_side(); ++y) { - Vector2 const coordinate{ origin.x + point_distance * x, origin.z + point_distance * y }; - this->surface->set_uv({ (float)x / (float)points_per_side(), (float)y / (float)points_per_side() }); - this->surface->add_vertex({ coordinate.x - this->safe_position.x, this->terrain->height_at(coordinate), coordinate.y - this->safe_position.z }); - } - } -} - -void TerrainChunkMesh::generate_faces() { - LocalVector &verts{ this->surface->get_vertex_array() }; - ERR_FAIL_COND_EDMSG(verts.size() == 0, "TerrainChunkMesh::generate_faces: no vertices in surface, call generate_vertices first"); - size_t const faces_per_side{ points_per_side() - 1 }; - for (size_t x{ 0 }; x < faces_per_side; ++x) { - for (size_t y{ 0 }; y < faces_per_side; ++y) { - size_t const tl{ x + y * points_per_side() }; - float tl_br{ verts[tl].vertex.distance_to(verts[tl + points_per_side() + 1].vertex) }; - float tr_bl{ verts[tl + 1].vertex.distance_to(verts[tl + points_per_side()].vertex) }; - if (tl_br < tr_bl) { - surface->add_index(tl); - surface->add_index(tl + points_per_side() + 1); - surface->add_index(tl + 1); - surface->add_index(tl); - surface->add_index(tl + points_per_side()); - surface->add_index(tl + points_per_side() + 1); - } else { - surface->add_index(tl + points_per_side()); - surface->add_index(tl + points_per_side() + 1); - surface->add_index(tl + 1); - surface->add_index(tl + 1); - surface->add_index(tl); - surface->add_index(tl + points_per_side()); - } - } - } -} - -void TerrainChunkMesh::_notification(int what) { - switch (what) { - default: - return; - case NOTIFICATION_READY: - this->safe_position = get_global_position(); - float const sizef{ (float)get_size() }; - this->bounds.position = { this->safe_position.x - sizef / 2.f, this->safe_position.z - sizef / 2.f }; - this->bounds.size = { sizef, sizef }; - return; - } -} - -void TerrainChunkMesh::apply_new_mesh() { - this->lock.lock(); - set_mesh(this->new_mesh); - this->lock.unlock(); -} - -void TerrainChunkMesh::update_mesh() { - ERR_FAIL_COND_EDMSG(this->size <= 0.f, "TerrainChunkMesh::generate: size <= 0"); - ERR_FAIL_COND_EDMSG(points_per_side() <= 0, "TerrainChunkMesh::generate: points per side <= 0"); - this->lock.lock(); - this->surface = memnew(SurfaceTool); - this->surface->begin(Mesh::PRIMITIVE_TRIANGLES); - generate_vertices(); - generate_faces(); - this->surface->generate_normals(); - this->surface->generate_tangents(); - this->new_mesh = memnew(ArrayMesh); - this->surface->commit(this->new_mesh); - this->lock.unlock(); - this->terrain->mesh_dirty(this); -} - -size_t TerrainChunkMesh::points_per_side() const { - return this->size * this->detail; -} diff --git a/modules/terrain/terrain_chunk.h b/modules/terrain/terrain_chunk.h deleted file mode 100644 index 2e9ea49e..00000000 --- a/modules/terrain/terrain_chunk.h +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once - -#include "core/math/rect2.h" -#include "macros.h" -#include "scene/3d/mesh_instance_3d.h" -#include "scene/resources/mesh.h" -#include "scene/resources/surface_tool.h" -class Terrain; - -class TerrainChunkMesh : public MeshInstance3D { - GDCLASS(TerrainChunkMesh, MeshInstance3D); - static void _bind_methods(); - void generate_vertices(); - void generate_faces(); - -protected: - void _notification(int what); - -public: - void apply_new_mesh(); - void update_mesh(); - size_t points_per_side() const; - -private: - Mutex lock{}; - Vector3 safe_position{}; - Ref surface{}; - Ref new_mesh{}; - Terrain *terrain{ nullptr }; - size_t detail{ 1 }; - size_t size{ 1 }; - Rect2 bounds{}; - -public: - GET_SET_FNS(Rect2, bounds); - GET_SET_FNS(Terrain *, terrain); - GET_SET_FNS(size_t, detail); - GET_SET_FNS(size_t, size); -}; diff --git a/modules/terrain/terrain_modifier.cpp b/modules/terrain/terrain_modifier.cpp deleted file mode 100644 index 730f4d1b..00000000 --- a/modules/terrain/terrain_modifier.cpp +++ /dev/null @@ -1,416 +0,0 @@ -#include "terrain_modifier.h" -#include "core/config/engine.h" -#include "core/math/math_funcs.h" -#include "core/variant/variant.h" -#include "macros.h" -#include "scene/main/node.h" -#include "terrain/terrain.h" -#include - -void TerrainModifier::_bind_methods() {} - -void TerrainModifier::_notification(int what) { - switch (what) { - default: - return; - case NOTIFICATION_ENTER_TREE: - if (Engine::get_singleton()->is_editor_hint()) { - set_notify_transform(true); - } - this->thread_safe_global_position = get_global_position(); - case NOTIFICATION_TRANSFORM_CHANGED: - this->thread_safe_global_position = get_global_position(); - return; - } -} - -void TerrainModifier::push_changed(Rect2 area) { - if (this->terrain) { - this->terrain->push_changed(area); - } -} - -float TerrainModifier::evaluate_at(Vector2 world_coordinate, float before) { - Vector3 const global_position{ get_thread_safe_global_position() }; - return global_position.y; -} - -void TerrainModifier::set_bounds(Rect2 bounds) { - if (this->bounds != bounds) { - push_changed(bounds); - push_changed(this->bounds); - this->bounds = bounds; - } -} - -Rect2 TerrainModifier::get_bounds() const { - return this->bounds; -} - -Vector3 TerrainModifier::get_thread_safe_global_position() const { - return this->thread_safe_global_position; -} - -void SharedMutex::lock_shared() { - this->lock.lock(); - this->shared_count++; - this->lock.unlock(); -} - -void SharedMutex::unlock_shared() { - this->lock.lock(); - this->shared_count--; - this->lock.unlock(); -} - -void SharedMutex::lock_exclusive() { - while (true) { - this->lock.lock(); - if (this->shared_count == 0) { - return; - } - this->lock.unlock(); - } -} - -void SharedMutex::unlock_exclusive() { - this->lock.unlock(); -} - -void TerrainModifierDistance::_bind_methods() { - BIND_HPROPERTY(Variant::OBJECT, distance_weight_curve, PROPERTY_HINT_RESOURCE_TYPE, "Curve"); -} - -void TerrainModifierDistance::curves_changed() { - if (!update_bounds()) { - push_changed(get_bounds()); - } - this->lock.lock_exclusive(); - this->distance_weight_curve_buffer = this->distance_weight_curve.is_valid() ? this->distance_weight_curve->duplicate(true) : nullptr; - this->lock.unlock_exclusive(); -} - -bool TerrainModifierDistance::update_bounds() { - Rect2 const before{ get_bounds() }; - Rect2 bounds{}; - Vector3 position{ get_thread_safe_global_position() }; - bounds.position = { position.x, position.z }; - bounds.size = { 0, 0 }; - this->lock.lock_shared(); - if (this->distance_weight_curve.is_valid()) { - float const max_radius{ this->distance_weight_curve->get_max_domain() }; - float const max_diameter{ 2.f * max_radius }; - bounds.size = { max_diameter, max_diameter }; - bounds.position -= { max_radius, max_radius }; - } - bool const changed{ before != bounds }; - this->lock.unlock_shared(); - this->lock.lock_exclusive(); - set_bounds(bounds); - this->lock.unlock_exclusive(); - return changed; -} - -void TerrainModifierDistance::_notification(int what) { - switch (what) { - default: - return; - case NOTIFICATION_READY: - update_bounds(); - set_notify_transform(true); - return; - case NOTIFICATION_TRANSFORM_CHANGED: - if (is_inside_tree()) { - if (!update_bounds()) { - push_changed(get_bounds()); - } - } - return; - } -} - -float TerrainModifierDistance::distance_at(Vector2 const &world_coordinate) { - Vector3 const global_position{ get_thread_safe_global_position() }; - return world_coordinate.distance_to({ global_position.x, global_position.z }); -} - -float TerrainModifierDistance::evaluate_at(Vector2 world_coordinate, float before) { - this->lock.lock_shared(); - if (this->distance_weight_curve_buffer.is_null()) { - this->lock.unlock_shared(); - return before; - } - float const distance{ distance_at(world_coordinate) }; - if (distance >= this->distance_weight_curve_buffer->get_max_domain()) { - this->lock.unlock_shared(); - return before; - } - float const weight_offset{ std::clamp(distance, this->distance_weight_curve_buffer->get_min_domain(), this->distance_weight_curve_buffer->get_max_domain()) }; - float const weight{ this->distance_weight_curve_buffer->sample(weight_offset) }; - float out{ weight <= 0.f ? before : Math::lerp(before, get_thread_safe_global_position().y, weight) }; - this->lock.unlock_shared(); - - return out; -} - -PackedStringArray TerrainModifierDistance::get_configuration_warnings() const { - PackedStringArray warnings{ super_type::get_configuration_warnings() }; - if (this->distance_weight_curve.is_null()) { - warnings.push_back("distance_weight_curve is invalid, add a valid distance_weight_curve"); - } - return warnings; -} - -void TerrainModifierDistance::set_distance_weight_curve(Ref curve) { - this->lock.lock_exclusive(); - if (Engine::get_singleton()->is_editor_hint()) { - if (this->distance_weight_curve.is_valid()) { - this->distance_weight_curve->disconnect_changed(callable_mp(this, &self_type::curves_changed)); - } - if (curve.is_valid()) { - curve->connect_changed(callable_mp(this, &self_type::curves_changed)); - } - } - this->distance_weight_curve = curve; - this->lock.unlock_exclusive(); - curves_changed(); - update_configuration_warnings(); -} - -Ref TerrainModifierDistance::get_distance_weight_curve() const { - return this->distance_weight_curve; -} - -void TerrainModifierPathPoint::_bind_methods() {} - -void TerrainModifierPathPoint::_notification(int what) { - switch (what) { - default: - return; - case NOTIFICATION_ENTER_TREE: - if ((this->path = cast_to(get_parent()))) { - this->path->path_changed(); - } - return; - case NOTIFICATION_READY: - set_notify_transform(true); - return; - case NOTIFICATION_TRANSFORM_CHANGED: - if (this->path) { - this->path->path_changed(); - } - return; - case NOTIFICATION_EXIT_TREE: - this->path = nullptr; - return; - } -} - -void TerrainModifierPath::_bind_methods() { - BIND_HPROPERTY(Variant::OBJECT, curve_left, PROPERTY_HINT_RESOURCE_TYPE, "Curve"); - BIND_HPROPERTY(Variant::OBJECT, curve_right, PROPERTY_HINT_RESOURCE_TYPE, "Curve"); -} - -void TerrainModifierPath::curves_changed() { - if (!update_bounds()) { - push_changed(get_bounds()); - } - this->lock.lock_exclusive(); - this->curve_left_buffer = this->curve_left.is_valid() ? this->curve_left->duplicate(true) : nullptr; - this->curve_right_buffer = this->curve_right.is_valid() ? this->curve_right->duplicate(true) : nullptr; - this->lock.unlock_exclusive(); -} - -bool TerrainModifierPath::update_bounds() { - Vector2 min{}, max{}; - this->lock.lock_shared(); - if (this->points.is_empty() || this->curve_left.is_null()) { - Vector3 point{ this->get_thread_safe_global_position() }; - min.x = point.x; - min.y = point.z; - max = min; - } else { - max = min = { this->points[0].x, this->points[0].y }; - for (Vector3 const &point : this->points) { - max.x = max.x > point.x ? max.x : point.x; - max.y = max.y > point.z ? max.y : point.z; - min.x = min.x < point.x ? min.x : point.x; - min.y = min.y < point.z ? min.y : point.z; - } - float max_distance_left{ this->curve_left->get_max_domain() }; - float max_distance{ max_distance_left }; - if (this->curve_right.is_valid()) { - float max_distance_right{ this->curve_right->get_max_domain() }; - max_distance = max_distance_right > max_distance ? max_distance_right : max_distance; - } - min -= { max_distance, max_distance }; - max += { max_distance * 2.f, max_distance * 2.f }; - } - Rect2 bounds{ min, max - min }; - bool const changed{ bounds != get_bounds() }; - this->lock.unlock_shared(); - this->lock.lock_exclusive(); - set_bounds(bounds); - this->lock.unlock_exclusive(); - return changed; -} - -void TerrainModifierPath::_notification(int what) { - switch (what) { - default: - return; - case NOTIFICATION_READY: - update_bounds(); - set_notify_transform(true); - return; - case NOTIFICATION_TRANSFORM_CHANGED: - if (is_inside_tree()) { - if (!update_bounds()) { - push_changed(get_bounds()); - } - } - return; - case NOTIFICATION_CHILD_ORDER_CHANGED: - path_changed(); - return; - } -} - -float TerrainModifierPath::evaluate_line(Vector3 a, bool a_end, Vector3 b, bool b_end, Vector2 world_coordinate, float &out_dot, float &out_distance, float &out_percentage) { - Vector2 a2{ a.x, a.z }, b2{ b.x, b.z }; - Vector2 const relative_coordinate{ world_coordinate - a2 }; - Vector2 const difference2{ b2 - a2 }; - float w{ difference2.normalized().dot(relative_coordinate) / difference2.length() }; - Vector3 const difference{ b - a }; - Vector3 const closest_on_line{ a + difference * (w > 0 ? (w < 1 ? w : 1) : 0) }; - Vector2 const right{ -difference.z, difference.x }; - out_dot = right.normalized().dot(relative_coordinate); - out_distance = world_coordinate.distance_to({ closest_on_line.x, closest_on_line.z }); - out_percentage = w; - return a.y + (b.y - a.y) * w; -} - -float TerrainModifierPath::evaluate_at(Vector2 world_coordinate, float before) { - this->lock.lock_shared(); - if (this->curve_left_buffer.is_null() || this->points.size() <= 1) { - this->lock.unlock_shared(); - return before; - } - Ref right_curve{ this->curve_right_buffer }; - if (right_curve.is_null()) { - right_curve = this->curve_left_buffer; - } - float out_height{ before }; - long const count{ this->closed ? this->points.size() : this->points.size() - 1 }; - for (int i{ 0 }; i < count; i++) { - Vector3 const ipos{ this->points[i] }; - Vector3 const next_pos{ this->points[Math::wrapi(i + 1, 0, this->points.size())] }; - if (ipos == next_pos) { - continue; - } - float dot, distance, percentage; - bool const is_start{ !this->closed && i == 0 }, is_end{ !this->closed && i == count - 1 }; - float height{ evaluate_line(ipos, is_start, next_pos, is_end, world_coordinate, dot, distance, percentage) }; - float const left{ this->curve_left_buffer->sample(distance) }; - float const right{ right_curve->sample(distance) }; - float const ndot{ dot / distance }; - float separation{ ndot / 2.f + 0.5f }; - if (percentage > 0.f && percentage < 1.f) { - separation = Math::round(separation); - } - float const weight{ left * (1.f - separation) + right * separation }; - float const blended_height{ Math::lerp(out_height, height, weight) }; - out_height = blended_height; - } - this->lock.unlock_shared(); - return out_height; -} - -void TerrainModifierPath::path_changed() { - if (!is_inside_tree()) { - return; - } - this->lock.lock_exclusive(); - this->points.clear(); - this->min_height = INFINITY; - this->max_height = -INFINITY; - Vector3 last{ INFINITY, INFINITY, INFINITY }; - for (Variant var : get_children()) { - if (TerrainModifierPathPoint * point{ cast_to(var) }) { - Vector3 position{ point->get_global_position() }; - if (position != last) { - this->points.push_back(position); - if (position.y > this->max_height) { - this->max_height = position.y; - } - if (position.y < this->min_height) { - this->min_height = position.y; - } - } - } - last = var; - } - this->lock.unlock_exclusive(); - if (!update_bounds()) { - push_changed(get_bounds()); - } -} - -PackedStringArray TerrainModifierPath::get_configuration_warnings() const { - PackedStringArray warnings{ super_type::get_configuration_warnings() }; - if (this->curve_left.is_null()) { - warnings.push_back("curve_left is invalid, add a valid curve_left"); - } - return warnings; -} - -void TerrainModifierPath::set_curve_left(Ref curve) { - this->lock.lock_exclusive(); - if (curve.is_valid() && curve == this->curve_right) { - curve = curve->duplicate(); - } - if (Engine::get_singleton()->is_editor_hint()) { - if (this->curve_left.is_valid()) { - this->curve_left->disconnect_changed(callable_mp(this, &self_type::curves_changed)); - } - if (curve.is_valid()) { - curve->connect_changed(callable_mp(this, &self_type::curves_changed)); - } - } - this->curve_left = curve; - this->lock.unlock_exclusive(); - if (!curve.is_valid() && this->curve_right.is_valid()) { - curve = this->curve_right; - set_curve_right(nullptr); - } else { - curves_changed(); - update_configuration_warnings(); - } -} - -Ref TerrainModifierPath::get_curve_left() const { - return this->curve_left; -} - -void TerrainModifierPath::set_curve_right(Ref curve) { - this->lock.lock_exclusive(); - if (curve.is_valid() && curve == this->curve_left) { - curve = curve->duplicate(); - } - if (Engine::get_singleton()->is_editor_hint()) { - if (this->curve_right.is_valid()) { - this->curve_right->disconnect_changed(callable_mp(this, &self_type::curves_changed)); - } - if (curve.is_valid()) { - curve->connect_changed(callable_mp(this, &self_type::curves_changed)); - } - } - this->curve_right = curve; - this->lock.unlock_exclusive(); - curves_changed(); - update_configuration_warnings(); -} - -Ref TerrainModifierPath::get_curve_right() const { - return this->curve_right; -} diff --git a/modules/terrain/terrain_modifier.h b/modules/terrain/terrain_modifier.h deleted file mode 100644 index be94ebd2..00000000 --- a/modules/terrain/terrain_modifier.h +++ /dev/null @@ -1,113 +0,0 @@ -#pragma once - -#include "core/object/object.h" -#include "core/variant/variant.h" -#include "macros.h" -#include "scene/3d/marker_3d.h" -#include "scene/resources/curve.h" -#include -class Terrain; - -class TerrainModifier : public Marker3D { - GDCLASS(TerrainModifier, Marker3D); - static void _bind_methods(); - -protected: - void _notification(int what); - void push_changed(Rect2 bounds); - -public: - virtual float evaluate_at(Vector2 world_coordinate, float before); - -private: - Vector3 thread_safe_global_position{}; - Terrain *terrain{ nullptr }; - Rect2 bounds{ { -INFINITY, -INFINITY }, { INFINITY, INFINITY } }; - -protected: - void set_bounds(Rect2 bounds); - Rect2 get_bounds() const; - -public: - Vector3 get_thread_safe_global_position() const; - GET_SET_FNS(Terrain *, terrain); -}; - -struct SharedMutex { - void lock_shared(); - void unlock_shared(); - void lock_exclusive(); - void unlock_exclusive(); - -private: - Mutex lock{}; - int shared_count{}; -}; - -class TerrainModifierDistance : public TerrainModifier { - GDCLASS(TerrainModifierDistance, TerrainModifier); - static void _bind_methods(); - void curves_changed(); - bool update_bounds(); - -protected: - void _notification(int what); - float distance_at(Vector2 const &world_coordinate); - -public: - float evaluate_at(Vector2 world_coordinate, float before) override; - PackedStringArray get_configuration_warnings() const override; - -private: - SharedMutex lock{}; - Ref distance_weight_curve{}; - Ref distance_weight_curve_buffer{}; - -public: - void set_distance_weight_curve(Ref curve); - Ref get_distance_weight_curve() const; -}; - -class TerrainModifierPathPoint : public Marker3D { - GDCLASS(TerrainModifierPathPoint, Marker3D); - static void _bind_methods(); - -protected: - void _notification(int what); - -public: - class TerrainModifierPath *path{ nullptr }; -}; - -class TerrainModifierPath : public TerrainModifier { - GDCLASS(TerrainModifierPath, TerrainModifier); - static void _bind_methods(); - void curves_changed(); - bool update_bounds(); - -protected: - void _notification(int what); - float evaluate_line(Vector3 a, bool a_end, Vector3 b, bool b_end, Vector2 world_coordinate, float &out_dot, float &out_distance, float &out_percentage); - -public: - float evaluate_at(Vector2 world_coordinate, float before) override; - void path_changed(); - PackedStringArray get_configuration_warnings() const override; - -private: - SharedMutex lock{}; - float min_height{}; - float max_height{}; - bool closed{ false }; - Vector points{}; - Ref curve_left_buffer{}; - Ref curve_left{}; - Ref curve_right_buffer{}; - Ref curve_right{}; - -public: - void set_curve_left(Ref curve); - Ref get_curve_left() const; - void set_curve_right(Ref curve); - Ref get_curve_right() const; -}; diff --git a/project/assets/characters/player_fem/character_fem.blend b/project/assets/characters/player_fem/character_fem.blend deleted file mode 100644 index d6a83316..00000000 Binary files a/project/assets/characters/player_fem/character_fem.blend and /dev/null differ diff --git a/project/assets/characters/player_fem/character_fem.blend.import b/project/assets/characters/player_fem/character_fem.blend.import deleted file mode 100644 index f3b42a40..00000000 --- a/project/assets/characters/player_fem/character_fem.blend.import +++ /dev/null @@ -1,60 +0,0 @@ -[remap] - -importer="scene" -importer_version=1 -type="PackedScene" -uid="uid://grb3q5nd2uds" -path="res://.godot/imported/character_fem.blend-e169cb46816e89cf00aa8e7f988a0574.scn" - -[deps] - -source_file="res://assets/characters/player_fem/character_fem.blend" -dest_files=["res://.godot/imported/character_fem.blend-e169cb46816e89cf00aa8e7f988a0574.scn"] - -[params] - -nodes/root_type="" -nodes/root_name="" -nodes/root_script=null -nodes/apply_root_scale=true -nodes/root_scale=1.0 -nodes/import_as_skeleton_bones=false -nodes/use_name_suffixes=true -nodes/use_node_type_suffixes=true -meshes/ensure_tangents=true -meshes/generate_lods=true -meshes/create_shadow_meshes=true -meshes/light_baking=1 -meshes/lightmap_texel_size=0.2 -meshes/force_disable_compression=false -skins/use_named_skins=true -animation/import=true -animation/fps=30 -animation/trimming=false -animation/remove_immutable_tracks=true -animation/import_rest_as_RESET=false -import_script/path="uid://ba7qlhj5ylm3d" -materials/extract=0 -materials/extract_format=0 -materials/extract_path="" -_subresources={} -blender/nodes/visible=0 -blender/nodes/active_collection_only=false -blender/nodes/punctual_lights=true -blender/nodes/cameras=true -blender/nodes/custom_properties=true -blender/nodes/modifiers=1 -blender/meshes/colors=false -blender/meshes/uvs=true -blender/meshes/normals=true -blender/meshes/export_geometry_nodes_instances=false -blender/meshes/gpu_instances=false -blender/meshes/tangents=true -blender/meshes/skins=2 -blender/meshes/export_bones_deforming_mesh_only=false -blender/materials/unpack_enabled=true -blender/materials/export_materials=1 -blender/animation/limit_playback=true -blender/animation/always_sample=true -blender/animation/group_tracks=true -gltf/naming_version=2 diff --git a/project/assets/characters/player_fem/character_fem.blend1 b/project/assets/characters/player_fem/character_fem.blend1 deleted file mode 100644 index b63624e8..00000000 Binary files a/project/assets/characters/player_fem/character_fem.blend1 and /dev/null differ diff --git a/project/assets/characters/player_fem/textures/Face.png b/project/assets/characters/player_fem/textures/Face.png deleted file mode 100644 index 942b4264..00000000 Binary files a/project/assets/characters/player_fem/textures/Face.png and /dev/null differ diff --git a/project/assets/characters/player_fem/textures/Face.png.import b/project/assets/characters/player_fem/textures/Face.png.import deleted file mode 100644 index ee9ab627..00000000 --- a/project/assets/characters/player_fem/textures/Face.png.import +++ /dev/null @@ -1,41 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://biqq268lccpng" -path.s3tc="res://.godot/imported/Face.png-08c0111f3b71fa077c35243a4c740f6e.s3tc.ctex" -metadata={ -"imported_formats": ["s3tc_bptc"], -"vram_texture": true -} - -[deps] - -source_file="res://assets/characters/player_fem/textures/Face.png" -dest_files=["res://.godot/imported/Face.png-08c0111f3b71fa077c35243a4c740f6e.s3tc.ctex"] - -[params] - -compress/mode=2 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=true -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=0 diff --git a/project/assets/characters/player_fem/textures/Texture.png b/project/assets/characters/player_fem/textures/Texture.png deleted file mode 100644 index bbb69001..00000000 Binary files a/project/assets/characters/player_fem/textures/Texture.png and /dev/null differ diff --git a/project/assets/characters/player_fem/textures/Texture.png.import b/project/assets/characters/player_fem/textures/Texture.png.import deleted file mode 100644 index eba1bf9a..00000000 --- a/project/assets/characters/player_fem/textures/Texture.png.import +++ /dev/null @@ -1,41 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cwqc2g4616eun" -path.s3tc="res://.godot/imported/Texture.png-98af1a158e1830cbcd0a13178176c442.s3tc.ctex" -metadata={ -"imported_formats": ["s3tc_bptc"], -"vram_texture": true -} - -[deps] - -source_file="res://assets/characters/player_fem/textures/Texture.png" -dest_files=["res://.godot/imported/Texture.png-98af1a158e1830cbcd0a13178176c442.s3tc.ctex"] - -[params] - -compress/mode=2 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=true -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=0 diff --git a/project/assets/characters/player_masc/character_masc.blend b/project/assets/characters/player_masc/character_masc.blend deleted file mode 100644 index a6c7dba2..00000000 Binary files a/project/assets/characters/player_masc/character_masc.blend and /dev/null differ diff --git a/project/assets/characters/player_masc/character_masc.blend.import b/project/assets/characters/player_masc/character_masc.blend.import deleted file mode 100644 index 1da1533b..00000000 --- a/project/assets/characters/player_masc/character_masc.blend.import +++ /dev/null @@ -1,60 +0,0 @@ -[remap] - -importer="scene" -importer_version=1 -type="PackedScene" -uid="uid://bsdvnyn6nhiaa" -path="res://.godot/imported/character_masc.blend-0037c94467e2e85d7ec685a838d7e95d.scn" - -[deps] - -source_file="res://assets/characters/player_masc/character_masc.blend" -dest_files=["res://.godot/imported/character_masc.blend-0037c94467e2e85d7ec685a838d7e95d.scn"] - -[params] - -nodes/root_type="" -nodes/root_name="" -nodes/root_script=null -nodes/apply_root_scale=true -nodes/root_scale=1.0 -nodes/import_as_skeleton_bones=false -nodes/use_name_suffixes=true -nodes/use_node_type_suffixes=true -meshes/ensure_tangents=true -meshes/generate_lods=true -meshes/create_shadow_meshes=true -meshes/light_baking=1 -meshes/lightmap_texel_size=0.2 -meshes/force_disable_compression=false -skins/use_named_skins=true -animation/import=true -animation/fps=30 -animation/trimming=false -animation/remove_immutable_tracks=true -animation/import_rest_as_RESET=false -import_script/path="" -materials/extract=0 -materials/extract_format=0 -materials/extract_path="" -_subresources={} -blender/nodes/visible=0 -blender/nodes/active_collection_only=false -blender/nodes/punctual_lights=true -blender/nodes/cameras=true -blender/nodes/custom_properties=true -blender/nodes/modifiers=1 -blender/meshes/colors=false -blender/meshes/uvs=true -blender/meshes/normals=true -blender/meshes/export_geometry_nodes_instances=false -blender/meshes/gpu_instances=false -blender/meshes/tangents=true -blender/meshes/skins=2 -blender/meshes/export_bones_deforming_mesh_only=false -blender/materials/unpack_enabled=true -blender/materials/export_materials=1 -blender/animation/limit_playback=true -blender/animation/always_sample=true -blender/animation/group_tracks=true -gltf/naming_version=2 diff --git a/project/assets/characters/player_masc/character_masc.blend1 b/project/assets/characters/player_masc/character_masc.blend1 deleted file mode 100644 index a0e310b7..00000000 Binary files a/project/assets/characters/player_masc/character_masc.blend1 and /dev/null differ diff --git a/project/assets/characters/player_masc/textures/Face.png b/project/assets/characters/player_masc/textures/Face.png deleted file mode 100644 index e66061c5..00000000 Binary files a/project/assets/characters/player_masc/textures/Face.png and /dev/null differ diff --git a/project/assets/characters/player_masc/textures/Face.png.import b/project/assets/characters/player_masc/textures/Face.png.import deleted file mode 100644 index 9659496c..00000000 --- a/project/assets/characters/player_masc/textures/Face.png.import +++ /dev/null @@ -1,41 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b7n0rgtlub4r7" -path.s3tc="res://.godot/imported/Face.png-f5f833f7c71137a9e4aac5fe268e4dd4.s3tc.ctex" -metadata={ -"imported_formats": ["s3tc_bptc"], -"vram_texture": true -} - -[deps] - -source_file="res://assets/characters/player_masc/textures/Face.png" -dest_files=["res://.godot/imported/Face.png-f5f833f7c71137a9e4aac5fe268e4dd4.s3tc.ctex"] - -[params] - -compress/mode=2 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=true -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=0 diff --git a/project/assets/characters/player_masc/textures/Texture.png b/project/assets/characters/player_masc/textures/Texture.png deleted file mode 100644 index bbb69001..00000000 Binary files a/project/assets/characters/player_masc/textures/Texture.png and /dev/null differ diff --git a/project/assets/characters/player_masc/textures/Texture.png.import b/project/assets/characters/player_masc/textures/Texture.png.import deleted file mode 100644 index e3208081..00000000 --- a/project/assets/characters/player_masc/textures/Texture.png.import +++ /dev/null @@ -1,41 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://lea3dgv2585y" -path.s3tc="res://.godot/imported/Texture.png-51f4b86d2d244a13f05f399cc30a0d6b.s3tc.ctex" -metadata={ -"imported_formats": ["s3tc_bptc"], -"vram_texture": true -} - -[deps] - -source_file="res://assets/characters/player_masc/textures/Texture.png" -dest_files=["res://.godot/imported/Texture.png-51f4b86d2d244a13f05f399cc30a0d6b.s3tc.ctex"] - -[params] - -compress/mode=2 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=true -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=0 diff --git a/project/assets/environments/blockouts/cliffs_blockout.blend b/project/assets/environments/blockouts/cliffs_blockout.blend deleted file mode 100644 index d49eddce..00000000 Binary files a/project/assets/environments/blockouts/cliffs_blockout.blend and /dev/null differ diff --git a/project/assets/environments/blockouts/cliffs_blockout.blend.import b/project/assets/environments/blockouts/cliffs_blockout.blend.import deleted file mode 100644 index bb039223..00000000 --- a/project/assets/environments/blockouts/cliffs_blockout.blend.import +++ /dev/null @@ -1,60 +0,0 @@ -[remap] - -importer="scene" -importer_version=1 -type="PackedScene" -uid="uid://dw4p3s74f1pdg" -path="res://.godot/imported/cliffs_blockout.blend-f86a374f2c48645fd5614df18445a45a.scn" - -[deps] - -source_file="res://assets/environments/blockouts/cliffs_blockout.blend" -dest_files=["res://.godot/imported/cliffs_blockout.blend-f86a374f2c48645fd5614df18445a45a.scn"] - -[params] - -nodes/root_type="" -nodes/root_name="" -nodes/root_script=null -nodes/apply_root_scale=true -nodes/root_scale=1.0 -nodes/import_as_skeleton_bones=false -nodes/use_name_suffixes=true -nodes/use_node_type_suffixes=true -meshes/ensure_tangents=true -meshes/generate_lods=true -meshes/create_shadow_meshes=true -meshes/light_baking=1 -meshes/lightmap_texel_size=0.2 -meshes/force_disable_compression=false -skins/use_named_skins=true -animation/import=true -animation/fps=30 -animation/trimming=false -animation/remove_immutable_tracks=true -animation/import_rest_as_RESET=false -import_script/path="uid://ba7qlhj5ylm3d" -materials/extract=0 -materials/extract_format=0 -materials/extract_path="" -_subresources={} -blender/nodes/visible=0 -blender/nodes/active_collection_only=false -blender/nodes/punctual_lights=true -blender/nodes/cameras=true -blender/nodes/custom_properties=true -blender/nodes/modifiers=1 -blender/meshes/colors=false -blender/meshes/uvs=true -blender/meshes/normals=true -blender/meshes/export_geometry_nodes_instances=false -blender/meshes/gpu_instances=false -blender/meshes/tangents=true -blender/meshes/skins=2 -blender/meshes/export_bones_deforming_mesh_only=false -blender/materials/unpack_enabled=true -blender/materials/export_materials=1 -blender/animation/limit_playback=true -blender/animation/always_sample=true -blender/animation/group_tracks=true -gltf/naming_version=2 diff --git a/project/assets/environments/blockouts/cliffs_blockout.blend1 b/project/assets/environments/blockouts/cliffs_blockout.blend1 deleted file mode 100644 index 64456248..00000000 Binary files a/project/assets/environments/blockouts/cliffs_blockout.blend1 and /dev/null differ diff --git a/project/assets/environments/blockouts/terrain.png b/project/assets/environments/blockouts/terrain.png deleted file mode 100644 index c1ad7ab3..00000000 Binary files a/project/assets/environments/blockouts/terrain.png and /dev/null differ diff --git a/project/assets/environments/blockouts/terrain.png.import b/project/assets/environments/blockouts/terrain.png.import deleted file mode 100644 index d9ec829f..00000000 --- a/project/assets/environments/blockouts/terrain.png.import +++ /dev/null @@ -1,41 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dwmur2qflotv6" -path.bptc="res://.godot/imported/terrain.png-52ea7eaf6b989ed8d9fc2c0c5a398fdf.bptc.ctex" -metadata={ -"imported_formats": ["s3tc_bptc"], -"vram_texture": true -} - -[deps] - -source_file="res://assets/environments/blockouts/terrain.png" -dest_files=["res://.godot/imported/terrain.png-52ea7eaf6b989ed8d9fc2c0c5a398fdf.bptc.ctex"] - -[params] - -compress/mode=2 -compress/high_quality=true -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=true -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=0 diff --git a/project/assets/environments/props/flower.blend b/project/assets/environments/props/flower.blend deleted file mode 100644 index 1779896f..00000000 Binary files a/project/assets/environments/props/flower.blend and /dev/null differ diff --git a/project/assets/environments/props/flower.blend.import b/project/assets/environments/props/flower.blend.import deleted file mode 100644 index 40504356..00000000 --- a/project/assets/environments/props/flower.blend.import +++ /dev/null @@ -1,60 +0,0 @@ -[remap] - -importer="scene" -importer_version=1 -type="PackedScene" -uid="uid://dyt1mwbep2012" -path="res://.godot/imported/flower.blend-a54f993c4db9e1bce792f272b6b1a837.scn" - -[deps] - -source_file="res://assets/environments/props/flower.blend" -dest_files=["res://.godot/imported/flower.blend-a54f993c4db9e1bce792f272b6b1a837.scn"] - -[params] - -nodes/root_type="" -nodes/root_name="" -nodes/root_script=null -nodes/apply_root_scale=true -nodes/root_scale=1.0 -nodes/import_as_skeleton_bones=false -nodes/use_name_suffixes=true -nodes/use_node_type_suffixes=true -meshes/ensure_tangents=true -meshes/generate_lods=true -meshes/create_shadow_meshes=true -meshes/light_baking=1 -meshes/lightmap_texel_size=0.2 -meshes/force_disable_compression=false -skins/use_named_skins=true -animation/import=true -animation/fps=30 -animation/trimming=false -animation/remove_immutable_tracks=true -animation/import_rest_as_RESET=false -import_script/path="uid://ba7qlhj5ylm3d" -materials/extract=0 -materials/extract_format=0 -materials/extract_path="" -_subresources={} -blender/nodes/visible=0 -blender/nodes/active_collection_only=false -blender/nodes/punctual_lights=true -blender/nodes/cameras=true -blender/nodes/custom_properties=true -blender/nodes/modifiers=1 -blender/meshes/colors=false -blender/meshes/uvs=true -blender/meshes/normals=true -blender/meshes/export_geometry_nodes_instances=false -blender/meshes/gpu_instances=false -blender/meshes/tangents=true -blender/meshes/skins=2 -blender/meshes/export_bones_deforming_mesh_only=false -blender/materials/unpack_enabled=true -blender/materials/export_materials=1 -blender/animation/limit_playback=true -blender/animation/always_sample=true -blender/animation/group_tracks=true -gltf/naming_version=2 diff --git a/project/assets/environments/props/flower.blend1 b/project/assets/environments/props/flower.blend1 deleted file mode 100644 index 4c4147f4..00000000 Binary files a/project/assets/environments/props/flower.blend1 and /dev/null differ diff --git a/project/assets/environments/props/grass_a.png b/project/assets/environments/props/grass_a.png deleted file mode 100644 index cd8fb434..00000000 Binary files a/project/assets/environments/props/grass_a.png and /dev/null differ diff --git a/project/assets/environments/props/grass_a.png.import b/project/assets/environments/props/grass_a.png.import deleted file mode 100644 index b237508f..00000000 --- a/project/assets/environments/props/grass_a.png.import +++ /dev/null @@ -1,41 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://uujfed6yrp8p" -path.s3tc="res://.godot/imported/grass_a.png-df3280112d606c2f3fb6a8ca84baa85d.s3tc.ctex" -metadata={ -"imported_formats": ["s3tc_bptc"], -"vram_texture": true -} - -[deps] - -source_file="res://assets/environments/props/grass_a.png" -dest_files=["res://.godot/imported/grass_a.png-df3280112d606c2f3fb6a8ca84baa85d.s3tc.ctex"] - -[params] - -compress/mode=2 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=true -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=0 diff --git a/project/assets/environments/props/grass_a.png~ b/project/assets/environments/props/grass_a.png~ deleted file mode 100644 index 8f6c4024..00000000 Binary files a/project/assets/environments/props/grass_a.png~ and /dev/null differ diff --git a/project/assets/environments/props/rock_a.blend b/project/assets/environments/props/rock_a.blend deleted file mode 100644 index 2dae9d3d..00000000 Binary files a/project/assets/environments/props/rock_a.blend and /dev/null differ diff --git a/project/assets/environments/props/rock_a.blend.import b/project/assets/environments/props/rock_a.blend.import deleted file mode 100644 index e2848818..00000000 --- a/project/assets/environments/props/rock_a.blend.import +++ /dev/null @@ -1,60 +0,0 @@ -[remap] - -importer="scene" -importer_version=1 -type="PackedScene" -uid="uid://db6ddpj53gl5w" -path="res://.godot/imported/rock_a.blend-b8d8f34d9e140f1b8adb493b605dd07e.scn" - -[deps] - -source_file="res://assets/environments/props/rock_a.blend" -dest_files=["res://.godot/imported/rock_a.blend-b8d8f34d9e140f1b8adb493b605dd07e.scn"] - -[params] - -nodes/root_type="" -nodes/root_name="" -nodes/root_script=null -nodes/apply_root_scale=true -nodes/root_scale=1.0 -nodes/import_as_skeleton_bones=false -nodes/use_name_suffixes=true -nodes/use_node_type_suffixes=true -meshes/ensure_tangents=true -meshes/generate_lods=true -meshes/create_shadow_meshes=true -meshes/light_baking=1 -meshes/lightmap_texel_size=0.2 -meshes/force_disable_compression=false -skins/use_named_skins=true -animation/import=true -animation/fps=30 -animation/trimming=false -animation/remove_immutable_tracks=true -animation/import_rest_as_RESET=false -import_script/path="uid://ba7qlhj5ylm3d" -materials/extract=0 -materials/extract_format=0 -materials/extract_path="" -_subresources={} -blender/nodes/visible=0 -blender/nodes/active_collection_only=false -blender/nodes/punctual_lights=true -blender/nodes/cameras=true -blender/nodes/custom_properties=true -blender/nodes/modifiers=1 -blender/meshes/colors=false -blender/meshes/uvs=true -blender/meshes/normals=true -blender/meshes/export_geometry_nodes_instances=false -blender/meshes/gpu_instances=false -blender/meshes/tangents=true -blender/meshes/skins=2 -blender/meshes/export_bones_deforming_mesh_only=false -blender/materials/unpack_enabled=true -blender/materials/export_materials=1 -blender/animation/limit_playback=true -blender/animation/always_sample=true -blender/animation/group_tracks=true -gltf/naming_version=2 diff --git a/project/assets/environments/props/rock_a.blend1 b/project/assets/environments/props/rock_a.blend1 deleted file mode 100644 index 6054e159..00000000 Binary files a/project/assets/environments/props/rock_a.blend1 and /dev/null differ diff --git a/project/assets/environments/props/rock_a.png b/project/assets/environments/props/rock_a.png deleted file mode 100644 index e8b104a4..00000000 Binary files a/project/assets/environments/props/rock_a.png and /dev/null differ diff --git a/project/assets/environments/props/rock_b.blend b/project/assets/environments/props/rock_b.blend deleted file mode 100644 index b89718cd..00000000 Binary files a/project/assets/environments/props/rock_b.blend and /dev/null differ diff --git a/project/assets/environments/props/rock_b.blend.import b/project/assets/environments/props/rock_b.blend.import deleted file mode 100644 index 7160e95a..00000000 --- a/project/assets/environments/props/rock_b.blend.import +++ /dev/null @@ -1,60 +0,0 @@ -[remap] - -importer="scene" -importer_version=1 -type="PackedScene" -uid="uid://517yqaw110pf" -path="res://.godot/imported/rock_b.blend-d76791249d4c14d1c951b842f0208090.scn" - -[deps] - -source_file="res://assets/environments/props/rock_b.blend" -dest_files=["res://.godot/imported/rock_b.blend-d76791249d4c14d1c951b842f0208090.scn"] - -[params] - -nodes/root_type="" -nodes/root_name="" -nodes/root_script=null -nodes/apply_root_scale=true -nodes/root_scale=1.0 -nodes/import_as_skeleton_bones=false -nodes/use_name_suffixes=true -nodes/use_node_type_suffixes=true -meshes/ensure_tangents=true -meshes/generate_lods=true -meshes/create_shadow_meshes=true -meshes/light_baking=1 -meshes/lightmap_texel_size=0.2 -meshes/force_disable_compression=false -skins/use_named_skins=true -animation/import=true -animation/fps=30 -animation/trimming=false -animation/remove_immutable_tracks=true -animation/import_rest_as_RESET=false -import_script/path="uid://ba7qlhj5ylm3d" -materials/extract=0 -materials/extract_format=0 -materials/extract_path="" -_subresources={} -blender/nodes/visible=0 -blender/nodes/active_collection_only=false -blender/nodes/punctual_lights=true -blender/nodes/cameras=true -blender/nodes/custom_properties=true -blender/nodes/modifiers=1 -blender/meshes/colors=false -blender/meshes/uvs=true -blender/meshes/normals=true -blender/meshes/export_geometry_nodes_instances=false -blender/meshes/gpu_instances=false -blender/meshes/tangents=true -blender/meshes/skins=2 -blender/meshes/export_bones_deforming_mesh_only=false -blender/materials/unpack_enabled=true -blender/materials/export_materials=1 -blender/animation/limit_playback=true -blender/animation/always_sample=true -blender/animation/group_tracks=true -gltf/naming_version=2 diff --git a/project/assets/environments/props/rock_b.blend1 b/project/assets/environments/props/rock_b.blend1 deleted file mode 100644 index 13c4e5f0..00000000 Binary files a/project/assets/environments/props/rock_b.blend1 and /dev/null differ diff --git a/project/assets/environments/props/rock_b.png b/project/assets/environments/props/rock_b.png deleted file mode 100644 index 1df0c28d..00000000 Binary files a/project/assets/environments/props/rock_b.png and /dev/null differ diff --git a/project/assets/environments/props/rock_c.blend b/project/assets/environments/props/rock_c.blend deleted file mode 100644 index b369c50e..00000000 Binary files a/project/assets/environments/props/rock_c.blend and /dev/null differ diff --git a/project/assets/environments/props/rock_c.blend.import b/project/assets/environments/props/rock_c.blend.import deleted file mode 100644 index 899d0256..00000000 --- a/project/assets/environments/props/rock_c.blend.import +++ /dev/null @@ -1,60 +0,0 @@ -[remap] - -importer="scene" -importer_version=1 -type="PackedScene" -uid="uid://8n8fduklxduk" -path="res://.godot/imported/rock_c.blend-26ab78e8b85061bd62ef5331656df04c.scn" - -[deps] - -source_file="res://assets/environments/props/rock_c.blend" -dest_files=["res://.godot/imported/rock_c.blend-26ab78e8b85061bd62ef5331656df04c.scn"] - -[params] - -nodes/root_type="" -nodes/root_name="" -nodes/root_script=null -nodes/apply_root_scale=true -nodes/root_scale=1.0 -nodes/import_as_skeleton_bones=false -nodes/use_name_suffixes=true -nodes/use_node_type_suffixes=true -meshes/ensure_tangents=true -meshes/generate_lods=true -meshes/create_shadow_meshes=true -meshes/light_baking=1 -meshes/lightmap_texel_size=0.2 -meshes/force_disable_compression=false -skins/use_named_skins=true -animation/import=true -animation/fps=30 -animation/trimming=false -animation/remove_immutable_tracks=true -animation/import_rest_as_RESET=false -import_script/path="uid://ba7qlhj5ylm3d" -materials/extract=0 -materials/extract_format=0 -materials/extract_path="" -_subresources={} -blender/nodes/visible=0 -blender/nodes/active_collection_only=false -blender/nodes/punctual_lights=true -blender/nodes/cameras=true -blender/nodes/custom_properties=true -blender/nodes/modifiers=1 -blender/meshes/colors=false -blender/meshes/uvs=true -blender/meshes/normals=true -blender/meshes/export_geometry_nodes_instances=false -blender/meshes/gpu_instances=false -blender/meshes/tangents=true -blender/meshes/skins=2 -blender/meshes/export_bones_deforming_mesh_only=false -blender/materials/unpack_enabled=true -blender/materials/export_materials=1 -blender/animation/limit_playback=true -blender/animation/always_sample=true -blender/animation/group_tracks=true -gltf/naming_version=2 diff --git a/project/assets/environments/props/rock_c.blend1 b/project/assets/environments/props/rock_c.blend1 deleted file mode 100644 index 53c1ef52..00000000 Binary files a/project/assets/environments/props/rock_c.blend1 and /dev/null differ diff --git a/project/assets/environments/props/rock_c.png b/project/assets/environments/props/rock_c.png deleted file mode 100644 index 16ec8ed9..00000000 Binary files a/project/assets/environments/props/rock_c.png and /dev/null differ diff --git a/project/assets/environments/props/tree.blend b/project/assets/environments/props/tree.blend deleted file mode 100644 index 7c45b961..00000000 Binary files a/project/assets/environments/props/tree.blend and /dev/null differ diff --git a/project/assets/environments/props/tree.blend.import b/project/assets/environments/props/tree.blend.import deleted file mode 100644 index 373da191..00000000 --- a/project/assets/environments/props/tree.blend.import +++ /dev/null @@ -1,60 +0,0 @@ -[remap] - -importer="scene" -importer_version=1 -type="PackedScene" -uid="uid://bnm0go8negvo7" -path="res://.godot/imported/tree.blend-20cb45b772c5003289278d8ec4060a00.scn" - -[deps] - -source_file="res://assets/environments/props/tree.blend" -dest_files=["res://.godot/imported/tree.blend-20cb45b772c5003289278d8ec4060a00.scn"] - -[params] - -nodes/root_type="" -nodes/root_name="" -nodes/root_script=null -nodes/apply_root_scale=true -nodes/root_scale=1.0 -nodes/import_as_skeleton_bones=false -nodes/use_name_suffixes=true -nodes/use_node_type_suffixes=true -meshes/ensure_tangents=true -meshes/generate_lods=true -meshes/create_shadow_meshes=true -meshes/light_baking=1 -meshes/lightmap_texel_size=0.2 -meshes/force_disable_compression=false -skins/use_named_skins=true -animation/import=true -animation/fps=30 -animation/trimming=false -animation/remove_immutable_tracks=true -animation/import_rest_as_RESET=false -import_script/path="uid://ba7qlhj5ylm3d" -materials/extract=0 -materials/extract_format=0 -materials/extract_path="" -_subresources={} -blender/nodes/visible=0 -blender/nodes/active_collection_only=false -blender/nodes/punctual_lights=true -blender/nodes/cameras=true -blender/nodes/custom_properties=true -blender/nodes/modifiers=1 -blender/meshes/colors=false -blender/meshes/uvs=true -blender/meshes/normals=true -blender/meshes/export_geometry_nodes_instances=false -blender/meshes/gpu_instances=false -blender/meshes/tangents=true -blender/meshes/skins=2 -blender/meshes/export_bones_deforming_mesh_only=false -blender/materials/unpack_enabled=true -blender/materials/export_materials=1 -blender/animation/limit_playback=true -blender/animation/always_sample=true -blender/animation/group_tracks=true -gltf/naming_version=2 diff --git a/project/assets/environments/props/tree.blend1 b/project/assets/environments/props/tree.blend1 deleted file mode 100644 index 1c795ec8..00000000 Binary files a/project/assets/environments/props/tree.blend1 and /dev/null differ diff --git a/project/assets/environments/props/tree.png b/project/assets/environments/props/tree.png deleted file mode 100644 index 3345b586..00000000 Binary files a/project/assets/environments/props/tree.png and /dev/null differ diff --git a/project/assets/environments/props/tree.png.import b/project/assets/environments/props/tree.png.import deleted file mode 100644 index 7f195343..00000000 --- a/project/assets/environments/props/tree.png.import +++ /dev/null @@ -1,41 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cvfsvh8tdpflf" -path.bptc="res://.godot/imported/tree.png-b3baca9a70a35e7b7075603680fb265f.bptc.ctex" -metadata={ -"imported_formats": ["s3tc_bptc"], -"vram_texture": true -} - -[deps] - -source_file="res://assets/environments/props/tree.png" -dest_files=["res://.godot/imported/tree.png-b3baca9a70a35e7b7075603680fb265f.bptc.ctex"] - -[params] - -compress/mode=2 -compress/high_quality=true -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=true -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=0 diff --git a/project/assets/environments/terrain/textures/rock_texture.tres b/project/assets/environments/terrain/textures/rock_texture.tres deleted file mode 100644 index b881ca1b..00000000 --- a/project/assets/environments/terrain/textures/rock_texture.tres +++ /dev/null @@ -1,7 +0,0 @@ -[gd_resource type="FastNoiseLite" format=3 uid="uid://xxd1cr8y6ooh"] - -[resource] -noise_type = 4 -seed = 3 -frequency = 0.0086 -fractal_gain = 1.0 diff --git a/project/assets/style/base_outline_material.tres b/project/assets/style/base_outline_material.tres deleted file mode 100644 index 723181a0..00000000 --- a/project/assets/style/base_outline_material.tres +++ /dev/null @@ -1,16 +0,0 @@ -[gd_resource type="StandardMaterial3D" format=3 uid="uid://cd4vnmrmj8cj7"] - -[resource] -transparency = 2 -alpha_scissor_threshold = 0.5 -alpha_antialiasing_mode = 0 -cull_mode = 1 -shading_mode = 0 -diffuse_mode = 3 -specular_mode = 2 -vertex_color_use_as_albedo = true -albedo_color = Color(0.121152334, 0.121152334, 0.121152334, 1) -grow = true -grow_amount = 0.02 -proximity_fade_distance = 0.1 -stencil_outline_thickness = 0.029 diff --git a/project/assets/style/detail_outline_material.tres b/project/assets/style/detail_outline_material.tres deleted file mode 100644 index 189cd35a..00000000 --- a/project/assets/style/detail_outline_material.tres +++ /dev/null @@ -1,17 +0,0 @@ -[gd_resource type="StandardMaterial3D" format=3 uid="uid://02s3lq67141v"] - -[resource] -transparency = 2 -alpha_scissor_threshold = 0.94 -alpha_antialiasing_mode = 0 -cull_mode = 1 -shading_mode = 0 -diffuse_mode = 3 -specular_mode = 2 -vertex_color_use_as_albedo = true -albedo_color = Color(0.121152334, 0.121152334, 0.121152334, 1) -grow = true -grow_amount = 0.02 -proximity_fade_enabled = true -proximity_fade_distance = 0.3 -stencil_outline_thickness = 0.029 diff --git a/project/assets/style/model_importer.gd b/project/assets/style/model_importer.gd deleted file mode 100644 index f00c0533..00000000 --- a/project/assets/style/model_importer.gd +++ /dev/null @@ -1,36 +0,0 @@ -@tool -extends EditorScenePostImport - -var regular_outline_material : StandardMaterial3D -var detail_outline_material : StandardMaterial3D -var thin_outline_material : StandardMaterial3D - -func _post_import(root : Node): - regular_outline_material = ResourceLoader.load("res://assets/style/base_outline_material.tres") as StandardMaterial3D - detail_outline_material = ResourceLoader.load("res://assets/style/detail_outline_material.tres") as StandardMaterial3D - thin_outline_material = ResourceLoader.load("res://assets/style/thin_outline_material.tres") as StandardMaterial3D - apply_outline_recursive(root) - return root - -func get_flag(node : Node, flag : String) -> bool: - if node.name.contains(flag): - node.name = node.name.erase(node.name.find(flag), flag.length()) - return true - else: - return false - -func apply_outline_recursive(node : Node): - if node != null: - var outline : bool = not get_flag(node, "-nooutline") - if outline and node is MeshInstance3D: - var detail : bool = get_flag(node, "-detailoutline") - var thin : bool = get_flag(node, "-thinoutline") - var mesh : MeshInstance3D = (node as MeshInstance3D) - if detail and detail_outline_material: - mesh.material_overlay = detail_outline_material - elif thin and thin_outline_material: - mesh.material_overlay = thin_outline_material - elif regular_outline_material: - mesh.material_overlay = regular_outline_material - for child in node.get_children(): - apply_outline_recursive(child) diff --git a/project/assets/style/model_importer.gd.uid b/project/assets/style/model_importer.gd.uid deleted file mode 100644 index f6d2d38b..00000000 --- a/project/assets/style/model_importer.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ba7qlhj5ylm3d diff --git a/project/assets/style/terrain_material.tres b/project/assets/style/terrain_material.tres deleted file mode 100644 index e915de60..00000000 --- a/project/assets/style/terrain_material.tres +++ /dev/null @@ -1,57 +0,0 @@ -[gd_resource type="ShaderMaterial" format=3 uid="uid://b2gybv8h8h0u0"] - -[ext_resource type="Material" uid="uid://xkuv2ykmgtvy" path="res://assets/style/terrain_outline_material.tres" id="1_3a5j4"] -[ext_resource type="Shader" uid="uid://c60nelvuk52q5" path="res://assets/style/terrain_shader.gdshader" id="1_8t1yb"] -[ext_resource type="FastNoiseLite" uid="uid://xxd1cr8y6ooh" path="res://assets/environments/terrain/textures/rock_texture.tres" id="3_2vqw0"] - -[sub_resource type="Gradient" id="Gradient_3a5j4"] -colors = PackedColorArray(0.41641998, 0.47, 0.3807, 1, 0.4736, 0.64, 0.3904, 1) - -[sub_resource type="FastNoiseLite" id="FastNoiseLite_2vqw0"] -frequency = 0.0001 -fractal_octaves = 10 -fractal_lacunarity = 6.732 -fractal_gain = 1.0 - -[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_2skdn"] -width = 1024 -height = 1024 -noise = SubResource("FastNoiseLite_2vqw0") -color_ramp = SubResource("Gradient_3a5j4") -seamless = true - -[sub_resource type="Gradient" id="Gradient_2vqw0"] -colors = PackedColorArray(0.6158351, 0.6158347, 0.6158345, 1, 0.4259616, 0.4259616, 0.42596146, 1) - -[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_pkl7k"] -width = 1024 -height = 1024 -noise = ExtResource("3_2vqw0") -color_ramp = SubResource("Gradient_2vqw0") -seamless_blend_skirt = 0.0 - -[resource] -render_priority = 0 -next_pass = ExtResource("1_3a5j4") -shader = ExtResource("1_8t1yb") -shader_parameter/floor_1_albedo = SubResource("NoiseTexture2D_2skdn") -shader_parameter/floor_1_roughness = 0.7 -shader_parameter/floor_1_tiling = 1.0 -shader_parameter/floor_1_specular = 0.5 -shader_parameter/floor_1_metallic = 0.5 -shader_parameter/floor_2_roughness = 0.7 -shader_parameter/floor_2_tiling = 500.0 -shader_parameter/floor_2_specular = 0.5 -shader_parameter/floor_2_metallic = 0.5 -shader_parameter/floor_3_roughness = 0.7 -shader_parameter/floor_3_tiling = 500.0 -shader_parameter/floor_3_specular = 0.5 -shader_parameter/floor_3_metallic = 0.5 -shader_parameter/region_blending = 1.0 -shader_parameter/slope_threshold = 0.355 -shader_parameter/slope_blend_distance = 0.028 -shader_parameter/slope_albedo = SubResource("NoiseTexture2D_pkl7k") -shader_parameter/slope_tiling = 0.106 -shader_parameter/slope_roughness = 0.7 -shader_parameter/slope_specular = 0.5 -shader_parameter/slope_metallic = 0.5 diff --git a/project/assets/style/terrain_outline_material.tres b/project/assets/style/terrain_outline_material.tres deleted file mode 100644 index 37edd7e5..00000000 --- a/project/assets/style/terrain_outline_material.tres +++ /dev/null @@ -1,31 +0,0 @@ -[gd_resource type="StandardMaterial3D" format=3 uid="uid://xkuv2ykmgtvy"] - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_e6s0j"] -render_priority = 1 -transparency = 2 -alpha_scissor_threshold = 1.0 -alpha_antialiasing_mode = 0 -shading_mode = 0 -albedo_color = Color(0, 0, 0, 1) -grow = true -grow_amount = 0.06 -proximity_fade_enabled = true -proximity_fade_distance = 4.1 -stencil_mode = 3 -stencil_flags = 1 -stencil_compare = 5 -metadata/_stencil_owned = true - -[resource] -next_pass = SubResource("StandardMaterial3D_e6s0j") -transparency = 2 -alpha_scissor_threshold = 1.0 -alpha_antialiasing_mode = 0 -shading_mode = 0 -diffuse_mode = 3 -specular_mode = 2 -albedo_color = Color(1, 1, 1, 0) -proximity_fade_distance = 0.1 -stencil_mode = 1 -stencil_flags = 2 -stencil_outline_thickness = 0.06 diff --git a/project/assets/style/terrain_shader.gdshader b/project/assets/style/terrain_shader.gdshader deleted file mode 100644 index fecf6e67..00000000 --- a/project/assets/style/terrain_shader.gdshader +++ /dev/null @@ -1,119 +0,0 @@ -shader_type spatial; -render_mode blend_mix, depth_draw_opaque, diffuse_lambert, specular_schlick_ggx, skip_vertex_transform; - -varying vec3 var_model_normal; -varying vec3 var_vertex_position; - -group_uniforms Floor1; -uniform sampler2D floor_1_albedo : source_color, hint_default_black, filter_linear_mipmap; -uniform sampler2D floor_1_normal : hint_normal, filter_linear_mipmap; -uniform float floor_1_roughness = 0.7; -uniform float floor_1_tiling = 500.0; -uniform float floor_1_specular = 0.5; -uniform float floor_1_metallic = 0.5; - -group_uniforms Floor2; -uniform sampler2D floor_2_albedo : source_color, hint_default_black, filter_linear_mipmap; -uniform sampler2D floor_2_normal : hint_normal, filter_linear_mipmap; -uniform float floor_2_roughness = 0.7; -uniform float floor_2_tiling = 500.0; -uniform float floor_2_specular = 0.5; -uniform float floor_2_metallic = 0.5; - -group_uniforms Floor3; -uniform sampler2D floor_3_albedo : source_color, hint_default_black, filter_linear_mipmap; -uniform sampler2D floor_3_normal : hint_normal, filter_linear_mipmap; -uniform float floor_3_roughness = 0.7; -uniform float floor_3_tiling = 500.0; -uniform float floor_3_specular = 0.5; -uniform float floor_3_metallic = 0.5; - -group_uniforms Regions; -uniform sampler2D floor_region_map : hint_default_black, filter_linear_mipmap; -uniform float region_blending : hint_range(0, 10) = 1.0; - -group_uniforms Slope.Textures; -uniform sampler2D slope_albedo : source_color, hint_default_white; -uniform sampler2D slope_normal : hint_normal, filter_linear_mipmap; - -uniform float slope_tiling = 100.0; -uniform float slope_roughness = 0.7; -uniform float slope_specular = 0.5; -uniform float slope_metallic = 0.5; - -group_uniforms; group_uniforms Slope; -uniform float slope_threshold = 0.9; -uniform float slope_blend_distance = 0.05; - -void vertex() { - var_model_normal = NORMAL; - var_vertex_position = (vec4(VERTEX, 1.0) * MODEL_MATRIX).xyz; - VERTEX = (MODELVIEW_MATRIX * vec4(VERTEX, 1.0)).xyz; - NORMAL = normalize(MODELVIEW_MATRIX * vec4(NORMAL, 0.0)).xyz; - TANGENT = normalize(MODELVIEW_MATRIX * vec4(TANGENT, 0.0)).xyz; - BINORMAL = normalize(MODELVIEW_MATRIX * vec4(BINORMAL, 0.0)).xyz; -} - -vec3 lerp(vec3 a, vec3 b, float t) { - return (1.0 - t) * a + b * t; -} - -float lerpf(float a, float b, float t) { - return (1.0 - t) * a + b * t; -} - -vec2 lerp2(vec2 a, vec2 b, float t) { - return (1.0 - t) * a + b * t; -} - -// adapted from https://github.com/Experience-Monks/glsl-fast-gaussian-blur/blob/master/9.glsl -vec4 sample_texture_blurred(sampler2D tex, vec2 uv) { - if(region_blending == 0.0) // short-circuit for zero case - return texture(tex, uv); - vec4 color = vec4(0.0); - vec2 resolution = vec2(textureSize(tex, 0)); - vec2 offset_1 = vec2(1.3846153846) * region_blending; - vec2 offset_2 = vec2(3.2307692308) * region_blending; - // add weighted samples. Magic numbers are pre-computed gaussian function results - color += texture(tex, uv) * 0.2270270270; - color += texture(tex, uv + (offset_1 / resolution)) * 0.3162162162; - color += texture(tex, uv - (offset_1 / resolution)) * 0.3162162162; - color += texture(tex, uv + (offset_2 / resolution)) * 0.0702702703; - color += texture(tex, uv - (offset_2 / resolution)) * 0.0702702703; - return color; -} - -void fragment() { - float slope_blend = clamp(slope_threshold + ((acos(abs(var_model_normal.y)) / (PI * 0.5) - slope_threshold) * 1.0/slope_blend_distance), 0.0, 1.0); - - vec4 region_masks = sample_texture_blurred(floor_region_map, UV); - vec2 sqr_normal = normalize(var_model_normal.xz * var_model_normal.xz); - float biplanar_index = round(abs(sqr_normal.x)); - vec2 slope_uv = lerp2(var_vertex_position.xy, var_vertex_position.yz, biplanar_index); - - ALBEDO = texture(floor_1_albedo, UV * floor_1_tiling).xyz; - ALBEDO = lerp(ALBEDO, texture(floor_2_albedo, UV * floor_2_tiling).xyz, region_masks.x); - ALBEDO = lerp(ALBEDO, texture(floor_3_albedo, UV * floor_3_tiling).xyz, region_masks.y); - ALBEDO = lerp(ALBEDO, texture(slope_albedo, slope_uv * slope_tiling).xyz, slope_blend); - //ALBEDO = region_masks.xyz; - - NORMAL_MAP = texture(floor_1_normal, UV * floor_1_tiling).xyz; - NORMAL_MAP = lerp(NORMAL_MAP, texture(floor_2_normal, UV * floor_2_tiling).xyz, region_masks.x); - NORMAL_MAP = lerp(NORMAL_MAP, texture(floor_3_normal, UV * floor_3_tiling).xyz, region_masks.y); - NORMAL_MAP = lerp(NORMAL_MAP, texture(slope_normal, slope_uv * slope_tiling).xyz, slope_blend); - - SPECULAR = floor_1_specular; - SPECULAR = lerpf(SPECULAR, floor_2_specular, region_masks.x); - SPECULAR = lerpf(SPECULAR, floor_3_specular, region_masks.y); - SPECULAR = lerpf(SPECULAR, slope_specular, slope_blend); - - ROUGHNESS = floor_1_roughness; - ROUGHNESS = lerpf(ROUGHNESS, floor_2_roughness, region_masks.x); - ROUGHNESS = lerpf(ROUGHNESS, floor_3_roughness, region_masks.y); - ROUGHNESS = lerpf(ROUGHNESS, slope_roughness, slope_blend); - - METALLIC = floor_1_metallic; - METALLIC = lerpf(METALLIC, floor_2_metallic, region_masks.x); - METALLIC = lerpf(METALLIC, floor_3_metallic, region_masks.y); - METALLIC = lerpf(METALLIC, slope_metallic, slope_blend); -} diff --git a/project/assets/style/terrain_shader.gdshader.uid b/project/assets/style/terrain_shader.gdshader.uid deleted file mode 100644 index 4b2fb5b0..00000000 --- a/project/assets/style/terrain_shader.gdshader.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c60nelvuk52q5 diff --git a/project/assets/style/thin_outline_material.tres b/project/assets/style/thin_outline_material.tres deleted file mode 100644 index c9b353e8..00000000 --- a/project/assets/style/thin_outline_material.tres +++ /dev/null @@ -1,22 +0,0 @@ -[gd_resource type="StandardMaterial3D" format=3 uid="uid://vo4kk73alewq"] - -[ext_resource type="Material" uid="uid://02s3lq67141v" path="res://assets/style/detail_outline_material.tres" id="1_jjhui"] - -[resource] -next_pass = ExtResource("1_jjhui") -transparency = 2 -alpha_scissor_threshold = 0.9 -alpha_antialiasing_mode = 0 -cull_mode = 1 -shading_mode = 0 -diffuse_mode = 3 -specular_mode = 2 -vertex_color_use_as_albedo = true -albedo_color = Color(0.121152334, 0.121152334, 0.121152334, 1) -grow = true -grow_amount = 0.007 -proximity_fade_distance = 0.1 -distance_fade_mode = 1 -distance_fade_min_distance = 10.0 -distance_fade_max_distance = 9.0 -stencil_outline_thickness = 0.029 diff --git a/project/assets/vehicles/bike.blend b/project/assets/vehicles/bike.blend deleted file mode 100644 index ef724d37..00000000 Binary files a/project/assets/vehicles/bike.blend and /dev/null differ diff --git a/project/assets/vehicles/bike.blend.import b/project/assets/vehicles/bike.blend.import deleted file mode 100644 index fe627e68..00000000 --- a/project/assets/vehicles/bike.blend.import +++ /dev/null @@ -1,60 +0,0 @@ -[remap] - -importer="scene" -importer_version=1 -type="PackedScene" -uid="uid://dkq8b07op54lx" -path="res://.godot/imported/bike.blend-8d249f74417ff10660977200f19cdfc5.scn" - -[deps] - -source_file="res://assets/vehicles/bike.blend" -dest_files=["res://.godot/imported/bike.blend-8d249f74417ff10660977200f19cdfc5.scn"] - -[params] - -nodes/root_type="" -nodes/root_name="" -nodes/root_script=null -nodes/apply_root_scale=true -nodes/root_scale=1.0 -nodes/import_as_skeleton_bones=false -nodes/use_name_suffixes=true -nodes/use_node_type_suffixes=true -meshes/ensure_tangents=true -meshes/generate_lods=true -meshes/create_shadow_meshes=true -meshes/light_baking=1 -meshes/lightmap_texel_size=0.2 -meshes/force_disable_compression=false -skins/use_named_skins=true -animation/import=true -animation/fps=30 -animation/trimming=false -animation/remove_immutable_tracks=true -animation/import_rest_as_RESET=false -import_script/path="uid://ba7qlhj5ylm3d" -materials/extract=0 -materials/extract_format=0 -materials/extract_path="" -_subresources={} -blender/nodes/visible=0 -blender/nodes/active_collection_only=false -blender/nodes/punctual_lights=true -blender/nodes/cameras=true -blender/nodes/custom_properties=true -blender/nodes/modifiers=1 -blender/meshes/colors=false -blender/meshes/uvs=true -blender/meshes/normals=true -blender/meshes/export_geometry_nodes_instances=false -blender/meshes/gpu_instances=false -blender/meshes/tangents=true -blender/meshes/skins=2 -blender/meshes/export_bones_deforming_mesh_only=false -blender/materials/unpack_enabled=true -blender/materials/export_materials=1 -blender/animation/limit_playback=true -blender/animation/always_sample=true -blender/animation/group_tracks=true -gltf/naming_version=2 diff --git a/project/assets/vehicles/bike.blend1 b/project/assets/vehicles/bike.blend1 deleted file mode 100644 index 7c3cc2b0..00000000 Binary files a/project/assets/vehicles/bike.blend1 and /dev/null differ diff --git a/project/assets/vehicles/sidecar.png b/project/assets/vehicles/sidecar.png deleted file mode 100644 index a6bfd9cb..00000000 Binary files a/project/assets/vehicles/sidecar.png and /dev/null differ diff --git a/project/data/character_data/fallback_character_data.tres b/project/data/character_data/fallback_character_data.tres deleted file mode 100644 index 8c0d83cb..00000000 --- a/project/data/character_data/fallback_character_data.tres +++ /dev/null @@ -1,4 +0,0 @@ -[gd_resource type="CharacterData" format=3 uid="uid://d28pn4xekwh6p"] - -[resource] -speed = 2.0 diff --git a/project/data/default_player_character.tres b/project/data/default_player_character.tres deleted file mode 100644 index 3fb998bd..00000000 --- a/project/data/default_player_character.tres +++ /dev/null @@ -1,4 +0,0 @@ -[gd_resource type="CharacterData" format=3 uid="uid://bmudhddb0vedg"] - -[resource] -speed = 2.0 diff --git a/project/icon.svg.import b/project/icon.svg.import index f082c774..869157e0 100644 --- a/project/icon.svg.import +++ b/project/icon.svg.import @@ -18,8 +18,6 @@ dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -27,10 +25,6 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/project/level_props/tent.tscn b/project/level_props/tent.tscn new file mode 100644 index 00000000..065f9c5c --- /dev/null +++ b/project/level_props/tent.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=3 format=3 uid="uid://dkgep77ogr1tv"] + +[ext_resource type="Material" uid="uid://cupy5mpdsngcl" path="res://materials/grids/tent.tres" id="1_yfc7x"] + +[sub_resource type="BoxMesh" id="BoxMesh_dudpm"] +size = Vector3(3, 1.3, 2) + +[node name="Tent" type="Node3D"] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.658981, 0) +material_override = ExtResource("1_yfc7x") +mesh = SubResource("BoxMesh_dudpm") diff --git a/project/locales/city.tscn b/project/locales/city.tscn new file mode 100644 index 00000000..c31fb667 --- /dev/null +++ b/project/locales/city.tscn @@ -0,0 +1,39 @@ +[gd_scene load_steps=6 format=3 uid="uid://bqaoxvqgrbi3v"] + +[ext_resource type="Material" uid="uid://cbuk8uxxuj7j5" path="res://materials/grids/grass.tres" id="1_etye1"] +[ext_resource type="PackedScene" uid="uid://cykd1a23ria6k" path="res://objects/characters/player_actor.tscn" id="3_vuk2b"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_sb1vi"] +sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) +ground_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) + +[sub_resource type="Sky" id="Sky_vuk2b"] +sky_material = SubResource("ProceduralSkyMaterial_sb1vi") + +[sub_resource type="Environment" id="Environment_wwygw"] +background_mode = 2 +sky = SubResource("Sky_vuk2b") +tonemap_mode = 2 +glow_enabled = true + +[node name="City" type="Node"] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_wwygw") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0) +shadow_enabled = true + +[node name="CampEntrance" type="Node3D" parent="."] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.2797, -0.00393486, -42.0831) + +[node name="PlayerActor" parent="." instance=ExtResource("3_vuk2b")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0171704, -0.00572681, 0.28793) + +[node name="CSGBox3D" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.505729, 0) +use_collision = true +size = Vector3(100, 1, 100) +material = ExtResource("1_etye1") diff --git a/project/materials/grids/bricks.tres b/project/materials/grids/bricks.tres new file mode 100644 index 00000000..1911e356 --- /dev/null +++ b/project/materials/grids/bricks.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://ke4yek3xtin5"] + +[ext_resource type="Texture2D" uid="uid://cd4cchmulwnc5" path="res://textures/grids/bricks.png" id="1_ustix"] + +[resource] +albedo_texture = ExtResource("1_ustix") +uv1_triplanar = true diff --git a/project/materials/grids/grass.tres b/project/materials/grids/grass.tres new file mode 100644 index 00000000..ebb67f75 --- /dev/null +++ b/project/materials/grids/grass.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://cbuk8uxxuj7j5"] + +[ext_resource type="Texture2D" uid="uid://f8djywm2jlah" path="res://textures/grids/grass.png" id="1_lqti4"] + +[resource] +albedo_texture = ExtResource("1_lqti4") +uv1_triplanar = true diff --git a/project/materials/grids/mud.tres b/project/materials/grids/mud.tres new file mode 100644 index 00000000..6b69d38e --- /dev/null +++ b/project/materials/grids/mud.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://blcccgo88gl7c"] + +[ext_resource type="Texture2D" uid="uid://br64q04tpxmli" path="res://textures/grids/mud.png" id="1_kexk5"] + +[resource] +albedo_texture = ExtResource("1_kexk5") +uv1_triplanar = true diff --git a/project/materials/grids/tent.tres b/project/materials/grids/tent.tres new file mode 100644 index 00000000..6f791f11 --- /dev/null +++ b/project/materials/grids/tent.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://cupy5mpdsngcl"] + +[ext_resource type="Texture2D" uid="uid://bh68a5vqm5h7l" path="res://textures/grids/tent.png" id="1_ifivq"] + +[resource] +albedo_texture = ExtResource("1_ifivq") +uv1_triplanar = true diff --git a/project/objects/characters/player_actor.tscn b/project/objects/characters/player_actor.tscn new file mode 100644 index 00000000..c499369d --- /dev/null +++ b/project/objects/characters/player_actor.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=3 format=3 uid="uid://cykd1a23ria6k"] + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_7py3r"] + +[sub_resource type="CylinderMesh" id="CylinderMesh_66ixd"] + +[node name="PlayerActor" type="PlayerActor"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +shape = SubResource("CapsuleShape3D_7py3r") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +mesh = SubResource("CylinderMesh_66ixd") + +[node name="PlayerInput" type="PlayerInput" parent="."] +unique_name_in_owner = true + +[node name="Camera3D" type="ThirdPersonCamera" parent="."] +transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 4.76837e-07, 1.8675, -2.90407) diff --git a/project/objects/party_member.tscn b/project/objects/party_member.tscn deleted file mode 100644 index 815bf819..00000000 --- a/project/objects/party_member.tscn +++ /dev/null @@ -1,24 +0,0 @@ -[gd_scene format=3 uid="uid://dfbdn64i7vfuc"] - -[ext_resource type="CharacterData" uid="uid://d28pn4xekwh6p" path="res://data/character_data/fallback_character_data.tres" id="1_0torn"] - -[sub_resource type="CylinderMesh" id="CylinderMesh_0torn"] - -[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_4iifp"] - -[node name="PartyMember" type="Character" unique_id=2124931928] -data = ExtResource("1_0torn") - -[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=2087924260] -mesh = SubResource("CylinderMesh_0torn") -skeleton = NodePath("../CollisionShape3D") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=705075802] -shape = SubResource("CapsuleShape3D_4iifp") - -[node name="PartyMemberFollow" type="PartyMemberFollow" parent="." unique_id=1261360781] -start_active = true - -[node name="NavigationAgent3D" type="NavigationAgent3D" parent="." unique_id=1509674092] -unique_name_in_owner = true -avoidance_enabled = true diff --git a/project/objects/player_character.tscn b/project/objects/player_character.tscn deleted file mode 100644 index d94c6468..00000000 --- a/project/objects/player_character.tscn +++ /dev/null @@ -1,42 +0,0 @@ -[gd_scene format=3 uid="uid://dcqd0wo5y5a1g"] - -[ext_resource type="CharacterData" uid="uid://bmudhddb0vedg" path="res://data/default_player_character.tres" id="1_jy05a"] - -[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_vcg8s"] - -[sub_resource type="CylinderMesh" id="CylinderMesh_5kd2n"] - -[node name="PlayerCharacter" type="PlayerCharacter" unique_id=159035892] -data = ExtResource("1_jy05a") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=511026275] -shape = SubResource("CapsuleShape3D_vcg8s") - -[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=957221075] -mesh = SubResource("CylinderMesh_5kd2n") - -[node name="Camera3D" type="Camera3D" parent="." unique_id=932811285] -transform = Transform3D(-1, 5.660465e-08, -6.662324e-08, 0, 0.762081, 0.64748174, 8.742278e-08, 0.64748174, -0.762081, 9.536743e-07, 5.8584056, -4.4809494) -current = true -far = 1000.0 - -[node name="PlayerInputState" type="PlayerInputState" parent="." unique_id=1290843255] -start_active = true - -[node name="PlayerMovementState" type="PlayerMovementState" parent="." unique_id=71639209] - -[node name="NavMarker" type="NavMarker" parent="." unique_id=2076207950] -transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 2.0248106, 0, -1.4610382) -gizmo_extents = 3.0 - -[node name="NavMarker2" type="NavMarker" parent="." unique_id=786944405] -transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -0.54701775, 9.536743e-07, -2.7108493) -gizmo_extents = 3.0 - -[node name="NavMarker4" type="NavMarker" parent="." unique_id=1781147686] -transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0.8027056, 9.536743e-07, -2.7077246) -gizmo_extents = 3.0 - -[node name="NavMarker3" type="NavMarker" parent="." unique_id=430426412] -transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -2.0046833, 9.536743e-07, -1.4623514) -gizmo_extents = 3.0 diff --git a/project/objects/player_vehicle.tscn b/project/objects/player_vehicle.tscn deleted file mode 100644 index c9282027..00000000 --- a/project/objects/player_vehicle.tscn +++ /dev/null @@ -1,78 +0,0 @@ -[gd_scene format=3 uid="uid://bedet0our63p0"] - -[ext_resource type="PackedScene" uid="uid://dkq8b07op54lx" path="res://assets/vehicles/bike.blend" id="1_qt1cm"] -[ext_resource type="PackedScene" uid="uid://grb3q5nd2uds" path="res://assets/characters/player_fem/character_fem.blend" id="2_buo3h"] - -[sub_resource type="BoxShape3D" id="BoxShape3D_7eqww"] -size = Vector3(0.36328125, 0.5884735, 0.9517517) - -[sub_resource type="BoxShape3D" id="BoxShape3D_we6jx"] -size = Vector3(0.21679688, 0.29020843, 0.87223816) - -[sub_resource type="BoxShape3D" id="BoxShape3D_kok0e"] -size = Vector3(0.8516388, 0.81409013, 1.4329796) - -[sub_resource type="BoxShape3D" id="BoxShape3D_khxbi"] -size = Vector3(0.7451172, 0.59351885, 0.5995445) - -[node name="PlayerVehicle" type="VehicleBody3D" unique_id=2037675333] -mass = 400.0 - -[node name="bike" parent="." unique_id=1819523012 instance=ExtResource("1_qt1cm")] -transform = Transform3D(1.0000004, 0, 0, 0, 1.0000001, 0, 0, 0, 0.9999994, -0.48627073, 0, 0) - -[node name="character_fem" parent="bike" unique_id=111626287 instance=ExtResource("2_buo3h")] - -[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1803684826] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.48627073, 0.7048377, 0.074576735) -shape = SubResource("BoxShape3D_7eqww") - -[node name="CollisionShape3D3" type="CollisionShape3D" parent="." unique_id=781828471] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.48627073, 0.8603005, 0.938115) -shape = SubResource("BoxShape3D_we6jx") - -[node name="CollisionShape3D2" type="CollisionShape3D" parent="." unique_id=1277628977] -transform = Transform3D(1, 0, 0, 0, 0.9983196, 0.057947356, 0, -0.057947356, 0.9983196, 0.2234863, 0.62375516, 0.6136677) -shape = SubResource("BoxShape3D_kok0e") - -[node name="CollisionShape3D4" type="CollisionShape3D" parent="." unique_id=2030366048] -transform = Transform3D(1, 0, 0, 0, 0.72955376, -0.6839234, 0, 0.6839234, 0.72955376, 0.2234863, 0.5898677, -0.092960924) -shape = SubResource("BoxShape3D_khxbi") - -[node name="SidecarWheel" type="VehicleWheel3D" parent="." unique_id=1869360183] -transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0.7563137, 0.37474027, 0.7443161) -wheel_roll_influence = 0.3 -wheel_radius = 0.389 -wheel_rest_length = 0.05 -wheel_friction_slip = 1.0 -suspension_travel = 0.1 -suspension_stiffness = 500.0 -suspension_max_force = 10500.0 -damping_compression = 10.0 -damping_relaxation = 11.0 - -[node name="BackWheel" type="VehicleWheel3D" parent="." unique_id=128773497] -transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -0.4791991, 0.37716705, 0.9504494) -use_as_traction = true -wheel_roll_influence = 0.3 -wheel_radius = 0.389 -wheel_rest_length = 0.05 -wheel_friction_slip = 1.0 -suspension_travel = 0.1 -suspension_stiffness = 500.0 -suspension_max_force = 10500.0 -damping_compression = 10.0 -damping_relaxation = 11.0 - -[node name="FrontWheel" type="VehicleWheel3D" parent="." unique_id=1222187628] -transform = Transform3D(-1, 6.4255117e-09, 8.7186315e-08, 4.371139e-08, 0.90043265, 0.43499538, -7.5710346e-08, 0.43499538, -0.90043265, -0.479199, 0.3713468, -0.73007745) -use_as_steering = true -wheel_roll_influence = 0.3 -wheel_radius = 0.389 -wheel_rest_length = 0.05 -wheel_friction_slip = 1.0 -suspension_travel = 0.1 -suspension_stiffness = 500.0 -suspension_max_force = 10500.0 -damping_compression = 10.0 -damping_relaxation = 11.0 diff --git a/project/project.godot b/project/project.godot index 477ade1f..0ee1b8b4 100644 --- a/project/project.godot +++ b/project/project.godot @@ -8,53 +8,60 @@ config_version=5 -[animation] - -compatibility/default_parent_skeleton_in_mesh_instance_3d=true - [application] config/name="authority" -run/main_scene="uid://1qvpc2ej32pd" -config/features=PackedStringArray("4.6", "Forward Plus") +run/main_scene="uid://bqaoxvqgrbi3v" +config/features=PackedStringArray("4.4", "Forward Plus") config/icon="res://icon.svg" [display] -window/size/viewport_width=1920 -window/size/viewport_height=1080 +window/vsync/vsync_mode=2 [input] move_left={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null) ] } move_right={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null) ] } move_forward={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null) ] } -move_backward={ +move_back={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null) +] +} +look_left={ +"deadzone": 0.2, +"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":-1.0,"script":null) +] +} +look_right={ +"deadzone": 0.2, +"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":1.0,"script":null) +] +} +look_up={ +"deadzone": 0.2, +"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":-1.0,"script":null) +] +} +look_down={ +"deadzone": 0.2, +"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null) ] } - -[physics] - -3d/physics_engine="Jolt Physics" - -[rendering] - -lights_and_shadows/directional_shadow/soft_shadow_filter_quality=3 -lights_and_shadows/positional_shadow/soft_shadow_filter_quality=3 -shading/overrides/force_vertex_shading=true -anti_aliasing/quality/msaa_3d=1 -anti_aliasing/quality/use_debanding=true diff --git a/project/scenes/style_test_blockout.scn b/project/scenes/style_test_blockout.scn deleted file mode 100644 index af2e6443..00000000 Binary files a/project/scenes/style_test_blockout.scn and /dev/null differ diff --git a/project/scenes/terrain_test.tscn b/project/scenes/terrain_test.tscn deleted file mode 100644 index 35d59ae8..00000000 --- a/project/scenes/terrain_test.tscn +++ /dev/null @@ -1,520 +0,0 @@ -[gd_scene format=3 uid="uid://d2w73ie2k01xg"] - -[ext_resource type="Material" uid="uid://b2gybv8h8h0u0" path="res://assets/style/terrain_material.tres" id="1_w3uoq"] -[ext_resource type="PackedScene" uid="uid://bedet0our63p0" path="res://objects/player_vehicle.tscn" id="2_o3i6r"] - -[sub_resource type="Curve" id="Curve_o3i6r"] -_limits = [0.0, 1.0, 0.0, 250.0] -_data = [Vector2(0, 1), 0.0, -0.000564178, 0, 0, Vector2(80.44058, 0.53876877), -0.0053130123, -0.0053130123, 0, 0, Vector2(195.52763, 0), 0.0, 0.0, 0, 0] -point_count = 3 - -[sub_resource type="Curve" id="Curve_kbmr5"] -_limits = [0.0, 1.0, 0.0, 250.0] -_data = [Vector2(0, 1), 0.0, -0.011454834, 0, 0, Vector2(27.836594, 0.57186484), -0.01826421, -0.01826421, 0, 0, Vector2(81.50829, 0), 0.0, 0.0, 0, 0] -point_count = 3 - -[sub_resource type="Curve" id="Curve_w3uoq"] -_limits = [0.0, 1.0, 0.0, 400.0] -_data = [Vector2(0, 1), 0.0, -0.013602988, 0, 0, Vector2(134.90071, 0.27425534), -0.002175283, -0.002175283, 0, 0, Vector2(400, 0), 0.0, 0.0, 0, 0] -point_count = 3 - -[sub_resource type="Curve" id="Curve_chm2y"] -_limits = [0.0, 1.0, 0.0, 30.0] -_data = [Vector2(0.9854016, 1), 0.0, 0.001342408, 0, 0, Vector2(15.306657, 0), 0.0, 0.0, 0, 0] -point_count = 2 - -[sub_resource type="Curve" id="Curve_nonsf"] -_limits = [0.0, 1.0, 0.0, 50.0] -_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(28.065836, 0), 0.0, 0.0, 0, 0] -point_count = 2 - -[sub_resource type="Curve" id="Curve_8bl1q"] -_limits = [0.0, 1.0, 0.0, 37.619015] -_data = [Vector2(2.8285055, 1), 0.0, 0.00030598897, 0, 0, Vector2(7.4413185, 0.70596725), -0.09501497, -0.09501497, 0, 0, Vector2(28.640093, 0), 0.0, 0.0, 0, 0] -point_count = 3 - -[sub_resource type="Curve" id="Curve_y4ku2"] -_limits = [0.0, 1.0, 0.0, 10.0] -_data = [Vector2(0.03649634, 1), 0.0, 0.0, 0, 0, Vector2(5.1605268, 0), 0.0, 0.0, 0, 0] -point_count = 2 - -[sub_resource type="Curve" id="Curve_t5bdu"] -_limits = [0.0, 1.0, 0.0, 100.0] -_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(25.620152, 0), 0.0, 0.0, 0, 0] -point_count = 2 - -[sub_resource type="Curve" id="Curve_4kj3c"] -_limits = [0.0, 1.0, 0.0, 4.0] -_data = [Vector2(0.78173465, 1), 0.0, 0.0, 0, 0, Vector2(3.0802917, 0), 0.0, 0.0, 0, 0] -point_count = 2 - -[sub_resource type="BoxMesh" id="BoxMesh_kbmr5"] - -[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_8mrfl"] -sky_top_color = Color(0.28, 0.33600003, 0.56, 1) -sky_horizon_color = Color(0.6590071, 0.7017287, 0.7452071, 1) -ground_bottom_color = Color(0.18026966, 0.32224965, 0.43171933, 1) -ground_horizon_color = Color(0.6590071, 0.7017287, 0.7452071, 1) - -[sub_resource type="Sky" id="Sky_m8orc"] -sky_material = SubResource("ProceduralSkyMaterial_8mrfl") - -[sub_resource type="Environment" id="Environment_1b7vx"] -background_mode = 4 -sky = SubResource("Sky_m8orc") -ambient_light_source = 2 -ambient_light_color = Color(1, 1, 1, 1) -ambient_light_energy = 0.77 -reflected_light_source = 1 -tonemap_mode = 2 -ssao_radius = 16.0 -ssao_intensity = 9.65 -ssao_power = 0.21446471 -ssao_detail = 0.0 -ssao_horizon = 0.57 -ssil_radius = 16.0 -ssil_intensity = 0.65 -fog_enabled = true -fog_mode = 1 -fog_light_color = Color(0.49139997, 0.60203, 0.78, 1) -fog_light_energy = 0.5 -fog_density = 0.0403 -fog_sky_affect = 0.0 -fog_depth_curve = 16.856052 -fog_depth_begin = 20.0 -fog_depth_end = 300.0 - -[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_7eqww"] -dof_blur_far_enabled = true -dof_blur_far_distance = 1000.0 -dof_blur_far_transition = 250.0 -dof_blur_near_enabled = true -dof_blur_near_distance = 1.0 -dof_blur_amount = 0.15 - -[sub_resource type="Compositor" id="Compositor_n0ica"] - -[sub_resource type="SphereMesh" id="SphereMesh_o3i6r"] -flip_faces = true -radius = 1000.0 -height = 2000.0 - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_chm2y"] -shading_mode = 0 -diffuse_mode = 3 -specular_mode = 2 -disable_ambient_light = true -disable_fog = true -disable_specular_occlusion = true -albedo_color = Color(0.3, 0.42, 0.6, 1) - -[node name="Node3D" type="Node3D" unique_id=289500437] - -[node name="Terrain" type="Terrain" parent="." unique_id=1169843565] -mesh_material = ExtResource("1_w3uoq") -side_length = 1000 -chunk_size = 100 -thread_count = 5 - -[node name="TerrainModifierPath" type="TerrainModifierPath" parent="Terrain" unique_id=500036726] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 527.9552, 156.94568, 469.9021) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_o3i6r") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath" unique_id=63933495] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10.727768, 27.24585) -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint3" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath" unique_id=1155422457] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.40332, -148.00479, 208.53348) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath2" type="TerrainModifierPath" parent="Terrain" unique_id=1550750060] -transform = Transform3D(0.48288503, 0, -0.8756837, 0, 1, 0, 0.8756837, 0, 0.48288503, 530.33014, 134.81525, 536.9706) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath2" unique_id=1609891938] -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath2" unique_id=1367243507] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.2888184e-05, -65.97664, 222.74506) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath20" type="TerrainModifierPath" parent="Terrain" unique_id=1586800561] -transform = Transform3D(0.698078, 0, 0.7160218, 0, 1, 0, -0.7160218, 0, 0.698078, 533.4049, 193.15025, 507.87534) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath20" unique_id=2050881854] -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath20" unique_id=67704220] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.0517578e-05, -93.74405, 250.86299) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath21" type="TerrainModifierPath" parent="Terrain" unique_id=1246770278] -transform = Transform3D(0.999794, 0, 0.020296812, 0, 1, 0, -0.020296812, 0, 0.999794, 533.4049, 193.15025, 507.87534) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath21" unique_id=2084266111] -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath21" unique_id=1461090674] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.0517578e-05, -93.74405, 220.57999) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath3" type="TerrainModifierPath" parent="Terrain" unique_id=2064407793] -transform = Transform3D(-0.63132584, 0, -0.7755178, 0, 1, 0, 0.7755178, 0, -0.63132584, 445.88727, 100.93002, 406.61365) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath3" unique_id=1296521601] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 38.57553, -81.23042) -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath3" unique_id=573214409] -transform = Transform3D(0.99999994, 0, -2.9802322e-08, 0, 1, 0, 2.9802322e-08, 0, 0.99999994, -3.0517578e-05, -83.609665, 245.45898) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath5" type="TerrainModifierPath" parent="Terrain" unique_id=1924718139] -transform = Transform3D(0.2912701, 0, 0.95664096, 0, 1, 0, -0.95664096, 0, 0.2912701, 637.15533, 100.93002, 526.10284) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath5" unique_id=1322054759] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 56.078033, -81.23042) -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint3" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath5" unique_id=1185434181] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 14.446152, 75.85295) -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath5" unique_id=849946935] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -43.682602, -59.64598, 256.08853) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath4" type="TerrainModifierPath" parent="Terrain" unique_id=540411389] -transform = Transform3D(-0.8440379, 0, 0.53628373, 0, 1, 0, -0.53628373, 0, -0.8440379, 600.80835, 61.61554, 374.0787) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath4" unique_id=1678990350] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 55.549286, -81.23042) -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath4" unique_id=1688825500] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.9073486e-06, -43.854416, 187.1733) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath6" type="TerrainModifierPath" parent="Terrain" unique_id=1246492097] -transform = Transform3D(-0.60107595, 0, 0.7991921, 0, 1, 0, -0.7991921, 0, -0.60107595, 785.5096, 63.767326, 469.9058) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath6" unique_id=1057552807] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 39.996162, -95.40727) -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath6" unique_id=688840821] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.9073486e-06, -39.37848, 51.337883) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath10" type="TerrainModifierPath" parent="Terrain" unique_id=506496533] -transform = Transform3D(0.17490254, 0, -0.9845859, 0, 1, 0, 0.9845859, 0, 0.17490254, 360.02982, 92.73392, 531.6815) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath10" unique_id=668462153] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.193451e-05, 63.012962, -128.22781) -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath10" unique_id=377527667] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.7656555e-05, -39.60569, 167.20865) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath11" type="TerrainModifierPath" parent="Terrain" unique_id=287512872] -transform = Transform3D(-0.9704014, 0, -0.24149828, 0, 1, 0, 0.24149828, 0, -0.9704014, 419.05066, 65.79582, 297.04688) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath11" unique_id=176270417] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 12.211647, -95.40727) -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath11" unique_id=1284228555] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.7881393e-06, -34.01078, 26.620914) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath13" type="TerrainModifierPath" parent="Terrain" unique_id=1763603070] -transform = Transform3D(-0.5499856, 0, -0.8351743, 0, 1, 0, 0.8351743, 0, -0.5499856, 321.1895, 93.49382, 461.49033) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath13" unique_id=702062470] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 12.211647, -95.40727) -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath13" unique_id=2051689648] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.4616718e-05, -73.33303, 77.81729) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath12" type="TerrainModifierPath" parent="Terrain" unique_id=783401169] -transform = Transform3D(-0.9995774, 0, 0.029073335, 0, 1, 0, -0.029073335, 0, -0.9995774, 547.54956, 74.21756, 306.14352) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath12" unique_id=1133049685] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 12.211647, -95.40727) -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath12" unique_id=487776917] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.9073486e-06, -33.455353, 26.643017) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath7" type="TerrainModifierPath" parent="Terrain" unique_id=1148491436] -transform = Transform3D(-0.11616791, 0, 0.99322957, 0, 1, 0, -0.99322957, 0, -0.11616791, 694.58813, 63.767326, 801.2013) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath7" unique_id=794644782] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 39.996162, -95.40727) -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath7" unique_id=1204537795] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.9073486e-06, 2.738922, 2.5612488) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath15" type="TerrainModifierPath" parent="Terrain" unique_id=377100977] -transform = Transform3D(0.87613845, 0, -0.48205972, 0, 1, 0, 0.48205972, 0, 0.87613845, 442.01587, 63.767326, 873.5542) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath15" unique_id=860393786] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 39.996162, -95.40727) -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath15" unique_id=719904782] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.9073486e-06, -14.427307, 51.337883) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath8" type="TerrainModifierPath" parent="Terrain" unique_id=1073067074] -transform = Transform3D(0.6039318, 0, 0.7970361, 0, 1, 0, -0.7970361, 0, 0.6039318, 652.0465, 63.767326, 849.7488) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath8" unique_id=1717398176] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 39.996162, -95.40727) -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath8" unique_id=997355316] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.861023e-06, -14.427307, 76.71297) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath9" type="TerrainModifierPath" parent="Terrain" unique_id=1532428883] -transform = Transform3D(0.18722665, 0, -0.98231685, 0, 1, 0, 0.98231685, 0, 0.18722665, 399.3637, 63.767326, 767.00494) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath9" unique_id=1986874620] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 39.996162, -95.40727) -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath9" unique_id=1138006167] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.33786e-06, -17.280014, 97.858795) -gizmo_extents = 50.0 - -[node name="TerrainModifierPath14" type="TerrainModifierPath" parent="Terrain" unique_id=1197467315] -transform = Transform3D(0.974878, 0, -0.22274008, 0, 1, 0, 0.22274008, 0, 0.974878, 496.87747, 63.767357, 874.8403) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_kbmr5") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath14" unique_id=296467374] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 39.996162, -95.40727) -gizmo_extents = 50.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath14" unique_id=287839679] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.463013, -17.280014, 57.301163) -gizmo_extents = 50.0 - -[node name="TerrainModifierDistance" type="TerrainModifierDistance" parent="Terrain" unique_id=507842097] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 531.6211, 259.94446, 478.07803) -gizmo_extents = 75.0 -distance_weight_curve = SubResource("Curve_w3uoq") - -[node name="TerrainModifierDistance2" type="TerrainModifierDistance" parent="Terrain" unique_id=1864390718] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 537.7046, 188.42305, 771.08997) -gizmo_extents = 75.0 -distance_weight_curve = SubResource("Curve_w3uoq") - -[node name="TerrainModifierDistance3" type="TerrainModifierDistance" parent="Terrain" unique_id=1855910630] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 700.02527, 199.14436, 537.68396) -gizmo_extents = 75.0 -distance_weight_curve = SubResource("Curve_w3uoq") - -[node name="TerrainModifierPath16" type="TerrainModifierPath" parent="Terrain" unique_id=1875937017] -transform = Transform3D(0.98795176, 0, 0.15476212, 0, 1, 0, -0.15476212, 0, 0.98795176, 453.39258, 100.30454, 687.4546) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_chm2y") -curve_right = SubResource("Curve_nonsf") - -[node name="TerrainModifierPathPoint24" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath16" unique_id=1793172018] -transform = Transform3D(1.0000002, 0, 0, 0, 1, 0, 0, 0, 1.0000002, 6.8964844, -5.7057953, 19.080147) -gizmo_extents = 5.0 - -[node name="TerrainModifierPathPoint27" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath16" unique_id=594523440] -transform = Transform3D(1.0000007, 0, 0, 0, 1, 0, 0, 0, 1.0000007, -14.151123, -5.534706, 21.150452) -gizmo_extents = 5.0 - -[node name="TerrainModifierPathPoint25" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath16" unique_id=1949844715] -transform = Transform3D(1.0000004, 0, 0, 0, 1, 0, 0, 0, 1.0000004, -12.17923, -8.042831, 6.1797485) -gizmo_extents = 5.0 - -[node name="TerrainModifierPathPoint26" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath16" unique_id=1222350057] -transform = Transform3D(1.0000001, 0, 0, 0, 1, 0, 0, 0, 1.0000001, -9.991547, -6.3934402, -7.206482) -gizmo_extents = 5.0 - -[node name="TerrainModifierPathPoint23" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath16" unique_id=1120921338] -transform = Transform3D(1.0000004, 0, 0, 0, 1, 0, 0, 0, 1.0000004, -14.902985, -4.79982, -20.752014) -gizmo_extents = 5.0 - -[node name="TerrainModifierPath19" type="TerrainModifierPath" parent="Terrain" unique_id=1676642694] -transform = Transform3D(0.9969759, 0, -0.07771091, 0, 1, 0, 0.07771091, 0, 0.9969759, 541.2295, 100.304535, 690.02466) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_8bl1q") - -[node name="TerrainModifierPathPoint25" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath19" unique_id=1737615250] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -83.97821, -4.2360916, -7.9820557) -gizmo_extents = 5.0 - -[node name="TerrainModifierPathPoint22" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath19" unique_id=1284127344] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.055714, 6.109459, -0.6345339) -gizmo_extents = 5.0 - -[node name="TerrainModifierPathPoint27" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath19" unique_id=1515221667] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.742128, 6.038475, 3.9466858) -gizmo_extents = 5.0 - -[node name="TerrainModifierPathPoint23" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath19" unique_id=840533711] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 49.6691, -3.7126694, 8.406007) -gizmo_extents = 5.0 - -[node name="TerrainModifierPathPoint26" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath19" unique_id=1913968724] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 86.04291, -12.448708, 18.024475) -gizmo_extents = 5.0 - -[node name="TerrainModifierPathPoint31" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath19" unique_id=986382881] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 111.06216, -21.017044, 23.193707) -gizmo_extents = 5.0 - -[node name="TerrainModifierPathPoint29" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath19" unique_id=301829006] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 139.31122, -31.816216, 54.652344) -gizmo_extents = 5.0 - -[node name="TerrainModifierPathPoint30" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath19" unique_id=1182771431] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 183.97784, -47.76845, 28.500854) -gizmo_extents = 5.0 - -[node name="TerrainModifierPathPoint28" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath19" unique_id=761066394] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 227.25916, -60.411446, 46.52079) -gizmo_extents = 5.0 - -[node name="TerrainModifierPath22" type="TerrainModifierPath" parent="Terrain" unique_id=750567770] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 435.50668, 77.198814, 703.5268) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_y4ku2") -curve_right = SubResource("Curve_t5bdu") - -[node name="TerrainModifierPathPoint" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath22" unique_id=1721491399] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.1041565, -8.301613, -5.4628296) -gizmo_extents = 10.0 - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath22" unique_id=810023159] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.913849, -8.301613, 5.3880005) -gizmo_extents = 10.0 - -[node name="TerrainModifierPath17" type="TerrainModifierPath" parent="Terrain" unique_id=1708764074] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 416.03824, 69.15386, 692.7636) -gizmo_extents = 1.0 -curve_left = SubResource("Curve_4kj3c") - -[node name="TerrainModifierPathPoint2" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=1473398862] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1421509, 0.09454346, 14.559753) - -[node name="TerrainModifierPathPoint3" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=1863553854] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.175293, 0.5405884, 18.187805) - -[node name="TerrainModifierPathPoint4" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=220769209] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.441101, 0.8837204, 19.304138) - -[node name="TerrainModifierPathPoint21" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=1607100253] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.441101, 2.210205, 14.580994) - -[node name="TerrainModifierPathPoint5" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=1820799746] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.534241, 5.0986557, 4.118469) - -[node name="TerrainModifierPathPoint6" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=2116612387] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.9170227, 8.299988, -11.543091) - -[node name="TerrainModifierPathPoint7" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=1272225499] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5455017, 10.130386, -23.116821) - -[node name="TerrainModifierPathPoint8" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=447598199] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.2910767, 10.262657, -24.721985) - -[node name="TerrainModifierPathPoint9" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=1060610621] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5961, 11.085152, -18.563782) - -[node name="TerrainModifierPathPoint10" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=906164163] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.502441, 12.257561, -3.0429688) - -[node name="TerrainModifierPathPoint11" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=43577796] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.093262, 12.385696, 10.487976) - -[node name="TerrainModifierPathPoint12" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=1921440501] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.920105, 13.9776535, 22.744324) - -[node name="TerrainModifierPathPoint13" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=2090060540] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.705017, 14.232437, 23.40039) - -[node name="TerrainModifierPathPoint14" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=22432767] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.276093, 16.732018, 12.025452) - -[node name="TerrainModifierPathPoint16" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=159801860] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.724762, 18.037773, 3.9212646) - -[node name="TerrainModifierPathPoint15" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=2059353099] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.2388, 19.639542, -3.52417) - -[node name="TerrainModifierPathPoint17" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=1928936301] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.626587, 21.457283, -9.916443) - -[node name="TerrainModifierPathPoint18" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=2071609159] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.835022, 22.994705, -16.712402) - -[node name="TerrainModifierPathPoint19" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=2055368136] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.000671, 24.554016, -23.884766) - -[node name="TerrainModifierPathPoint20" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=1567587602] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.630096, 24.856354, -23.92749) - -[node name="TerrainModifierPathPoint22" type="TerrainModifierPathPoint" parent="Terrain/TerrainModifierPath17" unique_id=1457562552] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.136475, 25.229156, -20.645813) - -[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1089775425] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 430.6339, 81.57795, 686.2748) -mesh = SubResource("BoxMesh_kbmr5") - -[node name="PlayerVehicle" parent="." unique_id=2037675333 instance=ExtResource("2_o3i6r")] -transform = Transform3D(-0.1691032, -0.0145671945, -0.9854907, -0.0020476654, 0.99989396, -0.014428737, 0.9855962, -0.00042199076, -0.16911517, 542.1524, 107.626686, 693.53375) - -[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1509403058] -environment = SubResource("Environment_1b7vx") -camera_attributes = SubResource("CameraAttributesPractical_7eqww") -compositor = SubResource("Compositor_n0ica") - -[node name="SkySphere" type="MeshInstance3D" parent="." unique_id=56834935] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 482.60254, 3.9775167, 432.92352) -mesh = SubResource("SphereMesh_o3i6r") -surface_material_override/0 = SubResource("StandardMaterial3D_chm2y") diff --git a/project/scenes/test_world.tscn b/project/scenes/test_world.tscn deleted file mode 100644 index 663f3d0d..00000000 --- a/project/scenes/test_world.tscn +++ /dev/null @@ -1,50 +0,0 @@ -[gd_scene format=3 uid="uid://cv0ub3llm3jew"] - -[ext_resource type="PackedScene" uid="uid://dcqd0wo5y5a1g" path="res://objects/player_character.tscn" id="1_kyfjp"] -[ext_resource type="PackedScene" uid="uid://dfbdn64i7vfuc" path="res://objects/party_member.tscn" id="2_amxg5"] - -[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_kyfjp"] -sky_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1) -ground_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1) - -[sub_resource type="Sky" id="Sky_amxg5"] -sky_material = SubResource("ProceduralSkyMaterial_kyfjp") - -[sub_resource type="Environment" id="Environment_3263u"] -background_mode = 2 -sky = SubResource("Sky_amxg5") -tonemap_mode = 2 -glow_enabled = true - -[sub_resource type="NavigationMesh" id="NavigationMesh_amxg5"] -vertices = PackedVector3Array(-8.5, 0.5, -9, -6.5, 0.5, -9, -6.5, 0.5, -49.5, -49.5, 0.5, -7.5, -8.75, 0.5, -7.25, -49.5, 0.5, -49.5, -4.25, 0.5, -9, -4.25, 0.5, -49.5, -2, 0.5, -8.75, 49.5, 0.5, -6.5, 49.5, 0.5, -49.5, -2, 0.5, -6.5, -7.75, 2.5, -8, -7.75, 2.5, -5.25, -3, 2.5, -5.25, -3, 2.5, -8, -49.5, 0.5, -5.75, -8.75, 0.5, -6, -2, 0.5, -4.5, -3.75, 0.5, -4.25, -3.5, 0.5, 49.5, 49.5, 0.5, 49.5, -8.75, 0.5, -4.5, -7, 0.5, -4.25, -49.5, 0.5, 49.5, -7.25, 0.5, 49.5) -polygons = [PackedInt32Array(2, 1, 0), PackedInt32Array(4, 3, 0), PackedInt32Array(0, 3, 5), PackedInt32Array(0, 5, 2), PackedInt32Array(2, 7, 1), PackedInt32Array(1, 7, 6), PackedInt32Array(6, 7, 8), PackedInt32Array(8, 7, 10), PackedInt32Array(8, 10, 9), PackedInt32Array(9, 11, 8), PackedInt32Array(15, 14, 12), PackedInt32Array(12, 14, 13), PackedInt32Array(17, 16, 4), PackedInt32Array(4, 16, 3), PackedInt32Array(18, 11, 9), PackedInt32Array(18, 9, 19), PackedInt32Array(19, 9, 20), PackedInt32Array(20, 9, 21), PackedInt32Array(16, 17, 22), PackedInt32Array(22, 23, 16), PackedInt32Array(16, 23, 25), PackedInt32Array(16, 25, 24), PackedInt32Array(23, 19, 25), PackedInt32Array(25, 19, 20)] - -[node name="TestWorld" type="Node3D" unique_id=262419127] - -[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1185961481] -environment = SubResource("Environment_3263u") - -[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=1382994887] -transform = Transform3D(-0.8660254, -0.43301278, 0.25, 0, 0.49999997, 0.86602545, -0.50000006, 0.75, -0.43301266, 0, 0, 0) -shadow_enabled = true - -[node name="PlayerCharacter" parent="." unique_id=1435471129 instance=ExtResource("1_kyfjp")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) - -[node name="PartyMember" parent="." unique_id=2124931928 instance=ExtResource("2_amxg5")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 1, 5) - -[node name="NavigationRegion3D" type="NavigationRegion3D" parent="." unique_id=357996274] -navigation_mesh = SubResource("NavigationMesh_amxg5") - -[node name="CSGCombiner3D" type="CSGCombiner3D" parent="NavigationRegion3D" unique_id=885387983] -use_collision = true - -[node name="CSGBox3D" type="CSGBox3D" parent="NavigationRegion3D/CSGCombiner3D" unique_id=1853081325] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0) -size = Vector3(100, 1, 100) - -[node name="CSGBox3D2" type="CSGBox3D" parent="NavigationRegion3D/CSGCombiner3D" unique_id=40055740] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.293318, 1.1054688, -6.6544046) -size = Vector3(5.5302734, 2.2109375, 3.6298828) diff --git a/project/textures/grids/bricks.png b/project/textures/grids/bricks.png new file mode 100644 index 00000000..788d510e Binary files /dev/null and b/project/textures/grids/bricks.png differ diff --git a/project/assets/vehicles/sidecar.png.import b/project/textures/grids/bricks.png.import similarity index 57% rename from project/assets/vehicles/sidecar.png.import rename to project/textures/grids/bricks.png.import index e50d6c10..84da4842 100644 --- a/project/assets/vehicles/sidecar.png.import +++ b/project/textures/grids/bricks.png.import @@ -2,8 +2,8 @@ importer="texture" type="CompressedTexture2D" -uid="uid://csscfssydx1n4" -path.s3tc="res://.godot/imported/sidecar.png-10b8daaf663ef9108162d2fab75bc493.s3tc.ctex" +uid="uid://cd4cchmulwnc5" +path.s3tc="res://.godot/imported/bricks.png-217e783fed9aafaab4854f1be96e4aed.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], "vram_texture": true @@ -11,16 +11,14 @@ metadata={ [deps] -source_file="res://assets/vehicles/sidecar.png" -dest_files=["res://.godot/imported/sidecar.png-10b8daaf663ef9108162d2fab75bc493.s3tc.ctex"] +source_file="res://textures/grids/bricks.png" +dest_files=["res://.godot/imported/bricks.png-217e783fed9aafaab4854f1be96e4aed.s3tc.ctex"] [params] compress/mode=2 compress/high_quality=false compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -28,10 +26,6 @@ mipmaps/generate=true mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/project/textures/grids/grass.png b/project/textures/grids/grass.png new file mode 100644 index 00000000..1d54a6fe Binary files /dev/null and b/project/textures/grids/grass.png differ diff --git a/project/assets/environments/props/rock_c.png.import b/project/textures/grids/grass.png.import similarity index 56% rename from project/assets/environments/props/rock_c.png.import rename to project/textures/grids/grass.png.import index ff773ee7..10e02de2 100644 --- a/project/assets/environments/props/rock_c.png.import +++ b/project/textures/grids/grass.png.import @@ -2,8 +2,8 @@ importer="texture" type="CompressedTexture2D" -uid="uid://drf6dro5di2ap" -path.s3tc="res://.godot/imported/rock_c.png-a276885ef75cf615c39e79d768211422.s3tc.ctex" +uid="uid://f8djywm2jlah" +path.s3tc="res://.godot/imported/grass.png-94a6319b2d9ea30e834183f2653f3455.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], "vram_texture": true @@ -11,16 +11,14 @@ metadata={ [deps] -source_file="res://assets/environments/props/rock_c.png" -dest_files=["res://.godot/imported/rock_c.png-a276885ef75cf615c39e79d768211422.s3tc.ctex"] +source_file="res://textures/grids/grass.png" +dest_files=["res://.godot/imported/grass.png-94a6319b2d9ea30e834183f2653f3455.s3tc.ctex"] [params] compress/mode=2 compress/high_quality=false compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -28,10 +26,6 @@ mipmaps/generate=true mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/project/textures/grids/mud.png b/project/textures/grids/mud.png new file mode 100644 index 00000000..529ceab8 Binary files /dev/null and b/project/textures/grids/mud.png differ diff --git a/project/assets/environments/props/rock_a.png.import b/project/textures/grids/mud.png.import similarity index 56% rename from project/assets/environments/props/rock_a.png.import rename to project/textures/grids/mud.png.import index 59595df6..7a14f648 100644 --- a/project/assets/environments/props/rock_a.png.import +++ b/project/textures/grids/mud.png.import @@ -2,8 +2,8 @@ importer="texture" type="CompressedTexture2D" -uid="uid://b4rklg0l7aqdm" -path.s3tc="res://.godot/imported/rock_a.png-3ff1a5814ef260ae524170318024cca4.s3tc.ctex" +uid="uid://br64q04tpxmli" +path.s3tc="res://.godot/imported/mud.png-f0a13a766854ada7e9976a2898dea1c2.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], "vram_texture": true @@ -11,16 +11,14 @@ metadata={ [deps] -source_file="res://assets/environments/props/rock_a.png" -dest_files=["res://.godot/imported/rock_a.png-3ff1a5814ef260ae524170318024cca4.s3tc.ctex"] +source_file="res://textures/grids/mud.png" +dest_files=["res://.godot/imported/mud.png-f0a13a766854ada7e9976a2898dea1c2.s3tc.ctex"] [params] compress/mode=2 compress/high_quality=false compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -28,10 +26,6 @@ mipmaps/generate=true mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/project/textures/grids/rock.png b/project/textures/grids/rock.png new file mode 100644 index 00000000..3380a55a Binary files /dev/null and b/project/textures/grids/rock.png differ diff --git a/project/textures/grids/rock.png.import b/project/textures/grids/rock.png.import new file mode 100644 index 00000000..12ea2192 --- /dev/null +++ b/project/textures/grids/rock.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cawkm8y8ejdjs" +path="res://.godot/imported/rock.png-674cefcf962a6d115a3102bd49c5ab77.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/grids/rock.png" +dest_files=["res://.godot/imported/rock.png-674cefcf962a6d115a3102bd49c5ab77.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/project/textures/grids/tent.png b/project/textures/grids/tent.png new file mode 100644 index 00000000..b21693da Binary files /dev/null and b/project/textures/grids/tent.png differ diff --git a/project/assets/environments/props/rock_b.png.import b/project/textures/grids/tent.png.import similarity index 56% rename from project/assets/environments/props/rock_b.png.import rename to project/textures/grids/tent.png.import index 92fd56bf..1381a79f 100644 --- a/project/assets/environments/props/rock_b.png.import +++ b/project/textures/grids/tent.png.import @@ -2,8 +2,8 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dpn3sfcjnnool" -path.s3tc="res://.godot/imported/rock_b.png-063dafa9684f12d7486304024d1aaecf.s3tc.ctex" +uid="uid://bh68a5vqm5h7l" +path.s3tc="res://.godot/imported/tent.png-683c31f751d990e004be3a99db100a94.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], "vram_texture": true @@ -11,16 +11,14 @@ metadata={ [deps] -source_file="res://assets/environments/props/rock_b.png" -dest_files=["res://.godot/imported/rock_b.png-063dafa9684f12d7486304024d1aaecf.s3tc.ctex"] +source_file="res://textures/grids/tent.png" +dest_files=["res://.godot/imported/tent.png-683c31f751d990e004be3a99db100a94.s3tc.ctex"] [params] compress/mode=2 compress/high_quality=false compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -28,10 +26,6 @@ mipmaps/generate=true mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false