/// <summary> /// コンストラクタ /// </summary> public GameProcess() { Int32 num = 4; player = new S_DataPlayer[num]; profile = new S_DataProfile[num]; shot = new S_DataShots[MAX_SHOTS]; sendPack = new S_DataPlayerPackage(); sendPack.data0 = new S_DataPlayer(); sendPack.data1 = new S_DataPlayer(); sendPack.data2 = new S_DataPlayer(); sendPack.data3 = new S_DataPlayer(); for (int i = 0; i < num; i++) { player[i] = new S_DataPlayer(); profile[i] = new S_DataProfile(); profile[i].player_id = i; profile[i].name = ""; } for (int i = 0; i < MAX_SHOTS; i++) { shot[i] = new S_DataShots(); } spawnarea = new int[4] { -1, -1, -1, -1 }; }
private static void parse_record(MrsConnection connection, IntPtr connection_data, UInt32 seqnum, UInt16 options, UInt16 payload_type, IntPtr payload, UInt32 payload_len) { //MRS_LOG_DEBUG( "parse_record seqnum={0} options=0x{1:X2} payload=0x{2:X2}/{3}", seqnum, options, payload_type, payload_len ); // MRS_PAYLOAD_TYPE_BEGIN - MRS_PAYLOAD_TYPE_ENDの範囲内で任意のIDを定義し、対応するアプリケーションコードを記述する switch (payload_type) { case 0x01: { read_echo(connection, ToBytes(payload, payload_len), payload_len); } break; case 0x02: { //MRS_LOG_DEBUG("RECEIVED DATA:{0}", payload); S_DataPlayer data = (S_DataPlayer)Marshal.PtrToStructure(payload, typeof(S_DataPlayer)); if (g_EnemyObject != null) { g_EnemyObject.transform.position = new Vector3(data.x, data.y, 0); g_EnemyObject.transform.eulerAngles = new Vector3(0.0f, 0.0f, data.angle); } //MRS_LOG_DEBUG("RECEIVED DATA pos_x:{0} pos_y:{1} pos_z:{2} look:{3} move:{4} ammos:{5}" // data.x, data.y, data.z, data.angle, data.move_a, data.ammos); } break; case 0x03: { //MRS_LOG_DEBUG("RECEIVED DATA:{0}", payload); S_DataShots data = (S_DataShots)Marshal.PtrToStructure(payload, typeof(S_DataShots)); GameObject bulletPool = GameObject.Find("BulletPool"); Pool script = bulletPool.GetComponent <Pool>(); script.Place(new Vector2(data.x, data.y), Quaternion.AngleAxis(data.angle, Vector3.forward)); //MRS_LOG_DEBUG("RECEIVED DATA pos_x:{0} pos_y:{1} pos_z:{2} angle:{3}", // data.pos_x, data.pos_y, data.pos_z, data.angle); } break; // 毎フレームデータ受信 case 0x11: { MRS_LOG_DEBUG("RECEIVED WRAP:{0}", payload); //S_WrapData s_Wrap = (S_WrapData)Marshal.PtrToStructure(payload, typeof(S_WrapData)); //for (int i = 0; i < s_Wrap.num; i++) //{ // MRS_LOG_DEBUG("RECEIVED DATA pos_x:{0} pos_y:{1} pos_z:{2} look:{3} move:{4} ammos:{5}", // s_Wrap.s_Data[i].pos_x, s_Wrap.s_Data[i].pos_y, s_Wrap.s_Data[i].pos_z, s_Wrap.s_Data[i].look_a, s_Wrap.s_Data[i].move_a, s_Wrap.s_Data[i].ammos); //} } break; default: {} break; } }
public void setPlayerData(int _num, IntPtr _data) { //Console.WriteLine(string.Format("setPlayerData : {0}",_data)); S_DataPlayer getdata = (S_DataPlayer)Marshal.PtrToStructure(_data, typeof(S_DataPlayer)); player[_num].id = (uint)_num; player[_num].x = getdata.x; player[_num].y = getdata.y; player[_num].angle = getdata.angle; player[_num].dead = getdata.dead; //Console.WriteLine("Successed PlayerNumber: {0} pos_x:{1} pos_y:{2} look:{3}", // _num, player[_num].x, player[_num].y, player[_num].angle); }
void OnGUI() { if (!m_IsRunning) { GUILayout.Space(30); GUILayout.BeginHorizontal(); GUILayout.Label("ServerAddr:"); g_ArgServerAddr = GUILayout.TextField(g_ArgServerAddr); GUILayout.Space(30); GUILayout.Label("ServerPort:"); g_ArgServerPort = GUILayout.TextField(g_ArgServerPort); GUILayout.Space(30); GUILayout.Label("TimeoutMsec:"); g_ArgTimeoutMsec = GUILayout.TextField(g_ArgTimeoutMsec); GUILayout.EndHorizontal(); GUILayout.Space(60); if (GUILayout.Button("Start Game", GUILayout.Width(300), GUILayout.Height(80))) { m_IsRunning = true; StartEchoClient(); //mrs.Utility.LoadScene("SampleScene"); } } else { if (GUILayout.Button("Back", GUILayout.Width(300), GUILayout.Height(50))) { m_IsRunning = false; mrs_close(g_nowconnect); mrs.Utility.LoadScene("NetworkSetting"); } if (GUILayout.Button("Send Player Data", GUILayout.Width(300), GUILayout.Height(50))) { g_Object = GameObject.Find("MainPlayer"); S_DataPlayer player = new S_DataPlayer(); player.x = g_Object.transform.position.x; player.y = g_Object.transform.position.y; player.angle = g_Object.transform.localEulerAngles.z; player.bullets = g_Object.GetComponent <Player>().bullet; player.died = false; IntPtr p_data = Marshal.AllocHGlobal(Marshal.SizeOf(player)); Marshal.StructureToPtr(player, p_data, false); if (g_nowconnect != null) { g_paytype = 0x02; mrs_write_record(g_nowconnect, g_RecordOptions, g_paytype, p_data, (uint)Marshal.SizeOf(player)); } Marshal.FreeHGlobal(p_data); } if (GUILayout.Button("Send Shot Data", GUILayout.Width(300), GUILayout.Height(50))) { S_DataShots shot = new S_DataShots(); shot.x = movepos; shot.y = 1.0f; shot.angle = angle; IntPtr p_data = Marshal.AllocHGlobal(Marshal.SizeOf(shot)); Marshal.StructureToPtr(shot, p_data, false); if (g_nowconnect != null) { g_paytype = 0x03; mrs_write_record(g_nowconnect, g_RecordOptions, g_paytype, p_data, (uint)Marshal.SizeOf(shot)); } Marshal.FreeHGlobal(p_data); } } }