public override ObjectModel Disassemble(Transform source, DisassemblyContext context)
        {
            Vector3Assembler assembler = new Vector3Assembler();

            return(new ObjectModel(
                       new ObjectField("Position", assembler.DisassembleValue(source.localPosition, context)),
                       new ObjectField("Rotation", assembler.DisassembleValue(source.localRotation.eulerAngles, context)),
                       new ObjectField("Scale", assembler.DisassembleValue(source.localScale, context))
                       ));
        }
        public override void Assemble(ObjectModel model, Transform target, AssemblyContext context)
        {
            Vector3Assembler assembler = new Vector3Assembler();

            Vector3 position = assembler.AssembleValue(model.GetObject("Position"), context);
            Vector3 rotation = assembler.AssembleValue(model.GetObject("Rotation"), context);
            Vector3 scale    = assembler.AssembleValue(model.GetObject("Scale"), context);

            target.localPosition = position;
            target.localRotation = Quaternion.Euler(rotation);
            target.localScale    = scale;
        }