Exemple #1
0
        public static BlockJsonInfo JsonObject(Block block, float[] origin = null)
        {
            if (origin == null)
            {
                origin = origin_base;
            }
            BlockJsonInfo jsonInfo = new BlockJsonInfo
            {
                name     = block.Type.ToString(),
                position = new float[3] {
                    block.Position.x - origin[0], block.Position.y - origin[1], block.Position.z - origin[2]
                },
                rotation = new float[3] {
                    block.Rotation.x, block.Rotation.y, block.Rotation.z
                },
                color = ColorSpaceUtility.UnquantizeToArray(block.Color),
                scale = new float[3] {
                    block.Scale.x, block.Scale.y, block.Scale.z
                },
            };

            // custom stats for special blocks
            switch (block.Type)
            {
            case BlockIDs.TextBlock:
                TextBlock t = block.Specialise <TextBlock>();
                jsonInfo.name += "\t" + t.Text + "\t" + t.TextBlockId;
                break;

            case BlockIDs.ConsoleBlock:
                ConsoleBlock c = block.Specialise <ConsoleBlock>();
                jsonInfo.name += "\t" + c.Command + "\t" + c.Arg1 + "\t" + c.Arg2 + "\t" + c.Arg3;
                break;

            case BlockIDs.DampedSpring:
                DampedSpring d = block.Specialise <DampedSpring>();
                jsonInfo.name += "\t" + d.Stiffness + "\t" + d.Damping;
                break;

            case BlockIDs.ServoAxle:
            case BlockIDs.ServoHinge:
            case BlockIDs.PneumaticAxle:
            case BlockIDs.PneumaticHinge:
                Servo s = block.Specialise <Servo>();
                jsonInfo.name += "\t" + s.MinimumAngle + "\t" + s.MaximumAngle + "\t" + s.MaximumForce + "\t" +
                                 s.Reverse;
                break;

            case BlockIDs.MotorM:
            case BlockIDs.MotorS:
                Motor m = block.Specialise <Motor>();
                jsonInfo.name += "\t" + m.TopSpeed + "\t" + m.Torque + "\t" + m.Reverse;
                break;

            default: break;
            }
            return(jsonInfo);
        }
Exemple #2
0
 public static string SerializeBlocks(Block[] blocks, float[] origin = null)
 {
     BlockJsonInfo[] blockJsons = new BlockJsonInfo[blocks.Length];
     for (int i = 0; i < blocks.Length; i++)
     {
         blockJsons[i] = JsonObject(blocks[i], origin);
     }
     return(JsonConvert.SerializeObject(blockJsons));
 }
Exemple #3
0
 public static BlockIDs NameToEnum(BlockJsonInfo block)
 {
     return(NameToEnum(block.name));
 }