using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public class SerializeStrVector3
{
    const int ObjectOfMyData = 4;

    public string str;// SerializeΏۃf[^
    public Vector3 v3;// SerializeΏۃf[^

    static SerializeStrVector3(){// static RXgN^
    }

    public static bool Initialize()
    {
        BinaryPack.dencoders[ObjectOfMyData] = getObjectOfMyData;//MyDatãIuWFNgID̕֐̓o^
        return true;
    }


    public static BinaryPack.Data getBytesByMyData(SerializeStrVector3 pram)
    {  
        BinaryPack.Data str = BinaryPack.getBytesByString(pram.str);
        BinaryPack.Data v3x = BinaryPack.getBytesByFloat(pram.v3.x);
        BinaryPack.Data v3y = BinaryPack.getBytesByFloat(pram.v3.y);
        BinaryPack.Data v3z = BinaryPack.getBytesByFloat(pram.v3.z);

        BinaryPack.Data binData = new BinaryPack.Data(ObjectOfMyData);
        binData.bytes = new byte[str.bytes.Length + 4 * 3];

        int idx = 0;
        Buffer.BlockCopy(str.bytes, 0, binData.bytes, idx, str.bytes.Length);
        idx += str.bytes.Length;
        Buffer.BlockCopy(v3x.bytes, 0, binData.bytes, idx, v3x.bytes.Length);
        idx += v3x.bytes.Length;
        Buffer.BlockCopy(v3y.bytes, 0, binData.bytes, idx, v3y.bytes.Length);
        idx += v3y.bytes.Length;
        Buffer.BlockCopy(v3z.bytes, 0, binData.bytes, idx, v3z.bytes.Length);
        idx += v3z.bytes.Length;
        return binData;
    }
    public static SerializeStrVector3 getObjectOfMyData(byte[] buffer, ref int idx)
    {   // zidx ʒũoCiSerializeStrVector3ɕϊ
        SerializeStrVector3 obj = new SerializeStrVector3();
        obj.str = BinaryPack.getObjectOfString(buffer, ref idx);
        obj.v3.x = (float)BinaryPack.getObjectOfFloat(buffer, ref idx);
        obj.v3.y = (float)BinaryPack.getObjectOfFloat(buffer, ref idx);
        obj.v3.z = (float)BinaryPack.getObjectOfFloat(buffer, ref idx);
        return obj;
    }

}
