Пример #1
0
        public static void FromJson(JsonData jsonNode, out string name, out string path, out int layer, out string tag, out Vector3 pos, out Quaternion rot, out Vector3 scale)
        {
            name  = (string)jsonNode[SerializationConst.name];
            path  = (string)jsonNode[SerializationConst.path];
            tag   = string.Empty;
            layer = LayerUtility.DefaultLayer;

            if (jsonNode.ContainsKey(SerializationConst.layer))
            {
                layer = (int)jsonNode[SerializationConst.layer];
            }
            if (jsonNode.ContainsKey(SerializationConst.tag))
            {
                tag = (string)jsonNode[SerializationConst.tag];
            }
            if (string.IsNullOrEmpty(tag))
            {
                tag = TagUtility.Untagged;
            }

            var transform = jsonNode[SerializationConst.transform];

            LitJsonHelper.ParseVector(transform[0], out pos);
            LitJsonHelper.ParseQuaternion(transform[1], out rot);
            LitJsonHelper.ParseVector(transform[2], out scale);
        }
Пример #2
0
        private static void RegisterPhysics()
        {
            Register(typeof(BoxCollider), (componentData, component) =>
            {
                var userData = componentData.userData;
                if (userData != null)
                {
                    if (component is BoxCollider collider)
                    {
                        LitJsonHelper.ParseVector(userData["size"], out Vector3 size);
                        collider.size = size;
                        LitJsonHelper.ParseVector(userData["center"], out Vector3 center);
                        collider.center    = center;
                        collider.isTrigger = ((int)userData["isTrigger"]) == 1;
                    }
                }
                return(true);
            });

            Register(typeof(SphereCollider), (componentData, component) =>
            {
                var userData = componentData.userData;
                if (userData != null)
                {
                    if (component is SphereCollider collider)
                    {
                        collider.radius = LitJsonHelper.ParseJsonToFloat(userData["radius"]);
                        LitJsonHelper.ParseVector(userData["center"], out Vector3 center);
                        collider.center    = center;
                        collider.isTrigger = ((int)userData["isTrigger"]) == 1;
                    }
                }
                return(true);
            });

            Register(typeof(MeshCollider), (componentData, component) =>
            {
                return(true);
            });

            Register(typeof(CapsuleCollider), (componentData, component) =>
            {
                var userData = componentData.userData;
                if (userData != null)
                {
                    if (component is CapsuleCollider collider)
                    {
                        collider.radius = LitJsonHelper.ParseJsonToFloat(userData["radius"]);
                        collider.height = LitJsonHelper.ParseJsonToFloat(userData["height"]);
                        LitJsonHelper.ParseVector(userData["center"], out Vector3 center);
                        collider.center    = center;
                        collider.isTrigger = ((int)userData["isTrigger"]) == 1;
                        collider.direction = (int)userData["direction"];
                    }
                }
                return(true);
            });

            Register(typeof(Rigidbody), (componentData, component) =>
            {
                var userData = componentData.userData;
                if (userData != null)
                {
                    if (component is Rigidbody rigidbody)
                    {
                        rigidbody.mass                   = LitJsonHelper.ParseJsonToFloat(userData["mass"]);
                        rigidbody.drag                   = LitJsonHelper.ParseJsonToFloat(userData["drag"]);
                        rigidbody.angularDrag            = LitJsonHelper.ParseJsonToFloat(userData["angularDrag"]);
                        rigidbody.useGravity             = (int)userData["useGravity"] == 1;
                        rigidbody.isKinematic            = (int)userData["isKinematic"] == 1;
                        rigidbody.collisionDetectionMode = (CollisionDetectionMode)(int)userData["collisionDetectionMode"];
                        rigidbody.interpolation          = (RigidbodyInterpolation)(int)userData["interpolation"];
                        rigidbody.constraints            = (RigidbodyConstraints)(int)userData["constraints"];
                    }
                }
                return(true);
            });
        }