Example #1
0
 public static JsonData ToJson(Transform tr, JsonData node)
 {
     try
     {
         node[SerializationConst.name]  = tr.name;
         node[SerializationConst.path]  = tr.GetHierarchyPath(typeof(Robot));
         node[SerializationConst.layer] = tr.gameObject.layer;
         string tag = tr.gameObject.tag;
         node[SerializationConst.tag] = tag;                // == TagUtility.EditorOnly ? TagUtility.Untagged : tag;
         var transform = new JsonData();
         transform.Add(LitJsonHelper.CreateJsonData(tr.transform.localPosition));
         transform.Add(LitJsonHelper.CreateJsonData(tr.transform.localRotation));
         transform.Add(LitJsonHelper.CreateJsonData(tr.transform.localScale));
         node[SerializationConst.transform] = transform;
     }
     catch (Exception ex)
     {
         DebugUtility.LogError(LoggerTags.Project, ex.Message);
     }
     return(node);
 }
Example #2
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);
            });
        }
Example #3
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);
            });
        }
Example #4
0
        private static void RegisterPhysics()
        {
            Register(typeof(BoxCollider), (component) =>
            {
                var userData = new JsonData();
                if (component is BoxCollider collider)
                {
                    userData["size"]      = LitJsonHelper.CreateJsonData(collider.size);
                    userData["center"]    = LitJsonHelper.CreateJsonData(collider.center);
                    userData["isTrigger"] = collider.isTrigger.To01();
                }
                return(userData);
            });

            Register(typeof(SphereCollider), (component) =>
            {
                var userData = new JsonData();
                if (component is SphereCollider collider)
                {
                    userData["radius"]    = LitJsonHelper.CreateJsonData(collider.radius);
                    userData["center"]    = LitJsonHelper.CreateJsonData(collider.center);
                    userData["isTrigger"] = collider.isTrigger.To01();
                }
                return(userData);
            });

            Register(typeof(MeshCollider), (component) =>
            {
                throw new Exception("Unsupported MeshCollider");
            });

            Register(typeof(CapsuleCollider), (component) =>
            {
                var userData = new JsonData();
                if (component is CapsuleCollider collider)
                {
                    userData["radius"]    = LitJsonHelper.CreateJsonData(collider.radius);
                    userData["center"]    = LitJsonHelper.CreateJsonData(collider.center);
                    userData["height"]    = LitJsonHelper.CreateJsonData(collider.height);
                    userData["direction"] = collider.direction;
                    userData["isTrigger"] = collider.isTrigger.To01();
                }
                return(userData);
            });

            Register(typeof(Rigidbody), (component) =>
            {
                var userData = new JsonData();
                if (component is Rigidbody rigidbody)
                {
                    userData["mass"]                   = LitJsonHelper.CreateJsonData(rigidbody.mass);
                    userData["drag"]                   = LitJsonHelper.CreateJsonData(rigidbody.drag);
                    userData["angularDrag"]            = LitJsonHelper.CreateJsonData(rigidbody.angularDrag);
                    userData["useGravity"]             = rigidbody.useGravity.To01();
                    userData["isKinematic"]            = rigidbody.isKinematic.To01();
                    userData["collisionDetectionMode"] = (int)rigidbody.collisionDetectionMode;
                    userData["interpolation"]          = (int)rigidbody.interpolation;
                    userData["constraints"]            = (int)rigidbody.constraints;
                }
                return(userData);
            });
        }