public void getFriends() { string uuid = Context.Session["uuid"].ToString(); LOG.Out("-----------------------------------> GetFriends : " + uuid + " <----------------------------------------: "); string json = XinManager.instance.AccountGetFriends(uuid); SimpleJSON.JSONArray friendArray = new SimpleJSON.JSONArray(); SimpleJSON.JSONNode jn = SimpleJSON.JSON.Parse(json); SimpleJSON.JSONArray ja = jn["data"].AsArray; foreach (SimpleJSON.JSONData jd in ja) { string fuid = HuanXinIDToUID(jd); if (string.IsNullOrEmpty(fuid)) continue; string ainfo = XinManager.instance.AccountGet(fuid); if (!IsRegisted(ainfo)) continue; SimpleJSON.JSONNode ajn = SimpleJSON.JSON.Parse(ainfo); SimpleJSON.JSONClass ajc = JsonGen.UserInfo( fuid, ajn["entities"][0]["username"], "userHandicon", UIDToHuanXinID(fuid), null, SportMatchManager.instance.GetUserState(fuid), SportMatchManager.instance.GetUserGroupID(fuid)); friendArray.Add(ajc); } SimpleJSON.JSONClass result = new SimpleJSON.JSONClass(); result.Add("status", JsonGen.Status(100)); result.Add("friends", friendArray); Send(result); }
public static void ParseArmtureData(ArmatureEditor armatureEditor, SimpleJSON.JSONClass armtureObj) { //parse bone data if (armtureObj.ContainKey("bone")) { SimpleJSON.JSONArray bones = armtureObj["bone"].AsArray; DragonBoneData.BoneData[] boneDatas = new DragonBoneData.BoneData[bones.Count]; for (int i = 0; i < bones.Count; ++i) { SimpleJSON.JSONClass boneObj = bones[i].AsObject; DragonBoneData.BoneData boneData = new DragonBoneData.BoneData(); if (boneObj.ContainKey("length")) { boneData.length = boneObj["length"].AsFloat; } if (boneObj.ContainKey("name")) { boneData.name = boneObj["name"].ToString().Trim(); } if (boneObj.ContainKey("parent")) { boneData.parent = boneObj["parent"].ToString(); } if (boneObj.ContainKey("inheritRotation")) { boneData.inheritRotation = boneObj["inheritRotation"].AsInt == 1?true:false; } if (boneObj.ContainKey("inheritScale")) { boneData.inheritScale = boneObj["inheritScale"].AsInt == 1?true:false; } if (boneObj.ContainKey("transform")) { SimpleJSON.JSONClass transformObj = boneObj["transform"].AsObject; DragonBoneData.TransformData transData = new DragonBoneData.TransformData(); if (transformObj.ContainKey("x")) { transData.x = transformObj["x"].AsFloat * 0.01f; } if (transformObj.ContainKey("y")) { transData.y = -transformObj["y"].AsFloat * 0.01f; } if (transformObj.ContainKey("skX")) { transData.rotate = -transformObj["skX"].AsFloat; } if (transformObj.ContainKey("scX")) { transData.scx = transformObj["scX"].AsFloat; } if (transformObj.ContainKey("scY")) { transData.scy = transformObj["scY"].AsFloat; } boneData.transform = transData; } boneDatas[i] = boneData; armatureEditor.bonesDataKV[boneData.name] = boneData; } armatureEditor.armatureData.boneDatas = boneDatas; } //parse slot data if (armtureObj.ContainKey("slot")) { SimpleJSON.JSONArray slots = armtureObj["slot"].AsArray; DragonBoneData.SlotData[] slotDatas = new DragonBoneData.SlotData[slots.Count]; bool isMC = armatureEditor.armatureData.type.Equals("MovieClip"); for (int i = 0; i < slots.Count; ++i) { SimpleJSON.JSONClass slotObj = slots[i].AsObject; DragonBoneData.SlotData slotData = new DragonBoneData.SlotData(); if (slotObj.ContainKey("name")) { slotData.name = slotObj["name"].ToString(); } if (slotObj.ContainKey("parent")) { slotData.parent = slotObj["parent"].ToString(); } if (slotObj.ContainKey("z")) { slotData.z = -slotObj["z"].AsFloat * armatureEditor.zoffset; } if (!isMC) { if (slotObj.ContainKey("displayIndex")) { slotData.displayIndex = slotObj["displayIndex"].AsInt; } } if (slotObj.ContainKey("scale")) { slotData.scale = slotObj["scale"].AsFloat; } if (slotObj.ContainKey("blendMode")) { slotData.blendMode = slotObj["blendMode"].ToString(); } if (slotObj.ContainKey("color")) { SimpleJSON.JSONClass colorObj = slotObj["color"].AsObject; DragonBoneData.ColorData colorData = new DragonBoneData.ColorData(); if (colorObj.ContainKey("aM")) { colorData.aM = colorObj["aM"].AsFloat * 0.01f; } if (colorObj.ContainKey("a0")) { colorData.aM += colorObj["a0"].AsFloat / 255f; } if (colorObj.ContainKey("rM")) { colorData.rM = colorObj["rM"].AsFloat * 0.01f; } if (colorObj.ContainKey("r0")) { colorData.rM += colorObj["r0"].AsFloat / 255f; } if (colorObj.ContainKey("gM")) { colorData.gM = colorObj["gM"].AsFloat * 0.01f; } if (colorObj.ContainKey("g0")) { colorData.gM += colorObj["g0"].AsFloat / 255f; } if (colorObj.ContainKey("bM")) { colorData.bM = colorObj["bM"].AsFloat * 0.01f; } if (colorObj.ContainKey("b0")) { colorData.bM += colorObj["b0"].AsFloat / 255f; } slotData.color = colorData; } slotDatas[i] = slotData; armatureEditor.slotsDataKV[slotData.name] = slotData; } armatureEditor.armatureData.slotDatas = slotDatas; } //parse IK data if (armtureObj.ContainKey("ik")) { SimpleJSON.JSONArray iks = armtureObj["ik"].AsArray; DragonBoneData.IKData[] ikDatas = new DragonBoneData.IKData[iks.Count]; for (int i = 0; i < iks.Count; ++i) { SimpleJSON.JSONClass ikObj = iks[i].AsObject; DragonBoneData.IKData ikData = new DragonBoneData.IKData(); if (ikObj.ContainKey("name")) { ikData.name = ikObj["name"].ToString(); } if (ikObj.ContainKey("bone")) { ikData.bone = ikObj["bone"].ToString(); } if (ikObj.ContainKey("target")) { ikData.target = ikObj["target"].ToString(); } if (ikObj.ContainKey("bendPositive")) { ikData.bendPositive = ikObj["bendPositive"].AsBool; } if (ikObj.ContainKey("chain")) { ikData.chain = ikObj["chain"].AsInt; } if (ikObj.ContainKey("weight")) { ikData.weight = ikObj["weight"].AsFloat; } ikDatas[i] = ikData; } armatureEditor.armatureData.ikDatas = ikDatas; } //parse animation file if (armtureObj.ContainKey("animation")) { SimpleJSON.JSONArray anims = armtureObj["animation"].AsArray; DragonBoneData.AnimationData[] animDatas = new DragonBoneData.AnimationData[anims.Count]; for (int i = 0; i < anims.Count; ++i) { SimpleJSON.JSONClass animObj = anims[i].AsObject; DragonBoneData.AnimationData animData = new DragonBoneData.AnimationData(); if (animObj.ContainKey("name")) { animData.name = animObj["name"].ToString().Trim(); } if (animObj.ContainKey("playTimes")) { animData.playTimes = animObj["playTimes"].AsInt; } if (animObj.ContainKey("duration")) { animData.duration = animObj["duration"].AsInt; } if (animData.duration == 0) { animData.duration = 1; } if (animObj.ContainKey("frame")) { ParseAnimFrames(animObj["frame"].AsArray, animData); } if (animObj.ContainKey("bone")) { SimpleJSON.JSONArray bones = animObj["bone"].AsArray; animData.boneDatas = new DragonBoneData.AnimSubData[bones.Count]; ParsetAnimBoneSlot(armatureEditor, bones, animData.boneDatas); } if (animObj.ContainKey("slot")) { SimpleJSON.JSONArray slots = animObj["slot"].AsArray; animData.slotDatas = new DragonBoneData.AnimSubData[slots.Count]; ParsetAnimBoneSlot(armatureEditor, slots, animData.slotDatas); } //ffd if (animObj.ContainKey("ffd")) { SimpleJSON.JSONArray ffds = animObj["ffd"].AsArray; animData.ffdDatas = new DragonBoneData.AnimSubData[ffds.Count]; ParsetAnimBoneSlot(armatureEditor, ffds, animData.ffdDatas); } //zOrder if (animObj.ContainKey("zOrder")) { SimpleJSON.JSONClass zOrders = animObj["zOrder"].AsObject; ParseAnimSortOrder(armatureEditor, zOrders, animData); } animDatas[i] = animData; } armatureEditor.armatureData.animDatas = animDatas; } //parse skin data if (armtureObj.ContainKey("skin")) { SimpleJSON.JSONArray skins = armtureObj["skin"].AsArray; DragonBoneData.SkinData[] skinDatas = new DragonBoneData.SkinData[skins.Count]; for (int i = 0; i < skins.Count; ++i) { DragonBoneData.SkinData skinData = new DragonBoneData.SkinData(); skinDatas[i] = skinData; SimpleJSON.JSONClass skinObj = skins[i].AsObject; string skinName = skinObj["name"].ToString(); skinData.skinName = skinName; if (skinObj.ContainKey("slot")) { SimpleJSON.JSONArray slots = skinObj["slot"].AsArray; skinData.slots = new DragonBoneData.SkinSlotData[slots.Count]; for (int j = 0; j < slots.Count; ++j) { DragonBoneData.SkinSlotData skinSlotData = new DragonBoneData.SkinSlotData(); SimpleJSON.JSONClass slot = slots[j].AsObject; skinData.slots[j] = skinSlotData; if (slot.ContainKey("name")) { skinSlotData.slotName = slot["name"].ToString(); } if (slot.ContainKey("display")) { SimpleJSON.JSONArray display = slot["display"].AsArray; skinSlotData.displays = new DragonBoneData.SkinSlotDisplayData[display.Count]; for (int k = 0; k < display.Count; ++k) { DragonBoneData.SkinSlotDisplayData displayData = new DragonBoneData.SkinSlotDisplayData(); skinSlotData.displays[k] = displayData; SimpleJSON.JSONClass displayObj = display[k].AsObject; if (displayObj.ContainKey("name")) { displayData.textureName = displayObj["name"].ToString().Replace('/', '_'); } if (displayObj.ContainKey("type")) { displayData.type = displayObj["type"].ToString(); } if (displayObj.ContainKey("pivot")) { displayData.pivot = new Vector2(displayObj["pivot"].AsObject["x"].AsFloat, displayObj["pivot"].AsObject["y"].AsFloat); } if (displayObj.ContainKey("transform")) { SimpleJSON.JSONClass transformObj = displayObj["transform"].AsObject; DragonBoneData.TransformData transData = new DragonBoneData.TransformData(); if (transformObj.ContainKey("x")) { transData.x = transformObj["x"].AsFloat * 0.01f; } if (transformObj.ContainKey("y")) { transData.y = -transformObj["y"].AsFloat * 0.01f; } if (transformObj.ContainKey("skX")) { transData.rotate = -transformObj["skX"].AsFloat; } if (transformObj.ContainKey("scX")) { transData.scx = transformObj["scX"].AsFloat; } if (transformObj.ContainKey("scY")) { transData.scy = transformObj["scY"].AsFloat; } displayData.transform = transData; } //uv if (displayObj.ContainKey("uvs")) { SimpleJSON.JSONArray uvsObj = displayObj["uvs"].AsArray; int index = 0; displayData.uvs = new Vector2[uvsObj.Count / 2]; for (int z = 0; z < uvsObj.Count; z += 2) { Vector2 uv = new Vector2(uvsObj[z].AsFloat, 1 - uvsObj[z + 1].AsFloat); displayData.uvs[index] = uv; ++index; } } //weight if (displayObj.ContainKey("weights")) { SimpleJSON.JSONArray weightsObj = displayObj["weights"].AsArray; displayData.weights = new float[weightsObj.Count]; for (int z = 0; z < weightsObj.Count; ++z) { displayData.weights[z] = weightsObj[z].AsFloat; } } //bonepose if (displayObj.ContainKey("bonePose")) { SimpleJSON.JSONArray bonePoseObj = displayObj["bonePose"].AsArray; displayData.bonePose = new float[bonePoseObj.Count]; for (int z = 0; z < bonePoseObj.Count; z += 7) { displayData.bonePose[z] = bonePoseObj[z].AsFloat; displayData.bonePose[z + 1] = bonePoseObj[z + 1].AsFloat; //a displayData.bonePose[z + 2] = bonePoseObj[z + 2].AsFloat; //b displayData.bonePose[z + 3] = bonePoseObj[z + 3].AsFloat; //c displayData.bonePose[z + 4] = bonePoseObj[z + 4].AsFloat; //d displayData.bonePose[z + 5] = bonePoseObj[z + 5].AsFloat; //tx displayData.bonePose[z + 6] = bonePoseObj[z + 6].AsFloat; //ty Matrix2D m = new Matrix2D(displayData.bonePose[z + 1], displayData.bonePose[z + 2], displayData.bonePose[z + 3], displayData.bonePose[z + 4], displayData.bonePose[z + 5], displayData.bonePose[z + 6]); armatureEditor.bonePoseKV[armatureEditor.armatureData.boneDatas[(int)displayData.bonePose[z]].name] = m; } } Matrix2D slotPoseMat = null; //slotpose if (displayObj.ContainKey("slotPose")) { SimpleJSON.JSONArray slotPoseObj = displayObj["slotPose"].AsArray; slotPoseMat = new Matrix2D(slotPoseObj[0].AsFloat, slotPoseObj[1].AsFloat, slotPoseObj[2].AsFloat, slotPoseObj[3].AsFloat, slotPoseObj[4].AsFloat, slotPoseObj[5].AsFloat); } //vertex if (displayObj.ContainKey("vertices")) { SimpleJSON.JSONArray verticesObj = displayObj["vertices"].AsArray; displayData.vertices = new Vector3[verticesObj.Count / 2]; for (int z = 0; z < verticesObj.Count; z += 2) { int vertexIndex = z / 2; Vector3 vertex = new Vector3(verticesObj[z].AsFloat, verticesObj[z + 1].AsFloat, 0f); if (slotPoseMat != null) { //slotPose转换 vertex = (Vector3)slotPoseMat.TransformPoint(vertex.x, vertex.y); } vertex.x *= 0.01f; vertex.y *= -0.01f; displayData.vertices[vertexIndex] = vertex; } } //triangles if (displayObj.ContainKey("triangles")) { SimpleJSON.JSONArray trianglesObj = displayObj["triangles"].AsArray; displayData.triangles = new int[trianglesObj.Count]; for (int z = 0; z < trianglesObj.Count; z++) { displayData.triangles[z] = trianglesObj[z].AsInt; } //dragonBone和unity的z相反 for (int z = 0; z < displayData.triangles.Length; z += 3) { int f1 = displayData.triangles[z]; int f3 = displayData.triangles[z + 2]; displayData.triangles[z] = f3; displayData.triangles[z + 2] = f1; } } //edges //userdeges } } } } } armatureEditor.armatureData.skinDatas = skinDatas; } }
public SimpleJSON.JSONClass GetTimelineAnimation() { // snapshot the current recorded frames var groupedFrames = new Dictionary <string, List <ITimelineFrame> >(); int maxFrameNumber = 0; float frameDuration = _initialDeltaTime; lock (_recordedFrames) { maxFrameNumber = _recordedFrames.Max(f => f.Number); groupedFrames = _recordedFrames .GroupBy(x => x.GetGroupName()) .ToDictionary(x => x.Key, x => x.ToList()); } if (groupedFrames.Count == 0) { return(null); } string recordingId = DateTime.Now.ToString("yyMMddTHHmmss"); var animation = new SimpleJSON.JSONClass(); animation["Speed"] = "1"; animation["InterpolationTimeout"] = "0.25"; // ?? animation["InterpolationSpeed"] = "1"; // ?? animation["AtomType"] = "Person"; animation["Clips"] = new SimpleJSON.JSONArray(); var animationClip = new SimpleJSON.JSONClass(); animationClip["AnimationName"] = $"Mocap - {recordingId}"; animationClip["AnimationLength"] = (maxFrameNumber * frameDuration).ToString(); animationClip["BlendDuration"] = "0.25"; // ?? animationClip["Loop"] = "1"; animationClip["Transition"] = "0"; // ?? animationClip["EnsureQuaternionContinuity"] = "1"; animationClip["Controllers"] = new SimpleJSON.JSONArray(); animationClip["FloatParams"] = new SimpleJSON.JSONArray(); foreach (var frameGroup in groupedFrames) { var firstFrame = frameGroup.Value.First(); if (firstFrame is FloatParamFrame) { var storable = ((FloatParamFrame)firstFrame).StorableName; var name = ((FloatParamFrame)firstFrame).Name; var frames = frameGroup.Value.Cast <FloatParamFrame>(); var floatParam = new SimpleJSON.JSONClass(); floatParam["Storable"] = storable; floatParam["Name"] = name; floatParam["Value"] = new SimpleJSON.JSONArray(); foreach (var frame in frames) { var jsonEntry = new SimpleJSON.JSONClass(); jsonEntry["t"] = ((frame.Number - 1) * frameDuration).ToString(); // consider each frame as 0.1 jsonEntry["v"] = frame.Value.ToString(); jsonEntry["ti"] = "0"; jsonEntry["to"] = "0"; jsonEntry["c"] = "0"; floatParam["Value"].Add(jsonEntry); } animationClip["FloatParams"].Add(floatParam); } else if (firstFrame is ControllerFrame) { var controllerName = ((ControllerFrame)firstFrame).ControllerName; var frames = frameGroup.Value.Cast <ControllerFrame>(); var controller = new SimpleJSON.JSONClass(); controller["Controller"] = controllerName; controller["X"] = new SimpleJSON.JSONArray(); controller["Y"] = new SimpleJSON.JSONArray(); controller["Z"] = new SimpleJSON.JSONArray(); controller["RotX"] = new SimpleJSON.JSONArray(); controller["RotY"] = new SimpleJSON.JSONArray(); controller["RotZ"] = new SimpleJSON.JSONArray(); controller["RotW"] = new SimpleJSON.JSONArray(); foreach (var frame in frames) { string t = ((frame.Number - 1) * frameDuration).ToString(); string ti = "0"; string to = "0"; string c = "3"; if (frame.Position.HasValue) { var pos = frame.Position.Value; foreach (var a in new string[] { "X", "Y", "Z" }) { string value = null; switch (a) { case "X": value = pos.x.ToString(); break; case "Y": value = pos.y.ToString(); break; case "Z": value = pos.z.ToString(); break; } if (value != null) { var entry = new SimpleJSON.JSONClass(); entry["v"] = value; entry["t"] = t; entry["ti"] = ti; entry["to"] = to; entry["c"] = c; controller[a].Add(entry); } } } if (frame.Rotation.HasValue) { var rot = frame.Rotation.Value; foreach (var a in new string[] { "RotX", "RotY", "RotZ", "RotW" }) { string value = null; switch (a) { case "RotX": value = rot.x.ToString(); break; case "RotY": value = rot.y.ToString(); break; case "RotZ": value = rot.z.ToString(); break; case "RotW": value = rot.w.ToString(); break; } if (value != null) { var entry = new SimpleJSON.JSONClass(); entry["v"] = value; entry["t"] = t; entry["ti"] = ti; entry["to"] = to; entry["c"] = c; controller[a].Add(entry); } } } } animationClip["Controllers"].Add(controller); } } animation["Clips"].Add(animationClip); return(animation); }
public static void ParsetAnimBoneSlot(ArmatureEditor armatureEditor, SimpleJSON.JSONArray animBonesSlots, DragonBoneData.AnimSubData[] animDatas) { for (int i = 0; i < animBonesSlots.Count; ++i) { SimpleJSON.JSONClass boneSlotObj = animBonesSlots[i].AsObject; DragonBoneData.AnimSubData subData = new DragonBoneData.AnimSubData(); if (boneSlotObj.ContainKey("name")) { subData.name = boneSlotObj["name"].ToString().Replace('/', '_'); } if (boneSlotObj.ContainKey("slot")) { subData.slot = boneSlotObj["slot"].ToString().Replace('/', '_'); } if (boneSlotObj.ContainKey("scale")) { subData.scale = boneSlotObj["scale"].AsFloat; } if (boneSlotObj.ContainKey("offset")) { subData.offset = boneSlotObj["offset"].AsFloat; } if (boneSlotObj.ContainKey("frame")) { SimpleJSON.JSONArray frames = boneSlotObj["frame"].AsArray; subData.frameDatas = new DragonBoneData.AnimFrameData[frames.Count]; for (int j = 0; j < frames.Count; ++j) { SimpleJSON.JSONClass frameObj = frames[j].AsObject; DragonBoneData.AnimFrameData frameData = new DragonBoneData.AnimFrameData(); if (frameObj.ContainKey("duration")) { frameData.duration = frameObj["duration"].AsInt; } if (frameData.duration == 0) { frameData.duration = 1; } if (frameObj.ContainKey("displayIndex")) { frameData.displayIndex = frameObj["displayIndex"].AsInt; } if (frameObj.ContainKey("z")) { frameData.z = -frameObj["z"].AsInt * armatureEditor.zoffset; } if (frameObj.ContainKey("tweenEasing") && frameObj["tweenEasing"].ToString() != "null") { frameData.tweenEasing = frameObj["tweenEasing"].AsFloat; } if (frameObj.ContainKey("curve")) { SimpleJSON.JSONArray curves = frameObj["curve"].AsArray; frameData.curve = new float[4] { curves[0].AsFloat, curves[1].AsFloat, curves[2].AsFloat, curves[3].AsFloat }; } if (frameObj.ContainKey("transform")) { SimpleJSON.JSONClass transformObj = frameObj["transform"].AsObject; DragonBoneData.TransformData transData = new DragonBoneData.TransformData(); if (transformObj.ContainKey("x")) { transData.x = transformObj["x"].AsFloat * 0.01f; } if (transformObj.ContainKey("y")) { transData.y = -transformObj["y"].AsFloat * 0.01f; } if (transformObj.ContainKey("skX")) { transData.rotate = -transformObj["skX"].AsFloat; } if (transformObj.ContainKey("scX")) { transData.scx = transformObj["scX"].AsFloat; } if (transformObj.ContainKey("scY")) { transData.scy = transformObj["scY"].AsFloat; } frameData.transformData = transData; } if (frameObj.ContainKey("color")) { SimpleJSON.JSONClass colorObj = frameObj["color"].AsObject; DragonBoneData.ColorData colorData = new DragonBoneData.ColorData(); if (colorObj.ContainKey("aM")) { colorData.aM = colorObj["aM"].AsFloat * 0.01f; } if (colorObj.ContainKey("a0")) { colorData.aM += colorObj["a0"].AsFloat / 255f; } if (colorObj.ContainKey("rM")) { colorData.rM = colorObj["rM"].AsFloat * 0.01f; } if (colorObj.ContainKey("r0")) { colorData.rM += colorObj["r0"].AsFloat / 255f; } if (colorObj.ContainKey("gM")) { colorData.gM = colorObj["gM"].AsFloat * 0.01f; } if (colorObj.ContainKey("g0")) { colorData.gM += colorObj["g0"].AsFloat / 255f; } if (colorObj.ContainKey("bM")) { colorData.bM = colorObj["bM"].AsFloat * 0.01f; } if (colorObj.ContainKey("b0")) { colorData.bM += colorObj["b0"].AsFloat / 255f; } frameData.color = colorData; } //ffd animation //vertex offset bool startFromY = false; if (frameObj.ContainKey("offset")) { startFromY = frameObj["offset"].AsInt % 2 != 0; //从Y开始 frameData.offset = frameObj["offset"].AsInt / 2; } if (frameObj.ContainKey("vertices")) //local vertex { SimpleJSON.JSONArray verticesObj = frameObj["vertices"].AsArray; int index = 0; int k = 0; if (startFromY) { frameData.vertices = new Vector2[verticesObj.Count / 2 + 1]; frameData.vertices[index] = new Vector2(0, -verticesObj[k].AsFloat * 0.01f); k = 1; ++index; } else { frameData.vertices = new Vector2[verticesObj.Count / 2]; } for (; k < verticesObj.Count && k + 1 < verticesObj.Count; k += 2) { frameData.vertices[index] = new Vector2(verticesObj[k].AsFloat * 0.01f, -verticesObj[k + 1].AsFloat * 0.01f); ++index; } armatureEditor.ffdKV[subData.name] = true; } subData.frameDatas[j] = frameData; } } animDatas[i] = subData; } }
public SettingsController LoadFrom(SimpleJSON.JSONClass jsonClass) { _settings = jsonClass; return(this); }