rj-action-library/Runtime/Networking/Nodes/NetworkNode.cs

70 lines
1.6 KiB
C#
Raw Normal View History

2025-01-08 18:46:17 +00:00
using Godot;
2025-07-04 18:19:37 +00:00
using Rokojori.Tools;
2025-01-08 18:46:17 +00:00
using System.Collections.Generic;
namespace Rokojori
2025-07-04 18:19:37 +00:00
{
[Tool]
[GlobalClass]
2025-01-08 18:46:17 +00:00
public partial class NetworkNode : Node, INetworkNode
{
[ExportGroup("Network Settings")]
[Export]
public NetworkTransportType networkType = NetworkTransportType.Never_Networked;
public NetworkTransportType GetNetworkType(){ return networkType; }
[Export]
public int networkOwner;
public int GetNetworkOwner(){ return networkOwner; }
protected List<NetworkNodeMember> _networkNodeMembers = null;
protected NetworkNodeSlot _networkNodeSlot = new NetworkNodeSlot();
2025-07-04 18:19:37 +00:00
#if TOOLS
[ExportGroup("Help")]
[ExportToolButton( "Open Online Docs")]
public Callable openOnlineDocsButton => Callable.From(
()=>
{
OnlineDocs.Open( GetType() );
}
);
#endif
2025-01-08 18:46:17 +00:00
public virtual List<NetworkNodeMember> GetNetworkNodeMembers()
{
if ( _networkNodeMembers != null )
{
return _networkNodeMembers;
}
_networkNodeMembers = CreateNetworkNodeMembers();
_networkNodeSlot.onMessage.AddAction( _OnNetworkMessageReceived );
InitializeNetworkMembers();
return _networkNodeMembers;
}
protected virtual List<NetworkNodeMember> CreateNetworkNodeMembers()
{
return new List<NetworkNodeMember>(){ _networkNodeSlot };
}
protected virtual void InitializeNetworkMembers()
{
for ( int i = 0; i < _networkNodeMembers.Count; i++ )
{
_networkNodeMembers[ i ]._SetNode( this );
}
}
protected virtual void _OnNetworkMessageReceived( NetworkMessageEvent m )
{
}
}
}