Example #1
0
    private void onRemoteFunction( ushort funcid, byte[] argbuf )
    {
        switch( (PACKETTYPE)funcid) {
        case PACKETTYPE.R2C_PROP2D_CREATE_SNAPSHOT:
            {
                PacketProp2DCreateSnapshot pkt = new PacketProp2DCreateSnapshot();
                pkt.fromBytes(argbuf);
                HM.Layer layer = m_layer_pool.get(pkt.layer_id);
                HM.TileDeck deck = m_tiledeck_pool.get(pkt.tiledeck_id);
                if( layer!=null && deck!=null) {
                    HM.Prop2D prop = m_prop2d_pool.get(pkt.prop_id);
                    if(prop==null) {
                        prop = m_prop2d_pool.ensure(pkt.prop_id);
                        layer.insertProp(prop);
                    }
                    prop.setDeck(deck);
                    prop.setIndex(pkt.index);
                    prop.setScl(pkt.scl.x, pkt.scl.y);
                    prop.setLoc(pkt.loc.x, pkt.loc.y);
                    prop.setRot(pkt.rot);
                    prop.setXFlip( pkt.xflip != 0 );
                    prop.setYFlip( pkt.yflip != 0 );
                    prop.setColor(pkt.color.r,pkt.color.g,pkt.color.b,pkt.color.a);
                }

                break;
            }
        case PACKETTYPE.R2C_PROP2D_LOC:
            {
                uint prop_id = BitConverter.ToUInt32(argbuf,0);
                float x = BitConverter.ToSingle(argbuf,4);
                float y = BitConverter.ToSingle(argbuf,8);
                HM.Prop2D prop = m_prop2d_pool.get(prop_id);
                if(prop!=null) {
                    prop.setLoc(x,y);
                    Debug.Log( "received prop2d_loc. id:" + prop_id );
                }
                break;
            }
        case PACKETTYPE.R2C_PROP2D_GRID:
            {
                uint prop_id = BitConverter.ToUInt32(argbuf,0);
                uint grid_id = BitConverter.ToUInt32(argbuf,4);
                HM.Prop2D prop = m_prop2d_pool.get(prop_id);
                HM.Grid grid = m_grid_pool.get(grid_id);
                if(prop!=null && grid!=null) {
                    prop.setGrid(grid);
                    Debug.Log("received prop2d_grid. p:" + prop_id + " g:" + grid_id );
                }
                break;
            }
        case PACKETTYPE.R2C_PROP2D_INDEX:
            {
                uint prop_id = BitConverter.ToUInt32(argbuf,0);
                int ind = BitConverter.ToInt32(argbuf,4);
                HM.Prop2D prop = m_prop2d_pool.get(prop_id);
                if(prop!=null){
                    prop.setIndex(ind);
                    Debug.Log("received p2d_ind. p:" + prop_id + " ind:" + ind );
                }
                break;
            }
        case PACKETTYPE.R2C_PROP2D_SCALE:
            {
                uint prop_id = BitConverter.ToUInt32(argbuf,0);
                float sx = BitConverter.ToSingle(argbuf,4);
                float sy = BitConverter.ToSingle(argbuf,8);
                HM.Prop2D prop = m_prop2d_pool.get(prop_id);
                if(prop!=null) {
                    prop.setScl(sx,sy);
                    Debug.Log( "received prop2d_scl. id:" + prop_id );
                }
                break;
            }
        case PACKETTYPE.R2C_PROP2D_ROT:
            {
                uint prop_id = BitConverter.ToUInt32(argbuf,0);
                float rot = BitConverter.ToSingle(argbuf,4);
                HM.Prop2D prop = m_prop2d_pool.get(prop_id);
                if(prop!=null) {
                    prop.setRot(rot);
                    Debug.Log( "received prop2d_rot. id:" + prop_id );
                }
                break;
            }
        case PACKETTYPE.R2C_PROP2D_XFLIP:
            {
                uint prop_id = BitConverter.ToUInt32(argbuf,0);
                int xfl = BitConverter.ToInt32(argbuf,4);
                HM.Prop2D prop = m_prop2d_pool.get(prop_id);
                if(prop!=null) {
                    prop.setXFlip(xfl!=0);
                    Debug.Log( "received prop2d_xfl. id:" + prop_id );
                }
                break;
            }
        case PACKETTYPE.R2C_PROP2D_YFLIP:
            {
                uint prop_id = BitConverter.ToUInt32(argbuf,0);
                int yfl = BitConverter.ToInt32(argbuf,4);
                HM.Prop2D prop = m_prop2d_pool.get(prop_id);
                if(prop!=null) {
                    prop.setYFlip(yfl!=0);
                    Debug.Log( "received prop2d_yfl. id:" + prop_id );
                }
                break;
            }
        case PACKETTYPE.R2C_PROP2D_COLOR:
            {
                uint prop_id = BitConverter.ToUInt32(argbuf,0);
                float r = BitConverter.ToSingle(argbuf,4);
                float g = BitConverter.ToSingle(argbuf,8);
                float b = BitConverter.ToSingle(argbuf,12);
                float a = BitConverter.ToSingle(argbuf,16);
                HM.Prop2D prop = m_prop2d_pool.get(prop_id);
                if(prop!=null) {
                    prop.setColor(r,g,b,a);
                    Debug.Log( "received prop2d_col. id:" + prop_id );
                }
                break;
            }
        case PACKETTYPE.R2C_PROP2D_DELETE:
            {
                uint prop_id = BitConverter.ToUInt32(argbuf,0);
                HM.Prop2D prop = m_prop2d_pool.get(prop_id);
                if(prop!=null) {
                    prop.setToClean(true);
                    Debug.Log("received prop2d_del. id:" + prop_id );
                }
                break;
            }
        case PACKETTYPE.R2C_LAYER_CREATE:
            {
                uint layer_id = BitConverter.ToUInt32(argbuf,0);
                m_layer_pool.ensure(layer_id);
                Debug.Log("received layer_create. " + layer_id );
                break;
            }
        case PACKETTYPE.R2C_LAYER_VIEWPORT:
            {
                uint layer_id = BitConverter.ToUInt32(argbuf,0);
                uint vp_id = BitConverter.ToUInt32(argbuf,4);
                HM.Layer l = m_layer_pool.get(layer_id);
                HM.Viewport vp = m_viewport_pool.get(vp_id);
                if(l!=null && vp!=null) {
                    l.setViewport(vp);
                    Debug.Log("received layer_vp l:" + layer_id + " vp:" + vp_id );
                }
                break;
            }
        case PACKETTYPE.R2C_LAYER_CAMERA:
            {
                uint layer_id = BitConverter.ToUInt32(argbuf,0);
                uint camera_id = BitConverter.ToUInt32(argbuf,4);
                HM.Layer l = m_layer_pool.get(layer_id);
                HM.Camera cam = m_camera_pool.get(camera_id);
                if(l!=null && cam!=null) {
                    l.setCamera(cam);
                    Debug.Log("received layer_camera. l:" + layer_id + " cam:" + camera_id );
                }
                break;
            }
        case PACKETTYPE.R2C_VIEWPORT_CREATE:
            {
                uint vp_id = BitConverter.ToUInt32(argbuf,0);
                m_viewport_pool.ensure(vp_id);
                Debug.Log("received vp_create:" + vp_id );
                break;
            }
        case PACKETTYPE.R2C_VIEWPORT_SIZE:
            {
                uint vp_id = BitConverter.ToUInt32(argbuf,0);
                HM.Viewport vp = m_viewport_pool.get(vp_id);
                if(vp!=null) {
                    uint w = BitConverter.ToUInt32(argbuf,4);
                    uint h = BitConverter.ToUInt32(argbuf,8);
                    vp.setSize(w,h);
                    Debug.Log("received vp_size. id:" + vp_id + " " + w + "," + h );
                }
                break;
            }
        case PACKETTYPE.R2C_VIEWPORT_SCALE:
            {
                uint vp_id = BitConverter.ToUInt32(argbuf,0);
                HM.Viewport vp = m_viewport_pool.get(vp_id);
                if(vp!=null) {
                    float sclx = BitConverter.ToSingle(argbuf,4);
                    float scly = BitConverter.ToSingle(argbuf,8);
                    vp.setScale2D(sclx,scly);
                    Debug.Log("received vp_scale. id:" + vp_id + " " + sclx + "," + scly );
                }
                break;
            }
        case PACKETTYPE.R2C_CAMERA_CREATE:
            {
                uint cam_id = BitConverter.ToUInt32(argbuf,0);
                m_camera_pool.ensure(cam_id);
                Debug.Log("received cam_create. " + cam_id );
                break;
            }
        case PACKETTYPE.R2C_CAMERA_LOC:
            {
                uint cam_id = BitConverter.ToUInt32(argbuf,0);
                HM.Camera cam = m_camera_pool.get(cam_id);
                if(cam!=null) {
                    float x = BitConverter.ToSingle(argbuf,4);
                    float y = BitConverter.ToSingle(argbuf,8);
                    cam.setLoc(x,y);
                    Debug.Log("received cam_loc: " + cam_id + " " + x + "," + y );
                }
                break;
            }
        case PACKETTYPE.R2C_TEXTURE_CREATE:
            {
                uint tex_id = BitConverter.ToUInt32(argbuf,0);
                m_texture_pool.ensure(tex_id);
                Debug.Log( "received tex_create:" + tex_id );
                break;
            }
        case PACKETTYPE.R2C_TEXTURE_IMAGE:
            {
                uint tex_id = BitConverter.ToUInt32(argbuf,0);
                uint img_id = BitConverter.ToUInt32(argbuf,4);
                HM.Texture tex = m_texture_pool.get(tex_id);
                HM.Image img = m_image_pool.get(img_id);
                if( tex != null && img != null ) {
                    tex.setImage(img);
                    print("received tex_image. tex:" + tex_id + " img:" + img_id );
                }
                break;
            }
        case PACKETTYPE.R2C_IMAGE_CREATE:
            {
                uint img_id = BitConverter.ToUInt32(argbuf,0);
                m_image_pool.ensure(img_id);
                Debug.Log( "received img_create:" + img_id);
                break;
            }
        case PACKETTYPE.R2C_IMAGE_LOAD_PNG:
            {
                uint img_id = BitConverter.ToUInt32(argbuf,0);
                int pathlen = (int)argbuf[4];
                string path = Util.getASCIIString( argbuf,4+1,pathlen);
                FileEntry fe = m_storage.findFileEntry(path);
                HM.Image img = m_image_pool.get(img_id);
                if(fe != null && img != null ) {
                    img.loadPNGMem( fe.getBody() );
                    Debug.Log( "received imgloadpng:" + img_id + " path:" + path );
                }
                break;
            }
        case PACKETTYPE.R2C_TILEDECK_CREATE:
            {
                uint dk_id = BitConverter.ToUInt32(argbuf,0);
                m_tiledeck_pool.ensure(dk_id);
                Debug.Log( "received tdk_create. id:" + dk_id );
                break;
            }
        case PACKETTYPE.R2C_TILEDECK_TEXTURE:
            {
                uint dk_id = BitConverter.ToUInt32(argbuf,0);
                uint tex_id = BitConverter.ToUInt32(argbuf,4);
                HM.TileDeck dk = m_tiledeck_pool.get(dk_id);
                HM.Texture tex = m_texture_pool.get(tex_id);
                if( dk != null && tex != null ) {
                    dk.setTexture(tex);
                    Debug.Log( "received tdk_tex. dk:" + dk_id + " tex:" + tex_id );
                }
                break;
            }
        case PACKETTYPE.R2C_TILEDECK_SIZE:
            {
                uint dk_id = BitConverter.ToUInt32(argbuf,0);
                uint sprw = BitConverter.ToUInt32(argbuf,4);
                uint sprh = BitConverter.ToUInt32(argbuf,8);
                uint cellw = BitConverter.ToUInt32(argbuf,12);
                uint cellh = BitConverter.ToUInt32(argbuf,16);
                HM.TileDeck dk = m_tiledeck_pool.get(dk_id);
                if(dk != null) {
                    dk.setSize( sprw, sprh, cellw, cellh );
                    Debug.Log( "received tdk_size. id:" + dk_id + " spr:" + sprw + "," + sprh + " cell:" + cellw + "," + cellh );
                }
                break;
            }

        case PACKETTYPE.R2C_GRID_CREATE_SNAPSHOT:
            {
                PacketGridCreateSnapshot pkt = new PacketGridCreateSnapshot();
                pkt.fromBytes(argbuf);
                HM.TileDeck deck = m_tiledeck_pool.get(pkt.tiledeck_id);
                if(deck!=null) {
                    HM.Grid g = m_grid_pool.ensure(pkt.id);
                    g.setSize( pkt.width, pkt.height );
                    g.tiledeck_id = pkt.tiledeck_id;
                    g.deck = deck;
                    g.enfat_epsilon = pkt.enfat_epsilon;
                    Debug.Log("received gr-cr-ss id:" + pkt.id + " wh:" + pkt.width + "," + pkt.height );
                } else {
                    Debug.LogWarning("grid_create_ss: tiledeck not found:" + pkt.tiledeck_id );
                }
                break;
            }
        case PACKETTYPE.R2C_GRID_TABLE_SNAPSHOT:
            {
                uint grid_id = BitConverter.ToUInt32(argbuf,0);
                uint nbytes = BitConverter.ToUInt32(argbuf,4);
                HM.Grid g = m_grid_pool.get(grid_id);
                if(g!=null) {
                    if(nbytes == g.getIndexTableSize() ) {
                        g.bulkSetIndex(argbuf,8);
                        Debug.Log("received grid_table_ss id:" + grid_id );
                    }
                }
                break;
            }
        case PACKETTYPE.R2C_GRID_INDEX:
            {
                uint grid_id = BitConverter.ToUInt32(argbuf,0);
                uint x = BitConverter.ToUInt32(argbuf,4);
                uint y = BitConverter.ToUInt32(argbuf,8);
                int ind = BitConverter.ToInt32(argbuf,12);
                HM.Grid g = m_grid_pool.get(grid_id);
                if(g!=null) {
                    g.set(x,y,ind);
                    Debug.Log("received grid_index id:" + grid_id + " xyi:" + x + "," + y + "," + ind );
                }

                break;
            }
        case PACKETTYPE.R2C_FILE:
            {
                int pathlen = (int) argbuf[0];
                string path = Util.getASCIIString(argbuf,1,pathlen);
                ushort datalen = BitConverter.ToUInt16(argbuf,1+pathlen);
                byte[] data = Util.slice(argbuf,1+pathlen+2,datalen);
                Debug.Log("received FILE. pathlen:" + pathlen + " path:" + path + "datalen:" + datalen );
                m_storage.ensureFileEntry(path,data);
                break;
            }
        case PACKETTYPE.ERROR:
            Debug.LogWarning( "func ERROR! funcid:" + funcid );
            break;
        }
    }
Example #2
0
    private void onRemoteFunction(ushort funcid, byte[] argbuf)
    {
        switch ((PACKETTYPE)funcid)
        {
        case PACKETTYPE.R2C_PROP2D_CREATE_SNAPSHOT:
        {
            PacketProp2DCreateSnapshot pkt = new PacketProp2DCreateSnapshot();
            pkt.fromBytes(argbuf);
            HM.Layer    layer = m_layer_pool.get(pkt.layer_id);
            HM.TileDeck deck  = m_tiledeck_pool.get(pkt.tiledeck_id);
            if (layer != null && deck != null)
            {
                HM.Prop2D prop = m_prop2d_pool.get(pkt.prop_id);
                if (prop == null)
                {
                    prop = m_prop2d_pool.ensure(pkt.prop_id);
                    layer.insertProp(prop);
                }
                prop.setDeck(deck);
                prop.setIndex(pkt.index);
                prop.setScl(pkt.scl.x, pkt.scl.y);
                prop.setLoc(pkt.loc.x, pkt.loc.y);
                prop.setRot(pkt.rot);
                prop.setXFlip(pkt.xflip != 0);
                prop.setYFlip(pkt.yflip != 0);
                prop.setColor(pkt.color.r, pkt.color.g, pkt.color.b, pkt.color.a);
            }

            break;
        }

        case PACKETTYPE.R2C_PROP2D_LOC:
        {
            uint      prop_id = BitConverter.ToUInt32(argbuf, 0);
            float     x       = BitConverter.ToSingle(argbuf, 4);
            float     y       = BitConverter.ToSingle(argbuf, 8);
            HM.Prop2D prop    = m_prop2d_pool.get(prop_id);
            if (prop != null)
            {
                prop.setLoc(x, y);
                Debug.Log("received prop2d_loc. id:" + prop_id);
            }
            break;
        }

        case PACKETTYPE.R2C_PROP2D_GRID:
        {
            uint      prop_id = BitConverter.ToUInt32(argbuf, 0);
            uint      grid_id = BitConverter.ToUInt32(argbuf, 4);
            HM.Prop2D prop    = m_prop2d_pool.get(prop_id);
            HM.Grid   grid    = m_grid_pool.get(grid_id);
            if (prop != null && grid != null)
            {
                prop.setGrid(grid);
                Debug.Log("received prop2d_grid. p:" + prop_id + " g:" + grid_id);
            }
            break;
        }

        case PACKETTYPE.R2C_PROP2D_INDEX:
        {
            uint      prop_id = BitConverter.ToUInt32(argbuf, 0);
            int       ind     = BitConverter.ToInt32(argbuf, 4);
            HM.Prop2D prop    = m_prop2d_pool.get(prop_id);
            if (prop != null)
            {
                prop.setIndex(ind);
                Debug.Log("received p2d_ind. p:" + prop_id + " ind:" + ind);
            }
            break;
        }

        case PACKETTYPE.R2C_PROP2D_SCALE:
        {
            uint      prop_id = BitConverter.ToUInt32(argbuf, 0);
            float     sx      = BitConverter.ToSingle(argbuf, 4);
            float     sy      = BitConverter.ToSingle(argbuf, 8);
            HM.Prop2D prop    = m_prop2d_pool.get(prop_id);
            if (prop != null)
            {
                prop.setScl(sx, sy);
                Debug.Log("received prop2d_scl. id:" + prop_id);
            }
            break;
        }

        case PACKETTYPE.R2C_PROP2D_ROT:
        {
            uint      prop_id = BitConverter.ToUInt32(argbuf, 0);
            float     rot     = BitConverter.ToSingle(argbuf, 4);
            HM.Prop2D prop    = m_prop2d_pool.get(prop_id);
            if (prop != null)
            {
                prop.setRot(rot);
                Debug.Log("received prop2d_rot. id:" + prop_id);
            }
            break;
        }

        case PACKETTYPE.R2C_PROP2D_XFLIP:
        {
            uint      prop_id = BitConverter.ToUInt32(argbuf, 0);
            int       xfl     = BitConverter.ToInt32(argbuf, 4);
            HM.Prop2D prop    = m_prop2d_pool.get(prop_id);
            if (prop != null)
            {
                prop.setXFlip(xfl != 0);
                Debug.Log("received prop2d_xfl. id:" + prop_id);
            }
            break;
        }

        case PACKETTYPE.R2C_PROP2D_YFLIP:
        {
            uint      prop_id = BitConverter.ToUInt32(argbuf, 0);
            int       yfl     = BitConverter.ToInt32(argbuf, 4);
            HM.Prop2D prop    = m_prop2d_pool.get(prop_id);
            if (prop != null)
            {
                prop.setYFlip(yfl != 0);
                Debug.Log("received prop2d_yfl. id:" + prop_id);
            }
            break;
        }

        case PACKETTYPE.R2C_PROP2D_COLOR:
        {
            uint      prop_id = BitConverter.ToUInt32(argbuf, 0);
            float     r       = BitConverter.ToSingle(argbuf, 4);
            float     g       = BitConverter.ToSingle(argbuf, 8);
            float     b       = BitConverter.ToSingle(argbuf, 12);
            float     a       = BitConverter.ToSingle(argbuf, 16);
            HM.Prop2D prop    = m_prop2d_pool.get(prop_id);
            if (prop != null)
            {
                prop.setColor(r, g, b, a);
                Debug.Log("received prop2d_col. id:" + prop_id);
            }
            break;
        }

        case PACKETTYPE.R2C_PROP2D_DELETE:
        {
            uint      prop_id = BitConverter.ToUInt32(argbuf, 0);
            HM.Prop2D prop    = m_prop2d_pool.get(prop_id);
            if (prop != null)
            {
                prop.setToClean(true);
                Debug.Log("received prop2d_del. id:" + prop_id);
            }
            break;
        }

        case PACKETTYPE.R2C_LAYER_CREATE:
        {
            uint layer_id = BitConverter.ToUInt32(argbuf, 0);
            m_layer_pool.ensure(layer_id);
            Debug.Log("received layer_create. " + layer_id);
            break;
        }

        case PACKETTYPE.R2C_LAYER_VIEWPORT:
        {
            uint        layer_id = BitConverter.ToUInt32(argbuf, 0);
            uint        vp_id    = BitConverter.ToUInt32(argbuf, 4);
            HM.Layer    l        = m_layer_pool.get(layer_id);
            HM.Viewport vp       = m_viewport_pool.get(vp_id);
            if (l != null && vp != null)
            {
                l.setViewport(vp);
                Debug.Log("received layer_vp l:" + layer_id + " vp:" + vp_id);
            }
            break;
        }

        case PACKETTYPE.R2C_LAYER_CAMERA:
        {
            uint      layer_id  = BitConverter.ToUInt32(argbuf, 0);
            uint      camera_id = BitConverter.ToUInt32(argbuf, 4);
            HM.Layer  l         = m_layer_pool.get(layer_id);
            HM.Camera cam       = m_camera_pool.get(camera_id);
            if (l != null && cam != null)
            {
                l.setCamera(cam);
                Debug.Log("received layer_camera. l:" + layer_id + " cam:" + camera_id);
            }
            break;
        }

        case PACKETTYPE.R2C_VIEWPORT_CREATE:
        {
            uint vp_id = BitConverter.ToUInt32(argbuf, 0);
            m_viewport_pool.ensure(vp_id);
            Debug.Log("received vp_create:" + vp_id);
            break;
        }

        case PACKETTYPE.R2C_VIEWPORT_SIZE:
        {
            uint        vp_id = BitConverter.ToUInt32(argbuf, 0);
            HM.Viewport vp    = m_viewport_pool.get(vp_id);
            if (vp != null)
            {
                uint w = BitConverter.ToUInt32(argbuf, 4);
                uint h = BitConverter.ToUInt32(argbuf, 8);
                vp.setSize(w, h);
                Debug.Log("received vp_size. id:" + vp_id + " " + w + "," + h);
            }
            break;
        }

        case PACKETTYPE.R2C_VIEWPORT_SCALE:
        {
            uint        vp_id = BitConverter.ToUInt32(argbuf, 0);
            HM.Viewport vp    = m_viewport_pool.get(vp_id);
            if (vp != null)
            {
                float sclx = BitConverter.ToSingle(argbuf, 4);
                float scly = BitConverter.ToSingle(argbuf, 8);
                vp.setScale2D(sclx, scly);
                Debug.Log("received vp_scale. id:" + vp_id + " " + sclx + "," + scly);
            }
            break;
        }

        case PACKETTYPE.R2C_CAMERA_CREATE:
        {
            uint cam_id = BitConverter.ToUInt32(argbuf, 0);
            m_camera_pool.ensure(cam_id);
            Debug.Log("received cam_create. " + cam_id);
            break;
        }

        case PACKETTYPE.R2C_CAMERA_LOC:
        {
            uint      cam_id = BitConverter.ToUInt32(argbuf, 0);
            HM.Camera cam    = m_camera_pool.get(cam_id);
            if (cam != null)
            {
                float x = BitConverter.ToSingle(argbuf, 4);
                float y = BitConverter.ToSingle(argbuf, 8);
                cam.setLoc(x, y);
                Debug.Log("received cam_loc: " + cam_id + " " + x + "," + y);
            }
            break;
        }

        case PACKETTYPE.R2C_TEXTURE_CREATE:
        {
            uint tex_id = BitConverter.ToUInt32(argbuf, 0);
            m_texture_pool.ensure(tex_id);
            Debug.Log("received tex_create:" + tex_id);
            break;
        }

        case PACKETTYPE.R2C_TEXTURE_IMAGE:
        {
            uint       tex_id = BitConverter.ToUInt32(argbuf, 0);
            uint       img_id = BitConverter.ToUInt32(argbuf, 4);
            HM.Texture tex    = m_texture_pool.get(tex_id);
            HM.Image   img    = m_image_pool.get(img_id);
            if (tex != null && img != null)
            {
                tex.setImage(img);
                print("received tex_image. tex:" + tex_id + " img:" + img_id);
            }
            break;
        }

        case PACKETTYPE.R2C_IMAGE_CREATE:
        {
            uint img_id = BitConverter.ToUInt32(argbuf, 0);
            m_image_pool.ensure(img_id);
            Debug.Log("received img_create:" + img_id);
            break;
        }

        case PACKETTYPE.R2C_IMAGE_LOAD_PNG:
        {
            uint      img_id  = BitConverter.ToUInt32(argbuf, 0);
            int       pathlen = (int)argbuf[4];
            string    path    = Util.getASCIIString(argbuf, 4 + 1, pathlen);
            FileEntry fe      = m_storage.findFileEntry(path);
            HM.Image  img     = m_image_pool.get(img_id);
            if (fe != null && img != null)
            {
                img.loadPNGMem(fe.getBody());
                Debug.Log("received imgloadpng:" + img_id + " path:" + path);
            }
            break;
        }

        case PACKETTYPE.R2C_TILEDECK_CREATE:
        {
            uint dk_id = BitConverter.ToUInt32(argbuf, 0);
            m_tiledeck_pool.ensure(dk_id);
            Debug.Log("received tdk_create. id:" + dk_id);
            break;
        }

        case PACKETTYPE.R2C_TILEDECK_TEXTURE:
        {
            uint        dk_id  = BitConverter.ToUInt32(argbuf, 0);
            uint        tex_id = BitConverter.ToUInt32(argbuf, 4);
            HM.TileDeck dk     = m_tiledeck_pool.get(dk_id);
            HM.Texture  tex    = m_texture_pool.get(tex_id);
            if (dk != null && tex != null)
            {
                dk.setTexture(tex);
                Debug.Log("received tdk_tex. dk:" + dk_id + " tex:" + tex_id);
            }
            break;
        }

        case PACKETTYPE.R2C_TILEDECK_SIZE:
        {
            uint        dk_id = BitConverter.ToUInt32(argbuf, 0);
            uint        sprw  = BitConverter.ToUInt32(argbuf, 4);
            uint        sprh  = BitConverter.ToUInt32(argbuf, 8);
            uint        cellw = BitConverter.ToUInt32(argbuf, 12);
            uint        cellh = BitConverter.ToUInt32(argbuf, 16);
            HM.TileDeck dk    = m_tiledeck_pool.get(dk_id);
            if (dk != null)
            {
                dk.setSize(sprw, sprh, cellw, cellh);
                Debug.Log("received tdk_size. id:" + dk_id + " spr:" + sprw + "," + sprh + " cell:" + cellw + "," + cellh);
            }
            break;
        }

        case PACKETTYPE.R2C_GRID_CREATE_SNAPSHOT:
        {
            PacketGridCreateSnapshot pkt = new PacketGridCreateSnapshot();
            pkt.fromBytes(argbuf);
            HM.TileDeck deck = m_tiledeck_pool.get(pkt.tiledeck_id);
            if (deck != null)
            {
                HM.Grid g = m_grid_pool.ensure(pkt.id);
                g.setSize(pkt.width, pkt.height);
                g.tiledeck_id   = pkt.tiledeck_id;
                g.deck          = deck;
                g.enfat_epsilon = pkt.enfat_epsilon;
                Debug.Log("received gr-cr-ss id:" + pkt.id + " wh:" + pkt.width + "," + pkt.height);
            }
            else
            {
                Debug.LogWarning("grid_create_ss: tiledeck not found:" + pkt.tiledeck_id);
            }
            break;
        }

        case PACKETTYPE.R2C_GRID_TABLE_SNAPSHOT:
        {
            uint    grid_id = BitConverter.ToUInt32(argbuf, 0);
            uint    nbytes  = BitConverter.ToUInt32(argbuf, 4);
            HM.Grid g       = m_grid_pool.get(grid_id);
            if (g != null)
            {
                if (nbytes == g.getIndexTableSize())
                {
                    g.bulkSetIndex(argbuf, 8);
                    Debug.Log("received grid_table_ss id:" + grid_id);
                }
            }
            break;
        }

        case PACKETTYPE.R2C_GRID_INDEX:
        {
            uint    grid_id = BitConverter.ToUInt32(argbuf, 0);
            uint    x       = BitConverter.ToUInt32(argbuf, 4);
            uint    y       = BitConverter.ToUInt32(argbuf, 8);
            int     ind     = BitConverter.ToInt32(argbuf, 12);
            HM.Grid g       = m_grid_pool.get(grid_id);
            if (g != null)
            {
                g.set(x, y, ind);
                Debug.Log("received grid_index id:" + grid_id + " xyi:" + x + "," + y + "," + ind);
            }

            break;
        }

        case PACKETTYPE.R2C_FILE:
        {
            int    pathlen = (int)argbuf[0];
            string path    = Util.getASCIIString(argbuf, 1, pathlen);
            ushort datalen = BitConverter.ToUInt16(argbuf, 1 + pathlen);
            byte[] data    = Util.slice(argbuf, 1 + pathlen + 2, datalen);
            Debug.Log("received FILE. pathlen:" + pathlen + " path:" + path + "datalen:" + datalen);
            m_storage.ensureFileEntry(path, data);
            break;
        }

        case PACKETTYPE.ERROR:
            Debug.LogWarning("func ERROR! funcid:" + funcid);
            break;
        }
    }