public void ChangePhase(WorldState state = WorldState.UNKNOWN, WorldStateExtra extra = WorldStateExtra.NONE) { Debug.Log("Change from " + m_state); if (state != WorldState.UNKNOWN) { m_state = state; m_state_extra = extra; } else { m_state = m_state == WorldState.CENTER ? (WorldState)((int)(WorldState.CENTER) + Random.Range(1, 3)) : WorldState.CENTER; if (m_state == WorldState.CENTER) { int rand = Random.Range(0, 3); extra = (WorldStateExtra)rand; if (extra == m_state_extra) { extra++; } m_state_extra = extra; } else { extra = (WorldStateExtra)((int)m_state - 1); if (extra == m_state_extra) { extra++; m_state = (WorldState)((int)extra + 1); } m_state_extra = extra; } } Debug.Log("Change to " + m_state); IList <GameObject> l = ObjectMgr.Instance.Get(GOType.GO_PLAYER); foreach (var a in l) { a.SendMessage("OnChangePhase", new short[] { (short)m_state, (short)m_state_extra }); } l = ObjectMgr.Instance.Get(GOType.GO_BOMB); Debug.Log("size : " + l.Count); foreach (var a in l) { a.SendMessage("OnChangePhase", m_state); } Debug.Log("change gravity from " + Physics.gravity + " to " + gravityStates[(int)m_state]); Physics.gravity = gravityStates[(int)m_state]; TurnCamera(); if (s != null) { s.SendPacketBroadCast(PacketBuilder.BuildChangePhasePacket(m_state, m_state_extra)); } }