CharacterController Updates

This commit is contained in:
Josef 2025-12-21 19:58:19 +01:00
parent dd7792f3fe
commit bb71155ff1
21 changed files with 935 additions and 374 deletions

View File

@ -0,0 +1,40 @@
using Godot;
namespace Rokojori
{
[Tool][GlobalClass ]
public partial class DistanceToCapsuleSize: Action
{
[Export]
public Node3D sourceA;
[Export]
public Node3D sourceB;
[Export]
public CapsuleMesh target;
[Export]
public float endRadius = 1;
[Export]
public float maxRadius = 1;
protected override void _OnTrigger()
{
if ( sourceA == null || sourceB == null || target == null )
{
return;
}
var direction = sourceB.GlobalPosition - sourceA.GlobalPosition;
var distance = direction.Length() + endRadius * 2;
target.Height =distance;
target.Radius = Mathf.Min( distance / 2f, maxRadius );
}
}
}

View File

@ -0,0 +1 @@
uid://b1usqaqbaa6xg

Binary file not shown.

View File

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://eppc0gxf6pdq"
path="res://.godot/imported/WinterTales - Activation.ogg-9257f63b680556f45beffb7218fd0ec4.oggvorbisstr"
[deps]
source_file="res://GameObjects/Cubes/WinterTales - Activation.ogg"
dest_files=["res://.godot/imported/WinterTales - Activation.ogg-9257f63b680556f45beffb7218fd0ec4.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

View File

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://olgyjgr0ucif"
path="res://.godot/imported/WinterTales - Button.ogg-80ea46aaebfa71de4d261149e08074ed.oggvorbisstr"
[deps]
source_file="res://GameObjects/Cubes/WinterTales - Button.ogg"
dest_files=["res://.godot/imported/WinterTales - Button.ogg-80ea46aaebfa71de4d261149e08074ed.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@ -10,6 +10,10 @@ render_priority = 0
shader = ExtResource("1_6wdmi")
shader_parameter/albedo = Color(1, 1, 1, 1)
shader_parameter/albedoTexture = ExtResource("2_6wdmi")
shader_parameter/snowLuminanceAmount = 0.1490000070775
shader_parameter/snowLuminanceConstrast = 16.0650007630875
shader_parameter/snowLuminanceConstrastOffset = 0.666000031635
shader_parameter/snowLuminanceConstrastBrightness = 1.3230001578425
shader_parameter/hslVariance = Vector3(0.01, -0.06, 0.1)
shader_parameter/hslOffset = Vector3(0, 0.0876, -0.0266)
shader_parameter/localYMapping = Vector2(0, 2.2)
@ -47,6 +51,7 @@ shader_parameter/snowFadeLocalYEnd = 1.8
shader_parameter/snowFadeNoise = -0.5
shader_parameter/snowFadePower = 0.25
shader_parameter/snowOpacity = 0.8
shader_parameter/snowRoughness = 1.0
shader_parameter/snowAlbedo = 1.3
shader_parameter/snowRoughness = 0.556
shader_parameter/snowSpecular = 0.0
shader_parameter/snowLightMix = 0.5

View File

@ -10,6 +10,10 @@ render_priority = 0
shader = ExtResource("1_t54fj")
shader_parameter/albedo = Color(1, 1, 1, 1)
shader_parameter/albedoTexture = ExtResource("2_yvg8l")
shader_parameter/snowLuminanceAmount = 0.742000035245
shader_parameter/snowLuminanceConstrast = 2.4410001159475
shader_parameter/snowLuminanceConstrastOffset = 0.082000003895
shader_parameter/snowLuminanceConstrastBrightness = 1.2450001541375002
shader_parameter/hslVariance = Vector3(0.0608, 0.0111, -0.0459)
shader_parameter/hslOffset = Vector3(0, 0, 0.0515)
shader_parameter/localYMapping = Vector2(0.2275, 2.2)
@ -39,7 +43,7 @@ shader_parameter/windOcclusionAmount = 0.0
shader_parameter/worldCameraLineDistanceFadeInnerRadius = 0.2
shader_parameter/worldCameraLineDistanceFadeOuterRadius = 2.5
shader_parameter/worldLineFadeMin = 0.2
shader_parameter/roughness = 0.1750000083125
shader_parameter/roughness = 0.1230000058425
shader_parameter/albedoToRoughness = Vector3(0, 0, -0.5)
shader_parameter/specular = 1.0
shader_parameter/snowFadeLocalYStart = 1.3
@ -48,6 +52,6 @@ shader_parameter/snowFadeNoise = -0.5
shader_parameter/snowFadePower = 0.25
shader_parameter/snowOpacity = 0.8
shader_parameter/snowAlbedo = 1.3
shader_parameter/snowRoughness = 1.0
shader_parameter/snowSpecular = 0.0
shader_parameter/snowRoughness = 0.1915
shader_parameter/snowSpecular = 0.2105
shader_parameter/snowLightMix = 0.5

View File

@ -35,6 +35,11 @@ group_uniforms albedo;
uniform vec4 albedo:source_color = vec4( 1.0, 1.0, 1.0, 1.0);
uniform sampler2D albedoTexture:source_color, hint_default_white, repeat_enable, filter_nearest_mipmap_anisotropic;
uniform float snowLuminanceAmount:hint_range( 0.0, 1.0 ) = 1.0;
uniform float snowLuminanceConstrast:hint_range( 0.0, 30.0 ) = 1.0;
uniform float snowLuminanceConstrastOffset:hint_range( 0.0, 1.0 ) = 0.5;
uniform float snowLuminanceConstrastBrightness:hint_range( -2.0, 2.0 ) = 0.0;
uniform vec3 hslVariance = vec3( 0, 0, 0 );
uniform vec3 hslOffset = vec3( 0, 0, 0 );
uniform vec2 localYMapping = vec2( 0, 0 );
@ -252,11 +257,15 @@ void fragment()
vec4 sampledAlbedo = texture( albedoTexture, UV );
ALBEDO = sampledAlbedo.rgb * albedo.rgb;
float grey = ( sampledAlbedo.r + sampledAlbedo.g + sampledAlbedo.b ) / 3.0;
vec3 hslAmount = ( noiseValue.rgb - 0.5 ) * 2.0;
vec3 localYHSL = localYMappingAmount * localYHSLOffset;
ALBEDO = adjustHSL( ALBEDO, hslAmount * hslVariance + hslOffset + localYHSL );
ALBEDO = mix( ALBEDO, vec3( snowAlbedo ), snowAmount );
float scaledGrey = ( grey - snowLuminanceConstrastOffset ) * snowLuminanceConstrast + snowLuminanceConstrastOffset;
float snowColor = mix( snowAlbedo, snowAlbedo * scaledGrey + snowLuminanceConstrastBrightness , snowLuminanceAmount );
ALBEDO = mix( ALBEDO, vec3( snowColor ), snowAmount );
float localYocclusion = pow( max( 0.0, localYMappingAmount ), pow( 2.0, localYOcclusionPower ) );
AO = mix( 1.0, mix( localYOcclusionValues.x, localYOcclusionValues.y, localYocclusion ), localYOcclusionAmount );
@ -264,9 +273,10 @@ void fragment()
vec3 albedoRoughnessRGB = sampledAlbedo.rgb * albedoToRoughness;
float albedoRoughness = albedoRoughnessRGB.r + albedoRoughnessRGB.g + albedoRoughnessRGB.b;
ROUGHNESS = roughness + albedoRoughness;
ROUGHNESS =roughness + albedoRoughness;
SPECULAR = specular;
ROUGHNESS = mix( ROUGHNESS, snowRoughness, snowLightMix * snowAmount );
SPECULAR = mix( SPECULAR, snowSpecular, snowLightMix * snowAmount );

View File

@ -40,6 +40,7 @@ shader_parameter/playerDeformAmount = 0.1
shader_parameter/playerDeformPower = 0.500000011875
shader_parameter/playerDeformYStart = 0.1
shader_parameter/playerDeformYMax = 0.5
shader_parameter/debugEmissionColor = Vector3(0, 0, 0)
shader_parameter/windWeights = Vector2(1, 0)
shader_parameter/windSeedSize = 0.5
shader_parameter/windMaxStrength = 1.0

View File

@ -6,6 +6,7 @@ render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_burley, specular_sc
#include "res://addons/rokojori_action_library/Runtime/Shading/Library/Transform.gdshaderinc"
#include "res://addons/rokojori_action_library/Runtime/Shading/Library/Wind.gdshaderinc"
#include "res://addons/rokojori_action_library/Runtime/Shading/Library/Line3.gdshaderinc"
#include "res://addons/rokojori_action_library/Runtime/Shading/Library/SDF.gdshaderinc"
uniform vec4 albedo : source_color;
uniform sampler2D texture_albedo : source_color, filter_linear_mipmap, repeat_enable;
@ -38,6 +39,9 @@ uniform float playerDeformPower:hint_range( 0.25, 4 ) = 1;
uniform float playerDeformYStart = 0.2;
uniform float playerDeformYMax = 1;
uniform vec3 debugEmissionColor;
varying vec3 debugEmission;
// [ WIND ]
group_uniforms wind;
@ -103,16 +107,8 @@ void vertex()
vec3 playerPositionLocal = worldToLocal( playerPosition, MODEL_MATRIX );
vec3 smoothedPlayerPositionLocal = worldToLocal( smoothedPlayerPosition, MODEL_MATRIX );
playerPositionLocal.y = 0.0;
smoothedPlayerPositionLocal.y = 0.0;
vec3 flatVertex = VERTEX; flatVertex.y = 0.0;
Line3 line;
line.start = playerPositionLocal;
line.end = smoothedPlayerPositionLocal;
float distance = Line3_getDistance( line, flatVertex );
float distance = sdSegment( VERTEX.xz, playerPositionLocal.xz, smoothedPlayerPositionLocal.xz );
vec3 dir = vec3( 1.0, 0, 0 );
@ -120,37 +116,16 @@ void vertex()
{
dir = playerPositionLocal - VERTEX;
dir.y = 0.0;
// vec3 closestPoint = Line3_closestPointToPoint( line, flatVertex );
// dir = closestPoint - flatVertex;
}
dir = normalize( dir );
// vec3 localPlayerPosition = worldToLocal( playerPosition, MODEL_MATRIX ) - VERTEX;
// localPlayerPosition.y = 0.0;
// float distance = length( localPlayerPosition );
// if ( distance == 0.0 )
// {
// localPlayerPosition = vec3( 0.0001, 0, 0 );
// }
// vec3 dir = normalize( localPlayerPosition );
float amount = mapClamped( distance, 0.0, playerDeformRange, playerDeformAmount, 0 );
amount = clamp01( pow( amount, playerDeformPower ) );
float yAmount = mapClamped( VERTEX.y, playerDeformYStart, playerDeformYMax, 0.0, 1.0 );
// vec3 worldDir = localToWorldDirection( dir, MODEL_MATRIX );
// worldDir = normalize( worldDir );
// vec3 worldVertex = localToWorld( VERTEX, MODEL_MATRIX );
// worldVertex += worldDir * - amount * yAmount;
// VERTEX = worldToLocal( worldVertex, MODEL_MATRIX );
debugEmission = amount * yAmount * debugEmissionColor;
VERTEX += dir * - amount * yAmount;
// WIND
@ -203,5 +178,5 @@ void fragment() {
AO_LIGHT_AFFECT = ao_light_affect;
BACKLIGHT = ALBEDO * albedoToBacklight;
EMISSION = ALBEDO * albedoToEmission;
EMISSION = ALBEDO * albedoToEmission + debugEmission;
}

Binary file not shown.

View File

@ -14,8 +14,9 @@
[ext_resource type="Resource" uid="uid://ch5nsa6yafs5l" path="res://addons/rokojori_action_library/Runtime/Time/TimeLines/GameTime.tres" id="6_r7fm5"]
[ext_resource type="Material" uid="uid://caorquioj0w4y" path="res://GameObjects/Pink Bush/Pink Bush Overlay.material" id="8_hed3e"]
[sub_resource type="SphereShape3D" id="SphereShape3D_i3v8b"]
radius = 0.43
[sub_resource type="CylinderShape3D" id="CylinderShape3D_hed3e"]
height = 0.5984421
radius = 0.39013672
[sub_resource type="QuadMesh" id="QuadMesh_uqrk0"]
@ -50,8 +51,8 @@ metadata/_custom_type_script = "uid://dkbln8rf5p0pu"
transform = Transform3D(0.652943, 0, 0.9098152, 0, 1.1198653, 0, -0.9098152, 0, 0.652943, 0, 0, 0)
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(0.99999994, 0, 0, 0, 1.0000001, 0, 0, 0, 0.99999994, 0, 0.15148893, 0)
shape = SubResource("SphereShape3D_i3v8b")
transform = Transform3D(0.99999994, 0, 0, 0, 1.0000001, 0, 0, 0, 0.99999994, 0, 0.2969588, 0)
shape = SubResource("CylinderShape3D_hed3e")
[node name="Pink Bush" type="MeshInstance3D" parent="."]
transform = Transform3D(0.99999994, 0, 0, 0, 1.0000001, 0, 0, 0, 0.99999994, 7.1525574e-07, 0.33457842, 1.1368684e-13)

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=39 format=3 uid="uid://dawxe3jm1j1ei"]
[gd_scene load_steps=38 format=3 uid="uid://dawxe3jm1j1ei"]
[ext_resource type="Script" uid="uid://bq56bfytlbxq7" path="res://addons/rokojori_action_library/Runtime/GameObjects/GameObject3D.cs" id="1_cei5k"]
[ext_resource type="PackedScene" uid="uid://bbyo1043h1g2w" path="res://assets/kenney_holiday-kit/Models/GLB format/present-a-rectangle.glb" id="2_ierrr"]
@ -19,7 +19,6 @@
[ext_resource type="Script" uid="uid://cupnq55n3nimc" path="res://addons/rokojori_action_library/Runtime/Animation/Flash/FlashEffect.cs" id="17_r3hib"]
[ext_resource type="Script" uid="uid://b2g7rycr0ouu4" path="res://addons/rokojori_action_library/Runtime/Actions/Time/Delay.cs" id="18_ntrp1"]
[ext_resource type="Script" uid="uid://dq5kae8x62gre" path="res://addons/rokojori_action_library/Runtime/Actions/RemoveNode.cs" id="19_pvpan"]
[ext_resource type="Script" uid="uid://dla1wn2mlw2d0" path="res://addons/rokojori_action_library/Runtime/Interactions/Pointable.cs" id="20_crydw"]
[ext_resource type="Script" uid="uid://qwprrym288gb" path="res://addons/rokojori_action_library/Runtime/Interactions/Collecting/Collectable.cs" id="21_mhwle"]
[ext_resource type="Resource" uid="uid://dfqc5ainuim21" path="res://Character/Player-Collector.tres" id="22_4h623"]
[ext_resource type="Resource" uid="uid://d0k8ig2sum1fk" path="res://GameObjects/Present/Present-Collectable.tres" id="23_nvl46"]
@ -167,11 +166,6 @@ script = ExtResource("19_pvpan")
target = NodePath("../../../../..")
metadata/_custom_type_script = "uid://dq5kae8x62gre"
[node name="Pointable" type="Node3D" parent="RigidBody3D" node_paths=PackedStringArray("highlightTargets")]
script = ExtResource("20_crydw")
highlightTargets = [null]
metadata/_custom_type_script = "uid://dla1wn2mlw2d0"
[node name="Collectable" type="Node" parent="RigidBody3D" node_paths=PackedStringArray("collidable")]
script = ExtResource("21_mhwle")
collectorTypeFlags = [ExtResource("22_4h623")]

File diff suppressed because it is too large Load Diff

View File

@ -6,19 +6,20 @@ using System.Threading.Tasks;
[Tool, GlobalClass]
public partial class PostProcessingHack : Action
{
[Export]
public CompositorEffect[] compositorEffects;
[Export]
public WorldEnvironment environment;
protected override void _OnTrigger()
{
ApplyHack();
}
void ApplyHack()
{
var godotArray = new Godot.Collections.Array<CompositorEffect>();
var compositorEffects = environment.Compositor.CompositorEffects;
for ( int i = 0; i < compositorEffects.Length; i++ )
for ( int i = 0; i < compositorEffects.Count; i++ )
{
godotArray.Add( (CompositorEffect) compositorEffects[ i ].Duplicate() );
}
@ -26,4 +27,29 @@ public partial class PostProcessingHack : Action
environment.Compositor.CompositorEffects = godotArray;
}
#if TOOLS
int retriggerFramesCount = 60 * 5;
int framesCounter = 0;
public override void _Process( double delta )
{
if ( ! Engine.IsEditorHint() )
{
return;
}
framesCounter --;
if ( framesCounter > 0 )
{
return;
}
framesCounter = retriggerFramesCount;
// RJLog.Log( "Applying Post Processing Hack" );
ApplyHack();
}
#endif
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 584 KiB

View File

@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://wrbpp07lbni1"
path.s3tc="res://.godot/imported/motion-vectors.png-c345edadd3824e8ce9273f51d1412b19.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Utilities/Testing/motion-vectors.png"
dest_files=["res://.godot/imported/motion-vectors.png-c345edadd3824e8ce9273f51d1412b19.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

@ -1 +1 @@
Subproject commit fe606c6e39f17f442491dc06c8b31fb5e1ff0369
Subproject commit f37b4b41c8a6c8498afee8c8463d0a3a02a7b15f

70
export_presets.cfg Normal file
View File

@ -0,0 +1,70 @@
[preset.0]
name="Windows Desktop"
platform="Windows Desktop"
runnable=true
advanced_options=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="../WinterTales-Builds/Winter Tales.exe"
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.0.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=0
binary_format/embed_pck=true
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
shader_baker/enabled=true
binary_format/architecture="x86_64"
codesign/enable=false
codesign/timestamp=true
codesign/timestamp_server_url=""
codesign/digest_algorithm=1
codesign/description=""
codesign/custom_options=PackedStringArray()
application/modify_resources=true
application/icon="uid://dws653np5py2n"
application/console_wrapper_icon=""
application/icon_interpolation=4
application/file_version=""
application/product_version=""
application/company_name=""
application/product_name=""
application/file_description=""
application/copyright=""
application/trademarks=""
application/export_angle=0
application/export_d3d12=0
application/d3d12_agility_sdk_multiarch=true
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
Start-ScheduledTask -TaskName godot_remote_debug
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
Remove-Item -Recurse -Force '{temp_dir}'"
dotnet/include_scripts_content=false
dotnet/include_debug_symbols=true
dotnet/embed_build_outputs=false

View File

@ -35,6 +35,10 @@ enabled=PackedStringArray("res://addons/rokojori_action_library/plugin.cfg")
3d_render/layer_4="Map"
3d_render/layer_5="Map"
[physics]
3d/physics_engine="Jolt Physics"
[rendering]
lights_and_shadows/directional_shadow/soft_shadow_filter_quality=5