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); }
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); }); }