Example #1
0
        /// <summary>
        /// テクニック名の追加
        /// </summary>
        /// <param name="idx">テクニックインデックス</param>
        /// <param name="name">idxのパラメーター名</param>
        /// <param name="type">name 型のタイプ</param>
        /// <param name="arySize">typeが配列の場合、そのサイズ</param>
        /// <returns></returns>
        public int RegisterAddPara(int idx, string name, UtilValueType type, int arySize = 0)
        {
            MCUtilValueEX    p = new MCUtilValueEX();
            MC_EFF_VALUE_MGR pTmp;

            if (m_TPars.Count <= idx)
            {
                throw new Exception("RegisterAddPara(" + idx + "," + name + ") テクニックインデックスが不正です");
            }

            pTmp = m_TPars[idx];

            if (pTmp.index.ContainsKey(name))
            {
                throw new Exception("RegisterAddPara(" + idx + "," + name + ") 変数が既に登録されています");
            }



            switch (type)
            {
            case UtilValueType.FLOAT:
            case UtilValueType.ARY_FLOAT:
            case UtilValueType.BOOL:
            case UtilValueType.ARY_BOOL:
            case UtilValueType.INT:
            case UtilValueType.ARY_INT:
                p.sv = m_spCoreEffect.GetVariableByName(name).AsScalar();
                if (!p.sv.IsValid)
                {
                    return(-1);
                }
                break;

            case UtilValueType.FLOAT2:
            case UtilValueType.FLOAT3:
                p.vv = m_spCoreEffect.GetVariableByName(name).AsVector();
                if (!p.vv.IsValid)
                {
                    return(-1);
                }
                break;

            case UtilValueType.FLOAT4x4:
                p.mv = m_spCoreEffect.GetVariableByName(name).AsMatrix();
                if (!p.mv.IsValid)
                {
                    return(-1);
                }
                break;
            }
            p.Create(type, arySize);

            pTmp.item.Add(p);
            pTmp.index.Add(name, pTmp.item.Count - 1);
            return(pTmp.item.Count - 1);
        }
Example #2
0
            /// <summary>複製</summary>
            /// <return>MCUtilValue</return>
            internal new MCUtilValueEX Clone()
            {
                MCUtilValueEX r = new MCUtilValueEX();

                Copy(r);
                r.sv = sv;
                r.vv = vv;
                r.mv = mv;
                return(r);
            }
Example #3
0
        /// <summary>
        /// 指定テクニックインデックスのパラメーター番号に4つのfloat型の値をセットする
        /// </summary>
        /// <param name="idx"></param>
        /// <param name="n"></param>
        /// <param name=""></param>
        public void SetFloatArray(int idx, int n, float[] a)
        {
            if (!this.Check(idx, n, UtilValueType.ARY_FLOAT))
            {
                return;
            }

            MCUtilValueEX p = m_TPars[idx].item[n];

            p.SetFloatArray(a, a.Length);
            p.sv.Set(p.GetFloatArray());
        }
Example #4
0
        /// <summary>
        /// 指定テクニックインデックスのパラメーター番号に4つのfloat型の値をセットする
        /// </summary>
        /// <param name="idx"></param>
        /// <param name="n"></param>
        /// <param name="f1"></param>
        /// <param name="f2"></param>
        /// <param name="f3"></param>
        /// <param name="f4"></param>
        public void SetFloat4(int idx, int n, float f1, float f2, float f3, float f4)
        {
            if (!this.Check(idx, n, UtilValueType.FLOAT4))
            {
                return;
            }

            MCUtilValueEX p = m_TPars[idx].item[n];

            p.SetFloat4(f1, f2, f3, f4);
            p.sv.Set(p.GetFloatArray());
        }