Improve docs for rpc annotations
This commit is contained in:
parent
315d3c4d21
commit
54f2226ce5
|
@ -173,14 +173,14 @@
|
||||||
<method name="rpc" qualifiers="vararg const">
|
<method name="rpc" qualifiers="vararg const">
|
||||||
<return type="void" />
|
<return type="void" />
|
||||||
<description>
|
<description>
|
||||||
Perform an RPC (Remote Procedure Call). This is used for multiplayer and is normally not available, unless the function being called has been marked as [i]RPC[/i]. Calling this method on unsupported functions will result in an error.
|
Perform an RPC (Remote Procedure Call). This is used for multiplayer and is normally not available, unless the function being called has been marked as [i]RPC[/i]. Calling this method on unsupported functions will result in an error. See [method Node.rpc].
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="rpc_id" qualifiers="vararg const">
|
<method name="rpc_id" qualifiers="vararg const">
|
||||||
<return type="void" />
|
<return type="void" />
|
||||||
<param index="0" name="peer_id" type="int" />
|
<param index="0" name="peer_id" type="int" />
|
||||||
<description>
|
<description>
|
||||||
Perform an RPC (Remote Procedure Call) on a specific peer ID (see multiplayer documentation for reference). This is used for multiplayer and is normally not available unless the function being called has been marked as [i]RPC[/i]. Calling this method on unsupported functions will result in an error.
|
Perform an RPC (Remote Procedure Call) on a specific peer ID (see multiplayer documentation for reference). This is used for multiplayer and is normally not available unless the function being called has been marked as [i]RPC[/i]. Calling this method on unsupported functions will result in an error. See [method Node.rpc_id].
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="unbind" qualifiers="const">
|
<method name="unbind" qualifiers="const">
|
||||||
|
|
|
@ -648,7 +648,7 @@
|
||||||
<return type="int" enum="Error" />
|
<return type="int" enum="Error" />
|
||||||
<param index="0" name="method" type="StringName" />
|
<param index="0" name="method" type="StringName" />
|
||||||
<description>
|
<description>
|
||||||
Sends a remote procedure call request for the given [param method] to peers on the network (and locally), optionally sending all additional arguments as arguments to the method called by the RPC. The call request will only be received by nodes with the same [NodePath], including the exact same node name. Behavior depends on the RPC configuration for the given method, see [method rpc_config]. Methods are not exposed to RPCs by default. Returns [code]null[/code].
|
Sends a remote procedure call request for the given [param method] to peers on the network (and locally), optionally sending all additional arguments as arguments to the method called by the RPC. The call request will only be received by nodes with the same [NodePath], including the exact same node name. Behavior depends on the RPC configuration for the given method, see [method rpc_config] and [annotation @GDScript.@rpc]. Methods are not exposed to RPCs by default. Returns [code]null[/code].
|
||||||
[b]Note:[/b] You can only safely use RPCs on clients after you received the [code]connected_to_server[/code] signal from the [MultiplayerAPI]. You also need to keep track of the connection state, either by the [MultiplayerAPI] signals like [code]server_disconnected[/code] or by checking [code]get_multiplayer().peer.get_connection_status() == CONNECTION_CONNECTED[/code].
|
[b]Note:[/b] You can only safely use RPCs on clients after you received the [code]connected_to_server[/code] signal from the [MultiplayerAPI]. You also need to keep track of the connection state, either by the [MultiplayerAPI] signals like [code]server_disconnected[/code] or by checking [code]get_multiplayer().peer.get_connection_status() == CONNECTION_CONNECTED[/code].
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
|
@ -666,7 +666,7 @@
|
||||||
channel = 0,
|
channel = 0,
|
||||||
}
|
}
|
||||||
[/codeblock]
|
[/codeblock]
|
||||||
See [enum MultiplayerAPI.RPCMode] and [enum MultiplayerPeer.TransferMode]. An alternative is annotating methods and properties with the corresponding annotation ([code]@rpc("any")[/code], [code]@rpc("authority")[/code]). By default, methods are not exposed to networking (and RPCs).
|
See [enum MultiplayerAPI.RPCMode] and [enum MultiplayerPeer.TransferMode]. An alternative is annotating methods and properties with the corresponding [annotation @GDScript.@rpc] annotation ([code]@rpc(any_peer)[/code], [code]@rpc(authority)[/code]). By default, methods are not exposed to networking (and RPCs).
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="rpc_id" qualifiers="vararg">
|
<method name="rpc_id" qualifiers="vararg">
|
||||||
|
|
|
@ -565,14 +565,22 @@
|
||||||
</annotation>
|
</annotation>
|
||||||
<annotation name="@rpc" qualifiers="vararg">
|
<annotation name="@rpc" qualifiers="vararg">
|
||||||
<return type="void" />
|
<return type="void" />
|
||||||
<param index="0" name="mode" type="String" default="""" />
|
<param index="0" name="mode" type="String" default=""authority"" />
|
||||||
<param index="1" name="sync" type="String" default="""" />
|
<param index="1" name="sync" type="String" default=""call_remote"" />
|
||||||
<param index="2" name="transfer_mode" type="String" default="""" />
|
<param index="2" name="transfer_mode" type="String" default=""unreliable"" />
|
||||||
<param index="3" name="transfer_channel" type="int" default="0" />
|
<param index="3" name="transfer_channel" type="int" default="0" />
|
||||||
<description>
|
<description>
|
||||||
Mark the following method for remote procedure calls. See [url=$DOCS_URL/tutorials/networking/high_level_multiplayer.html]High-level multiplayer[/url].
|
Mark the following method for remote procedure calls. See [url=$DOCS_URL/tutorials/networking/high_level_multiplayer.html]High-level multiplayer[/url].
|
||||||
|
The order of [code]mode[/code], [code]sync[/code] and [code]transfer_mode[/code] does not matter and all arguments can be omitted, but [code]transfer_channel[/code] always has to be the last argument. The accepted values for [code]mode[/code] are [code]"any_peer"[/code] or [code]"authority"[/code], for [code]sync[/code] are [code]"call_remote"[/code] or [code]"call_local"[/code] and for [code]transfer_mode[/code] are [code]"unreliable"[/code], [code]"unreliable_ordered"[/code] or [code]"reliable"[/code].
|
||||||
[codeblock]
|
[codeblock]
|
||||||
@rpc()
|
@rpc
|
||||||
|
func fn(): pass
|
||||||
|
|
||||||
|
@rpc(any_peer, unreliable_ordered)
|
||||||
|
func fn_update_pos(): pass
|
||||||
|
|
||||||
|
@rpc(authority, call_remote, unreliable, 0) # Equivalent to @rpc
|
||||||
|
func fn_default(): pass
|
||||||
[/codeblock]
|
[/codeblock]
|
||||||
</description>
|
</description>
|
||||||
</annotation>
|
</annotation>
|
||||||
|
|
|
@ -109,7 +109,7 @@ GDScriptParser::GDScriptParser() {
|
||||||
// Warning annotations.
|
// Warning annotations.
|
||||||
register_annotation(MethodInfo("@warning_ignore", PropertyInfo(Variant::STRING, "warning")), AnnotationInfo::CLASS | AnnotationInfo::VARIABLE | AnnotationInfo::SIGNAL | AnnotationInfo::CONSTANT | AnnotationInfo::FUNCTION | AnnotationInfo::STATEMENT, &GDScriptParser::warning_annotations, varray(), true);
|
register_annotation(MethodInfo("@warning_ignore", PropertyInfo(Variant::STRING, "warning")), AnnotationInfo::CLASS | AnnotationInfo::VARIABLE | AnnotationInfo::SIGNAL | AnnotationInfo::CONSTANT | AnnotationInfo::FUNCTION | AnnotationInfo::STATEMENT, &GDScriptParser::warning_annotations, varray(), true);
|
||||||
// Networking.
|
// Networking.
|
||||||
register_annotation(MethodInfo("@rpc", PropertyInfo(Variant::STRING, "mode"), PropertyInfo(Variant::STRING, "sync"), PropertyInfo(Variant::STRING, "transfer_mode"), PropertyInfo(Variant::INT, "transfer_channel")), AnnotationInfo::FUNCTION, &GDScriptParser::rpc_annotation, varray("", "", "", 0), true);
|
register_annotation(MethodInfo("@rpc", PropertyInfo(Variant::STRING, "mode"), PropertyInfo(Variant::STRING, "sync"), PropertyInfo(Variant::STRING, "transfer_mode"), PropertyInfo(Variant::INT, "transfer_channel")), AnnotationInfo::FUNCTION, &GDScriptParser::rpc_annotation, varray("authority", "call_remote", "unreliable", 0), true);
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
is_ignoring_warnings = !(bool)GLOBAL_GET("debug/gdscript/warnings/enable");
|
is_ignoring_warnings = !(bool)GLOBAL_GET("debug/gdscript/warnings/enable");
|
||||||
|
|
Loading…
Reference in New Issue