コード例 #1
0
    public static GameObject SpawnObject(EN_PREFABS prefab, Vector3 pos, Vector3 rot)
    {
        GameObject       go  = Instantiate(EN_NetworkPrefabs.Prefab(prefab), pos, Quaternion.Euler(rot));
        EN_SyncTransform trs = go.GetComponent <EN_SyncTransform>();

        trs.is_mine       = true;
        trs.syncFrameRate = 10;

        return(go);
    }
コード例 #2
0
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            EN_Protocol.SendTCP(stream, new EN_PacketMessage("Hello!"));
        }
        if (Input.GetKeyDown(KeyCode.F1))
        {
            GameObject go = Instantiate(EN_NetworkPrefabs.Prefab(EN_PREFABS.Cube), Vector3.zero, Quaternion.identity);
            go.AddComponent <EN_SyncTransform>().syncFrameRate = 10;
            go.GetComponent <EN_SyncTransformClient>().enabled = false;

            Vector3 pos = go.transform.position;
            Vector3 rot = go.transform.rotation.eulerAngles;

            EN_PacketSpawnObject packet;
            packet.packet_type       = EN_TCP_PACKET_TYPE.SPAWN_OBJECT;
            packet.packet_prefab     = EN_PREFABS.Cube;
            packet.packet_network_id = go.GetInstanceID();
            packet.tX = pos.x; packet.tY = pos.y; packet.tZ = pos.z;
            packet.rX = rot.x; packet.rY = rot.y; packet.rZ = rot.z;

            EN_Protocol.SendTCP(stream, packet);
        }
        if (Input.GetKeyDown(KeyCode.F2))
        {
            //remove
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                int id = hit.transform.gameObject.GetInstanceID();
                Destroy(hit.transform.gameObject);


                EN_PacketRemoveObject packet;
                packet.packet_type       = EN_TCP_PACKET_TYPE.REMOVE_OBJECT;
                packet.packet_network_id = id;

                EN_Protocol.SendTCP(stream, packet);
            }
        }

        udp_in.text = TrafficInUDP().ToString();
        tcp_in.text = TrafficInTCP().ToString();

        udpBytesIn = 0;
        tcpBytesIn = 0;
    }
コード例 #3
0
    public static void BuildPrefabList()
    {
        if (Application.isEditor)
        {
#if UNITY_EDITOR
            // Find game path asset
            string[] assets = AssetDatabase.FindAssets("t:EN_NetworkPrefabs");
            if (assets == null || assets.Length < 1)
            {
                return;
            }

            // Find game path through asset
            string            asset          = AssetDatabase.GUIDToAssetPath(assets[0]);
            EN_NetworkPrefabs prefabs_editor = AssetDatabase.LoadAssetAtPath <EN_NetworkPrefabs>(asset);
            prefabs_editor.networkPrefabs = new Dictionary <EN_PREFABS, GameObject>();
            GameObject[] prefabs = Resources.LoadAll <GameObject>("NetworkPrefabs");

            for (int i = 0; i < prefabs.Length; i++)
            {
                EN_PrefabType prefab = prefabs[i].GetComponent <EN_PrefabType>();
                prefabs_editor.networkPrefabs.Add(prefab.type, prefabs[i]);
            }

            AssetDatabase.Refresh();
            EditorUtility.SetDirty(prefabs_editor);
            AssetDatabase.SaveAssets();

            instance = prefabs_editor;
#endif
        }
        else
        {
            EN_NetworkPrefabs prefabs_build = Resources.Load <EN_NetworkPrefabs>("NetworkDatabase/EN_NetworkPrefabs");
            prefabs_build.networkPrefabs = new Dictionary <EN_PREFABS, GameObject>();
            GameObject[] prefabs = Resources.LoadAll <GameObject>("NetworkPrefabs");

            for (int i = 0; i < prefabs.Length; i++)
            {
                EN_PrefabType prefab = prefabs[i].GetComponent <EN_PrefabType>();
                prefabs_build.networkPrefabs.Add(prefab.type, prefabs[i]);
            }

            instance = prefabs_build;
        }
    }
コード例 #4
0
    private void TranslateTCP(EN_TCP_PACKET_TYPE type, byte[] bytes)
    {
        if (type == EN_TCP_PACKET_TYPE.CONNECT)
        {
            // Someone connected and we want to establish who it is
            EN_PacketConnect packet = EN_Protocol.BytesToObject <EN_PacketConnect>(bytes);

            if (packet.packet_client_guid.Equals(EN_ClientSettings.CLIENT_GUID) == true)
            {
                packet.packet_client_name += " (you)";
            }

            AddClient(packet.packet_client_guid, packet.packet_client_name);
        }
        if (type == EN_TCP_PACKET_TYPE.GAME_STATE)
        {
            EN_PacketGameState packet = EN_Protocol.BytesToObject <EN_PacketGameState>(bytes);
        }
        if (type == EN_TCP_PACKET_TYPE.SPAWN_OBJECT)
        {
            EN_PacketSpawnObject packet = EN_Protocol.BytesToObject <EN_PacketSpawnObject>(bytes);
            Vector3    pos = new Vector3(packet.tX, packet.tY, packet.tZ);
            Quaternion rot = Quaternion.Euler(packet.rX, packet.rY, packet.rZ);
            GameObject go  = Instantiate(EN_NetworkPrefabs.Prefab(packet.packet_prefab), pos, rot);
            go.AddComponent <EN_NetworkObject>().network_id = packet.packet_network_id;

            EN_NetworkObject.Add(packet.packet_network_id, go);

            ConsoleMessage(string.Format("Spawned {0} with network ID {1}", go.name, packet.packet_network_id));
        }
        if (type == EN_TCP_PACKET_TYPE.REMOVE_OBJECT)
        {
            EN_PacketRemoveObject packet = EN_Protocol.BytesToObject <EN_PacketRemoveObject>(bytes);

            GameObject go = EN_NetworkObject.Find(packet.packet_network_id);
            string     n  = go.name;
            EN_NetworkObject.Remove(packet.packet_network_id);
            Destroy(go);

            ConsoleMessage(string.Format("Removed {0} with network ID {1}", n, packet.packet_network_id));
        }
    }
コード例 #5
0
    private void OnSceneLoad(Scene scene, LoadSceneMode mode)
    {
        /*
         *      if (Application.isEditor)
         *      {
         *          EN_NetworkPrefabs.BuildPrefabListEditor();
         *      }
         *      else
         *      {
         *          EN_NetworkPrefabs.BuildPrefabListStandalone();
         *          text_clients.text = "Standalone";
         *      }*/

        if (Application.isEditor == false)
        {
            Console();
        }

        EN_NetworkPrefabs.BuildPrefabList();
    }