diff --git a/Alens/movementSystem0.0.3/project.godot b/Alens/movementSystem0.0.3/project.godot index 5bba79c..f383650 100644 --- a/Alens/movementSystem0.0.3/project.godot +++ b/Alens/movementSystem0.0.3/project.godot @@ -11,7 +11,7 @@ config_version=4 [application] config/name="movementSystem0.0.3" -run/main_scene="res://source/entities/player/player_node.tscn" +run/main_scene="res://source/levels/trinity_site/trinitySite-level.tscn" config/icon="res://icon.png" [input] diff --git a/Alens/movementSystem0.0.3/source/assets/scripts/controllers/level-scale_controller.gd b/Alens/movementSystem0.0.3/source/assets/scripts/controllers/level-scale_controller.gd index be7bb79..ae96b5a 100644 --- a/Alens/movementSystem0.0.3/source/assets/scripts/controllers/level-scale_controller.gd +++ b/Alens/movementSystem0.0.3/source/assets/scripts/controllers/level-scale_controller.gd @@ -1,6 +1,6 @@ extends Node -const LEVEL_SCALE = 0.05 +const LEVEL_SCALE = 0.25 func _ready(): $player_node.set_scale(LEVEL_SCALE) diff --git a/Alens/movementSystem0.0.3/source/assets/scripts/controllers/managers/physics_manager.gd b/Alens/movementSystem0.0.3/source/assets/scripts/controllers/managers/physics_manager.gd index e1f38a9..ccc6096 100644 --- a/Alens/movementSystem0.0.3/source/assets/scripts/controllers/managers/physics_manager.gd +++ b/Alens/movementSystem0.0.3/source/assets/scripts/controllers/managers/physics_manager.gd @@ -1,5 +1,5 @@ extends Node func update(userStateInstance): - # userStateInstance.rotateBy(-1) + #userStateInstance.rotateBy(-1) pass diff --git a/Alens/movementSystem0.0.3/source/assets/scripts/handlers/character/player/player_body_handler.gd b/Alens/movementSystem0.0.3/source/assets/scripts/handlers/character/player/player_body_handler.gd index 6687013..3a1447e 100644 --- a/Alens/movementSystem0.0.3/source/assets/scripts/handlers/character/player/player_body_handler.gd +++ b/Alens/movementSystem0.0.3/source/assets/scripts/handlers/character/player/player_body_handler.gd @@ -14,24 +14,51 @@ var canvasManagerInstance = preload("res://source/assets/scripts/controllers/man var physicsManagerInstance = preload("res://source/assets/scripts/controllers/managers/physics_manager.gd").new() # Local class variables +var rotationalOffsets = {"0":0,"1":0,"2":0,"3":0,"4":0} var vectoralDirectionPreset var userInput var userState var VDIR func _ready(): - vectoralDirectionPreset = vectoralDirectionPresetInstance.getState(userStateInstance.update()) + set_process(true) + vectoralDirectionPreset = vectoralDirectionPresetInstance.getState(userStateInstance.update(global_transform.origin),{"sprite-width": $player_sprite_na.texture.get_width(),"sprite-height":$player_sprite_na.texture.get_height(),"collider-radius":$player_collider.get_shape().get_radius()}) func _process(delta): # Update data-handler returned states userInput = userInputInstance.update() - userState = userStateInstance.update() + userState = userStateInstance.update(global_transform.origin) # Send the returned states through processors - VDIR = VDIRprocessorInstance.process(userState, vectoralDirectionPreset) + VDIR = VDIRprocessorInstance.process(userState, vectoralDirectionPreset, $player_sprite_na.scale, get_world_2d().direct_space_state,[self]) # Give the resulting data to game controllers physicsManagerInstance.update(userStateInstance) - physics_process(delta) + physics_process(delta, VDIR) + if userInput["down"] == true: + move_and_slide(Vector2(0,75)) + elif userInput["left"] == true: + move_and_slide(Vector2(-50,0)) + elif userInput["right"] == true: + move_and_slide(Vector2(50,0)) + elif userInput["debug"] == true: + userStateInstance.rotateBy(1) + else: + $player_sprite.play("idle") + update() + print(userState["rotation"]) pass -func physics_process(delta): +func physics_process(delta, VDIR): + for vectorType in VDIR: + var vT = str(vectorType) + for vector in VDIR[vT]: + var v = str(vector) + if vT == "0": rotationalOffsets[v] = {"offset":VDIR[vT][v]["ray"]["offset"],"collided":VDIR[vT][v]["ray"]["collided"]} + CRprocessorInstance.update(rotationalOffsets, userStateInstance, delta) rotation_degrees = userState["rotation"] + +func _draw(): + for vectorType in vectoralDirectionPreset: + var vT = str(vectorType) + for vector in vectoralDirectionPreset[vT]: + var v = str(vector) + if vT == "0": draw_line(vectoralDirectionPreset[vT][v]["start"],vectoralDirectionPreset[vT][v]["ray"]["position"],Color(255,255,255),1) diff --git a/Alens/movementSystem0.0.3/source/assets/scripts/handlers/character/player/player_node_handler.gd b/Alens/movementSystem0.0.3/source/assets/scripts/handlers/character/player/player_node_handler.gd index a4d7775..601333a 100644 --- a/Alens/movementSystem0.0.3/source/assets/scripts/handlers/character/player/player_node_handler.gd +++ b/Alens/movementSystem0.0.3/source/assets/scripts/handlers/character/player/player_node_handler.gd @@ -1,7 +1,7 @@ extends Node2D func statePassback(): - return {"node_global_position": transform.origin, "rotation": null} + return {"node_global_position": null, "rotation": null} func set_scale(scale) -> void: $player_body/player_sprite_na.scale = Vector2(scale, scale) diff --git a/Alens/movementSystem0.0.3/source/assets/scripts/handlers/system/state/user_state_handler.gd b/Alens/movementSystem0.0.3/source/assets/scripts/handlers/system/state/user_state_handler.gd index bbbd3c5..6a9aa0b 100644 --- a/Alens/movementSystem0.0.3/source/assets/scripts/handlers/system/state/user_state_handler.gd +++ b/Alens/movementSystem0.0.3/source/assets/scripts/handlers/system/state/user_state_handler.gd @@ -9,8 +9,9 @@ func rotateBy(amount): if rotationalTracker == 361: rotationalTracker = 1 elif rotationalTracker == -361: rotationalTracker = -1 -func update(): +func update(positionUpdate): userState = preload("res://source/assets/scripts/handlers/character/player/player_node_handler.gd").new().statePassback() # IF necessary process and update and correct userState + userState["node_global_position"] = positionUpdate userState["rotation"] = rotationalTracker return userState diff --git a/Alens/movementSystem0.0.3/source/assets/scripts/handlers/system/vectoralPresets/vectoral_direction_preset_handler.gd b/Alens/movementSystem0.0.3/source/assets/scripts/handlers/system/vectoralPresets/vectoral_direction_preset_handler.gd index 6d253f6..3d0fbd1 100644 --- a/Alens/movementSystem0.0.3/source/assets/scripts/handlers/system/vectoralPresets/vectoral_direction_preset_handler.gd +++ b/Alens/movementSystem0.0.3/source/assets/scripts/handlers/system/vectoralPresets/vectoral_direction_preset_handler.gd @@ -2,33 +2,43 @@ extends Node var vectoralState = {} -func getState(userState): +func getState(userState,objectDimensions): + print(objectDimensions) + var bSP = 0 + var bHO = objectDimensions["sprite-width"] / 2 + var bVVO = objectDimensions["sprite-height"] + var spHO = objectDimensions["collider-radius"] vectoralState = { "0": { # Source (Client) positional rotation vectors "0": { # Primary source positional vector - "start": Vector2(0,0), - "end": Vector2(0,0), - "ray": Vector2(0,0) + "start": Vector2(bSP,bSP), + "end": Vector2(bSP,bVVO), + "ray": {"position": Vector2(bSP,bVVO),"length": bVVO,"offset":bVVO-spHO, "collided": false}, + "vT": true }, "1": { # Secondary source positional vector (Negative) - "start": Vector2(0,0), - "end": Vector2(0,0), - "ray": Vector2(0,0) + "start": Vector2(bHO,bSP), + "end": Vector2(bHO,bVVO), + "ray": {"position": Vector2(bHO,bVVO),"length": bVVO,"offset":bVVO-spHO, "collided": false}, + "vT": true }, "2": { # Secondary source positional vector (Positive) - "start": Vector2(0,0), - "end": Vector2(0,0), - "ray": Vector2(0,0) + "start": Vector2(-bHO,bSP), + "end": Vector2(-bHO,bVVO), + "ray": {"position": Vector2(-bHO,bVVO),"length": bVVO,"offset":bVVO-spHO, "collided": false}, + "vT": true }, "3": { # Secondary source positional vector (Negative) [R] - "start": Vector2(0,0), - "end": Vector2(0,0), - "ray": Vector2(0,0) + "start": Vector2(spHO,bSP), + "end": Vector2(spHO,bVVO), + "ray": {"position": Vector2(spHO,bVVO),"length": bVVO,"offset":bVVO-spHO, "collided": false}, + "vT": true }, "4": { # Secondary source positional vector (Positive) [R] - "start": Vector2(0,0), - "end": Vector2(0,0), - "ray": Vector2(0,0) + "start": Vector2(-spHO,bSP), + "end": Vector2(-spHO,bVVO), + "ray": {"position": Vector2(-spHO,bVVO),"length": bVVO,"offset":bVVO-spHO, "collided": false}, + "vT": true } }, "1": { # Source (Client) force vectors diff --git a/Alens/movementSystem0.0.3/source/assets/scripts/processors/CR/client_rotation_processor.gd b/Alens/movementSystem0.0.3/source/assets/scripts/processors/CR/client_rotation_processor.gd index 38c4d54..1963a02 100644 --- a/Alens/movementSystem0.0.3/source/assets/scripts/processors/CR/client_rotation_processor.gd +++ b/Alens/movementSystem0.0.3/source/assets/scripts/processors/CR/client_rotation_processor.gd @@ -1,4 +1,26 @@ extends Node -func _ready(): +func update(rotationalOffsets, userStateInstance, delta): + var totalOffset = 0 + var rotationalExpectation = {"0":0,"1":0,"2":0,"3":0,"4":0} + for offset in rotationalOffsets: + var offsetValue = rotationalOffsets[str(offset)]["offset"] + totalOffset += offsetValue + for offset in rotationalOffsets: + rotationalOffsets[str(offset)]["offset"] -= totalOffset / rotationalOffsets.size() + if rotationalOffsets[str(offset)]["offset"] > 5 or rotationalOffsets[str(offset)]["offset"] < -5: rotationalExpectation[str(offset)] = rotationalOffsets[str(offset)]["offset"] / 100 * abs(rotationalOffsets[str(offset)]["offset"]) - 5 + var totalExpectation = 0 + var activeSize = 0 + for expectation in rotationalExpectation: + if rotationalOffsets[str(expectation)]["collided"] == true: + totalExpectation += rotationalExpectation[str(expectation)] + activeSize += 1 + var actualExpectation = 0 + if activeSize > 3: actualExpectation = totalExpectation / activeSize + print("AE:",actualExpectation) + if abs(actualExpectation) > 1: + if rotationalOffsets["0"]["offset"] > rotationalOffsets[str(rotationalOffsets.size()-1)]["offset"]: + print("left") + elif rotationalOffsets["0"]["offset"] < rotationalOffsets[str(rotationalOffsets.size()-1)]["offset"]: + print("right") pass diff --git a/Alens/movementSystem0.0.3/source/assets/scripts/processors/VDIR/vectoral_direction_processor.gd b/Alens/movementSystem0.0.3/source/assets/scripts/processors/VDIR/vectoral_direction_processor.gd index 4cd02af..73165bc 100644 --- a/Alens/movementSystem0.0.3/source/assets/scripts/processors/VDIR/vectoral_direction_processor.gd +++ b/Alens/movementSystem0.0.3/source/assets/scripts/processors/VDIR/vectoral_direction_processor.gd @@ -3,5 +3,15 @@ extends Node func _ready(): pass -func process(userState, vectoralDirectionPreset): - return +func process(userState, vectoralDirectionPreset,scale,spaceState,ignorable): + var clientOffset = userState["node_global_position"] + for vectorType in vectoralDirectionPreset: + var vT = str(vectorType) + for vector in vectoralDirectionPreset[vT]: + var v = str(vector) + var Ray = spaceState.intersect_ray(vectoralDirectionPreset[vT][v]["start"].rotated(deg2rad(userState["rotation"])) + clientOffset,(vectoralDirectionPreset[vT][v]["end"].rotated(deg2rad(userState["rotation"])) + clientOffset),ignorable) + if "position" in Ray and vT == "0": + vectoralDirectionPreset[vT][v]["ray"] = {"position":Ray.position - clientOffset, "length":(Ray.position - clientOffset).y,"offset":(Ray.position - clientOffset).y - vectoralDirectionPreset[vT]["3"]["start"].x, "collided": true} + if "vT" in vectoralDirectionPreset[vT][v]: vectoralDirectionPreset[vT][v] = {"start": vectoralDirectionPreset[vT][v]["start"]*scale,"end": vectoralDirectionPreset[vT][v]["end"]*scale,"ray": {"position": vectoralDirectionPreset[vT][v]["ray"]["position"]*scale,"length": vectoralDirectionPreset[vT][v]["ray"]["length"],"offset": vectoralDirectionPreset[vT][v]["ray"]["offset"], "collided": true}} + elif vT == "0": vectoralDirectionPreset[vT][v]["ray"] = {"position":vectoralDirectionPreset[vT][v]["ray"]["position"], "length":vectoralDirectionPreset[vT][v]["ray"]["length"],"offset":vectoralDirectionPreset[vT][v]["ray"]["offset"], "collided": false} + return vectoralDirectionPreset diff --git a/Alens/movementSystem0.0.3/source/entities/player/player_node.tscn b/Alens/movementSystem0.0.3/source/entities/player/player_node.tscn index 57d1b61..74ddf18 100644 --- a/Alens/movementSystem0.0.3/source/entities/player/player_node.tscn +++ b/Alens/movementSystem0.0.3/source/entities/player/player_node.tscn @@ -25,7 +25,7 @@ animations = [ { "frames": [ ExtResource( 13 ), ExtResource( 8 ), ExtResource( 9 ), ExtResource( 10 ), ExtResource( 4 ), ExtResource( 14 ), ExtResource( 7 ), ExtResource( 3 ), ExtResource( 5 ), ExtResource( 11 ), ExtResource( 12 ), ExtResource( 6 ) ], "loop": true, "name": "idle-default", -"speed": 5.0 +"speed": 60.0 } ] [node name="player_node" type="Node2D"] diff --git a/Alens/movementSystem0.0.3/source/levels/trinity_site/trinitySite-level.tscn b/Alens/movementSystem0.0.3/source/levels/trinity_site/trinitySite-level.tscn index 287d5e8..af235b8 100644 --- a/Alens/movementSystem0.0.3/source/levels/trinity_site/trinitySite-level.tscn +++ b/Alens/movementSystem0.0.3/source/levels/trinity_site/trinitySite-level.tscn @@ -8,3 +8,8 @@ script = ExtResource( 2 ) [node name="player_node" parent="." instance=ExtResource( 1 )] position = Vector2( 500.041, 281.319 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="StaticBody2D"] +polygon = PoolVector2Array( 169.691, 439.532, 314.837, 499.922, 502.362, 521.111, 805.369, 508.397, 928.266, 434.235, 974.883, 566.668, 848.807, 598.452, 369.929, 597.392, 111.42, 526.408, 97.6474, 440.592 )