/** * JSONの解析結果からExpressionを生成する * @param v */ static private L2DExpressionMotion loadJsonV09(Value defaultExpr, Value expr) { L2DExpressionMotion ret = new L2DExpressionMotion(); ret.setFadeIn(expr.get("FADE_IN").toInt(1000)); ret.setFadeOut(expr.get("FADE_OUT").toInt(1000)); //--- IDリストを生成 Value defaultParams = defaultExpr.get("PARAMS"); Value parameters = expr.get("PARAMS"); List <string> paramID = parameters.keySet(); List <string> idList = new List <string>(); foreach (string id in paramID) { idList.Add(id); } //--------- 値を設定 --------- for (int i = idList.Count - 1; i >= 0; --i) { string id = idList[i]; float defaultV = defaultParams.get(id).toFloat(0); float v = parameters.get(id).toFloat(0.0f); float values = (v - defaultV); // ret.addParam(id, value,L2DExpressionMotion.TYPE_ADD); L2DExpressionParam param = new L2DExpressionParam(); param.id = id; param.type = L2DExpressionMotion.TYPE_ADD; param.value = values; ret.paramList.Add(param); } return(ret); }
/** * JSONファイルから読み込み。 * 仕様についてはマニュアル参照。JSONスキーマの形式の仕様がある。 * @param buf * @return */ public static L2DExpressionMotion loadJson(byte[] bytes) { L2DExpressionMotion ret = new L2DExpressionMotion(); char[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetString(bytes).ToCharArray(); Value json = Json.parseFromBytes(buf); ret.setFadeIn(json.get("fade_in").toInt(1000)); //フェードイン ret.setFadeOut(json.get("fade_out").toInt(1000)); //フェードアウト if (!json.getMap(null).ContainsKey("params")) { return(ret); } //パラメータ一覧 Value parameters = json.get("params"); int paramNum = parameters.getVector(null).Count; ret.paramList = new List <L2DExpressionParam>(paramNum); for (int i = 0; i < paramNum; i++) { Value param = parameters.get(i); string paramID = param.get("id").toString(); //パラメータID float value = param.get("val").toFloat(); //値 //計算方法の設定 int calcTypeInt = TYPE_ADD; string calc = param.getMap(null).ContainsKey("calc")? (param.get("calc").toString()) : "add"; if (calc.Equals("add")) { calcTypeInt = TYPE_ADD; } else if (calc.Equals("mult")) { calcTypeInt = TYPE_MULT; } else if (calc.Equals("set")) { calcTypeInt = TYPE_SET; } else { //その他 仕様にない値を設定したときは加算モードにすることで復旧 calcTypeInt = TYPE_ADD; } //計算方法 加算 if (calcTypeInt == TYPE_ADD) { float defaultValue = (!param.getMap(null).ContainsKey("def")) ? 0 : param.get("def").toFloat(); value = value - defaultValue; } //計算方法 乗算 else if (calcTypeInt == TYPE_MULT) { float defaultValue = (!param.getMap(null).ContainsKey("def")) ? 1 : param.get("def").toFloat(0); if (defaultValue == 0) { defaultValue = 1; //0(不正値)を指定した場合は1(標準)にする } value = value / defaultValue; } //設定オブジェクトを作成してリストに追加する L2DExpressionParam item = new L2DExpressionParam(); item.id = paramID; item.type = calcTypeInt; item.value = value; ret.paramList.Add(item); } return(ret); }
public void SetExpression(L2DExpressionMotion rawExpressionData) { rawExpressionData.setFadeIn(motionFadeSpeed); rawExpressionData.setFadeOut(motionFadeSpeed); l2dExpressioNMotionManager.startMotion(rawExpressionData, false); }