コード例 #1
0
        internal void RequestSupportCmdInfo(BridgeRequest req, BridgeResponse rep)
        {
            var json = req.GetArgument();

            if (json.IsObject)
            {
                if (json.ContainsKey("protocol"))
                {
                    JsonData protocols = json["protocol"];
                    if (protocols.IsArray)
                    {
                        JsonData result = new JsonData();
                        result.SetJsonType(JsonType.Object);

                        var protocolsCount = protocols.Count;
                        for (int i = 0; i < protocolsCount; i++)
                        {
                            var protocol = (string)protocols[i];
                            if (string.IsNullOrEmpty(protocol) || protocol == "Explorer")
                            {
                                protocol = "Explorer";
                                var support = CommandFactory.GetCommandSupprtList(typeof(ExploreProtocol));
                                result[protocol] = LitJsonHelper.CreateArrayJsonData(support);
                            }
                        }
                        rep.SetResult(BridgeCode.Success, result);
                        return;
                    }
                }
            }

            DebugUtility.LogError(LoggerTags.Project, "The first argument is not JSON object, examples: 'protocol': [ 'Explorer' ] ");
            rep.SetFailureResult(BridgeCode.Failure);
        }
コード例 #2
0
        public JsonData ToJsonData(JsonData cache = null)
        {
            if (userData != null)
            {
                return(userData);
            }

            if (cache == null)
            {
                cache = new JsonData();
            }

            cache["device"] = device;
            cache["mode"]   = mode;
            cache["id"]     = id;
            cache["code"]   = code;
            cache["uuid"]   = uuid;
            if (datas != null && datas.Length > 0)
            {
                cache["data"] = LitJsonHelper.CreateArrayJsonData(datas);
            }
            if (res)
            {
                cache["sendTo"] = "uCode";
            }

            return(cache);
        }
コード例 #3
0
        public JsonData ToJsonData()
        {
            var result = new JsonData();

            result.SetJsonType(JsonType.Object);

            var device = new JsonData();

            device.SetJsonType(JsonType.Object);
            device["deviceID"]  = deviceID;
            device["supported"] = LitJsonHelper.CreateArrayJsonData(supportModes);

            result["device"] = device;
            return(result);
        }
コード例 #4
0
        private static void RegisterRobots()
        {
            Register(typeof(Robot), (component) =>
            {
                var userData = new JsonData();

                if (component is RobotVehicle vehicle)
                {
                    if (vehicle.leftRotationParts != null && vehicle.leftRotationParts.Length > 0)
                    {
                        userData["left"] = LitJsonHelper.CreateArrayJsonData(vehicle.leftRotationParts.GetHierarchyPath(typeof(Robot)));
                    }
                    if (vehicle.rightRotationParts != null && vehicle.rightRotationParts.Length > 0)
                    {
                        userData["right"] = LitJsonHelper.CreateArrayJsonData(vehicle.rightRotationParts.GetHierarchyPath(typeof(Robot)));
                    }
                    userData["moveFactor"]      = LitJsonHelper.CreateJsonData(vehicle.moveFactor);
                    userData["rotationSpeed"]   = LitJsonHelper.CreateJsonData(vehicle.rotationSpeed);
                    userData["angularVelocity"] = LitJsonHelper.CreateJsonData(vehicle.angularVelocity);
                }

                return(userData);
            });
        }
コード例 #5
0
        private static void RegisterParts()
        {
            Register(typeof(Part), (component) =>
            {
                var part     = (Part)component;
                var userData = new JsonData();
                userData[SerializationConst.address] = part.addressName;
                return(userData);
            });

            Register(typeof(PartsGroup), (component) =>
            {
                var group    = (PartsGroup)component;
                var userData = new JsonData();
                userData.SetJsonType(JsonType.Object);

                userData["up"]          = (int)group.upAxis;
                userData["inv"]         = group.inverseAxis.To01();
                userData["commandType"] = (int)group.commandType;

                if (group.controlTargets != null && group.controlTargets.Length > 0)
                {
                    userData["targets"] = LitJsonHelper.CreateArrayJsonData(group.controlTargets.GetHierarchyPath(typeof(Robot)));
                }

                return(userData);
            });

            Register(typeof(PartComponent), (component) =>
            {
                var userData = new JsonData();

                var pc = (PartComponent)component;
                if (pc.pivotLink != null && pc.pivotLink != pc.transform)
                {
                    userData["pivotLink"] = pc.pivotLink.GetHierarchyPath(typeof(Part));
                }

                if (component is AdvancedPartComponent apc)
                {
                    userData["id"] = apc.id;
                }

                if (component is ButtonSensorComponent bsc)
                {
                    userData["eventTimeout"] = LitJsonHelper.CreateJsonData(bsc.eventTimeout);
                    userData["timeout"]      = LitJsonHelper.CreateJsonData(bsc.timeout);
                }

                if (component is LineTraceSensorComponent ltsc)
                {
                    userData["expectedRange"] = LitJsonHelper.CreateJsonData(ltsc.expectedRange);
                }

                if (component is RotationPartComponent rpc)
                {
                    if (rpc.axisDP != null)
                    {
                        userData["axisDP"] = rpc.axisDP.transform.GetHierarchyPath(typeof(Part));
                    }

                    userData["minEularAngleY"]    = LitJsonHelper.CreateJsonData(rpc.minEularAngleY);
                    userData["maxEularAngleY"]    = LitJsonHelper.CreateJsonData(rpc.maxEularAngleY);
                    userData["wrapMode"]          = (int)rpc.wrapMode;
                    userData["convertMode"]       = (int)rpc.convertMode;
                    userData["localEulerAnglesY"] = LitJsonHelper.CreateJsonData(rpc.localEulerAnglesY);
                }

                return(userData);
            });
        }