Attempted implementation of player colors on world models. Not working.
parent
bd2de8adb8
commit
9664960cd8
|
@ -157,6 +157,13 @@ func die():
|
||||||
main.chat.rpc(&'chat_notification', "Player " + main.player_list.players[self.get_network_master()].name + " is dead")
|
main.chat.rpc(&'chat_notification', "Player " + main.player_list.players[self.get_network_master()].name + " is dead")
|
||||||
#queue_free()
|
#queue_free()
|
||||||
|
|
||||||
|
func update_color() -> void: #change player's wolrdmodel color
|
||||||
|
## @onready var player_material =
|
||||||
|
## var material = player_material
|
||||||
|
var player_material = mesh.mesh.surface_get_material(0).duplicate()
|
||||||
|
player_material.albedo_color = main.player_list.get(self.get_network_master()).color
|
||||||
|
print("Updating color of player pid ", self.get_network_master(), " to ", player_material.albedo_color )
|
||||||
|
mesh.mesh.surface_set_material(0, player_material)
|
||||||
|
|
||||||
func _physics_process(delta):
|
func _physics_process(delta):
|
||||||
# rpc_unreliable(&'set_global_transform', global_transform)
|
# rpc_unreliable(&'set_global_transform', global_transform)
|
||||||
|
|
|
@ -1,9 +1,18 @@
|
||||||
[gd_scene load_steps=6 format=2]
|
[gd_scene load_steps=7 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://Assets/Characters/Player.gd" type="Script" id=1]
|
[ext_resource path="res://Assets/Characters/Player.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://Assets/Weapons/Weapon.tscn" type="PackedScene" id=3]
|
[ext_resource path="res://Assets/Weapons/Weapon.tscn" type="PackedScene" id=3]
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id=4]
|
||||||
|
albedo_color = Color(0.545098, 0.545098, 0.545098, 1)
|
||||||
|
roughness = 0.22
|
||||||
|
rim_enabled = true
|
||||||
|
rim_tint = 0.0
|
||||||
|
proximity_fade_distance = 0.68
|
||||||
|
distance_fade_max_distance = 0.4
|
||||||
|
|
||||||
[sub_resource type="CapsuleMesh" id=1]
|
[sub_resource type="CapsuleMesh" id=1]
|
||||||
|
material = SubResource( 4 )
|
||||||
radius = 0.4
|
radius = 0.4
|
||||||
mid_height = 0.9
|
mid_height = 0.9
|
||||||
|
|
||||||
|
|
14
Game/Main.gd
14
Game/Main.gd
|
@ -156,9 +156,14 @@ func _input(_event) -> void:
|
||||||
|
|
||||||
if player_list.players.has(pid):
|
if player_list.players.has(pid):
|
||||||
var old_name = player_list.get(pid).name
|
var old_name = player_list.get(pid).name
|
||||||
|
|
||||||
if old_name != new_info.name:
|
if old_name != new_info.name:
|
||||||
chat.chat_notification("Player [b]" + old_name + "[/b] changed name to [b]" + new_info.name + "[/b]")
|
chat.chat_notification("Player [b]" + old_name + "[/b] changed name to [b]" + new_info.name + "[/b]")
|
||||||
|
|
||||||
|
var old_color = player_list.get(pid).color
|
||||||
|
if old_color != new_info.color:
|
||||||
|
chat.chat_notification("Player [b]" + new_info.name + "[/b] changed color to [b][color=" + new_info.color.to_html() + "]" + new_info.name + "[/color][/b]")
|
||||||
|
$Players.get_node(str(pid)).update_color()
|
||||||
|
|
||||||
elif get_tree().network_peer.get_unique_id() == 1:
|
elif get_tree().network_peer.get_unique_id() == 1:
|
||||||
for i in player_list.players.keys(): #notify existing players the new one has joined
|
for i in player_list.players.keys(): #notify existing players the new one has joined
|
||||||
# if i != pid:
|
# if i != pid:
|
||||||
|
@ -207,8 +212,8 @@ func create_player(pid: int, is_local:= false, respawn:= false) -> void:
|
||||||
var new_info: PlayerInfo
|
var new_info: PlayerInfo
|
||||||
|
|
||||||
if not respawn: # first spawn
|
if not respawn: # first spawn
|
||||||
new_info = PlayerInfo.new() # generate namee, color etc
|
new_info = PlayerInfo.new() # generate name, color etc
|
||||||
else: # respawn
|
elif is_local: # respawn, only works for local players
|
||||||
new_info = player_list.players[pid] # reuse previous name, color etc
|
new_info = player_list.players[pid] # reuse previous name, color etc
|
||||||
new_info.health = 100 # give the respawned player full health
|
new_info.health = 100 # give the respawned player full health
|
||||||
|
|
||||||
|
@ -224,9 +229,11 @@ func create_player(pid: int, is_local:= false, respawn:= false) -> void:
|
||||||
local_player.get_node("Head/Camera").current = true
|
local_player.get_node("Head/Camera").current = true
|
||||||
$NetworkTesting/TextEdit.text = new_info.name
|
$NetworkTesting/TextEdit.text = new_info.name
|
||||||
$NetworkTesting/ColorPickerButton.color = new_info.color
|
$NetworkTesting/ColorPickerButton.color = new_info.color
|
||||||
|
#local_player.rpc(&'set_color', new_info.color)
|
||||||
elif local_player: # if there is a local player, make sure we keep using it's camera
|
elif local_player: # if there is a local player, make sure we keep using it's camera
|
||||||
new_player.get_node("Head/Camera").current = false
|
new_player.get_node("Head/Camera").current = false
|
||||||
local_player.get_node("Head/Camera").current = true
|
local_player.get_node("Head/Camera").current = true
|
||||||
|
#new_player.rpc(&'set_color', player_list.get(pid).color)
|
||||||
|
|
||||||
func start_dedicated_server(): # start server without creating a local player
|
func start_dedicated_server(): # start server without creating a local player
|
||||||
role = NetworkRole.DEDICATED_SERVER
|
role = NetworkRole.DEDICATED_SERVER
|
||||||
|
@ -311,3 +318,4 @@ func _on_TextEdit_text_submitted(new_text):
|
||||||
func _on_ColorPickerButton_color_changed(color):
|
func _on_ColorPickerButton_color_changed(color):
|
||||||
player_list.players[get_tree().network_peer.get_unique_id()].color = color
|
player_list.players[get_tree().network_peer.get_unique_id()].color = color
|
||||||
push_local_player_info()
|
push_local_player_info()
|
||||||
|
local_player.rpc(&'set_color', color)
|
||||||
|
|
Reference in New Issue