Пример #1
0
    /**
     * 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);
    }
Пример #2
0
    /**
     * 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);
 }