Example #1
0
        private void SynchronizeNetworkedNodes(int PeerId)
        {
            foreach (Node NetworkedNode in OrderedNetworkedNodes)
            {
                Vector3 SpawnPos             = new Vector3();
                Node2D  NetworkedNode2D      = NetworkedNode as Node2D;
                Spatial NetworkedNodeSpatial = NetworkedNode as Spatial;
                if (NetworkedNode2D != null)
                {
                    SpawnPos = NetworkedNode2D.Position.To3D();
                }
                else if (NetworkedNodeSpatial != null)
                {
                    SpawnPos = NetworkedNodeSpatial.Translation;
                }

                string ParentPath = NetworkedNode.GetParent().GetPath();
                if (NetworkedTypes.ContainsKey(NetworkedNode))
                {
                    string TypePath = NetworkedTypes[NetworkedNode];
                    RpcId(PeerId, nameof(SpawnNodeType), TypePath, ParentPath, NetworkedNode.Name,
                          NetworkedNode.GetNetworkMaster(), SpawnPos);
                }
                else if (NetworkedScenes.ContainsKey(NetworkedNode))
                {
                    string ScenePath = NetworkedScenes[NetworkedNode];
                    RpcId(PeerId, nameof(SpawnNodeScene), ScenePath, ParentPath, NetworkedNode.Name,
                          NetworkedNode.GetNetworkMaster(), SpawnPos);
                }
            }
        }
Example #2
0
        private void ClearNetworkedNodes()
        {
            foreach (Node NetworkedNode in OrderedNetworkedNodes.Where(IsInstanceValid))
            {
                NetworkedNode.RemoveAndFree();
            }

            OrderedNetworkedNodes.Clear();
            NetworkedScenes.Clear();
            NetworkedTypes.Clear();
        }