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