UDP Fixes
-=-=-=-=- Curse the day I decided to port UDP code, as it ended up being two nights of work. At least It's done now (I hope). -Fixed UDP Support, API seems stable -Added UDP Chat demo (chat that can lose your packets, heh) -Added helpers to areas and bodies to get list of collided bodies and contained bodies. -Sped up screen/viewport capture code. -Added code to save an image as PNG -Small fix so scripts register their singletons after modules did.
This commit is contained in:
72
demos/misc/udp_chat/chat.gd
Normal file
72
demos/misc/udp_chat/chat.gd
Normal file
@ -0,0 +1,72 @@
|
||||
|
||||
extends Panel
|
||||
|
||||
# Really simple UDP chat client, not intended as a chat example!!
|
||||
# (UDP can lose packets and you won't normally find out, so don't do a chat this way)
|
||||
# This is just a demo that shows how to use the UDP class.
|
||||
|
||||
var udp = PacketPeerUDP.new()
|
||||
|
||||
func _process(delta):
|
||||
|
||||
if (not udp.is_listening()):
|
||||
return
|
||||
|
||||
while(udp.get_available_packet_count()>0):
|
||||
var packet = udp.get_var()
|
||||
if (typeof(packet)==TYPE_STRING):
|
||||
var host = udp.get_packet_ip()
|
||||
var port = udp.get_packet_port()
|
||||
get_node("chat/text").add_text("("+host+":"+str(port)+":) "+packet)
|
||||
get_node("chat/text").newline()
|
||||
|
||||
|
||||
|
||||
func _ready():
|
||||
# Initalization here
|
||||
get_node("chat").add_style_override("panel",get_stylebox("bg","Tree"))
|
||||
set_process(true)
|
||||
|
||||
|
||||
|
||||
func send_message(text):
|
||||
if (udp.is_listening()):
|
||||
udp.put_var(text)
|
||||
|
||||
|
||||
func _on_connect_toggled( pressed ):
|
||||
|
||||
|
||||
if (pressed):
|
||||
var err = udp.listen( get_node("listen_port").get_val() )
|
||||
if (err!=OK):
|
||||
get_node("status").set_text("Error:\nCan't Listen.")
|
||||
get_node("connect").set_pressed(false)
|
||||
else:
|
||||
get_node("status").set_text("Connected.")
|
||||
get_node("connect").set_text("Disconnect")
|
||||
err = udp.set_send_address(get_node("remote_host").get_text(),get_node("remote_port").get_val())
|
||||
if (err!=OK):
|
||||
get_node("status").set_text("Error:\nCan't Resolve.")
|
||||
get_node("connect").set_pressed(false)
|
||||
else:
|
||||
send_message("* "+get_node("user_name").get_text()+" entered chat.")
|
||||
else:
|
||||
|
||||
udp.close()
|
||||
get_node("status").set_text("Disconnected.")
|
||||
get_node("connect").set_text("Connect")
|
||||
|
||||
|
||||
|
||||
|
||||
func _on_entry_line_text_entered( text ):
|
||||
_on_entry_button_pressed();
|
||||
|
||||
func _on_entry_button_pressed():
|
||||
var msg = get_node("entry_line").get_text()
|
||||
if (msg==""):
|
||||
return
|
||||
send_message(get_node("user_name").get_text()+"> "+msg)
|
||||
|
||||
get_node("entry_line").set_text("")
|
||||
BIN
demos/misc/udp_chat/chat.scn
Normal file
BIN
demos/misc/udp_chat/chat.scn
Normal file
Binary file not shown.
5
demos/misc/udp_chat/engine.cfg
Normal file
5
demos/misc/udp_chat/engine.cfg
Normal file
@ -0,0 +1,5 @@
|
||||
[application]
|
||||
|
||||
name="UDP Chat"
|
||||
main_scene="res://chat.scn"
|
||||
icon="res://icon.png"
|
||||
BIN
demos/misc/udp_chat/icon.png
Normal file
BIN
demos/misc/udp_chat/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
Reference in New Issue
Block a user