[Major] movementSystem0.0.3 - reclassified - {FAILED}

Methods implemented in movementSystem0.0.3 have been reclassified as - failed.
This commit is contained in:
Alan Alexander Cerna 2021-10-31 20:02:10 +03:00
parent f9125edb50
commit 9d864e635c
11 changed files with 105 additions and 30 deletions

View File

@ -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]

View File

@ -1,6 +1,6 @@
extends Node
const LEVEL_SCALE = 0.05
const LEVEL_SCALE = 0.25
func _ready():
$player_node.set_scale(LEVEL_SCALE)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"]

View File

@ -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 )