rlSetUniform method

void rlSetUniform(
  1. num locIndex,
  2. TypedData value,
  3. RlShaderUniformDataType uniformType,
  4. num count,
)

Implementation

void rlSetUniform(
  num locIndex,
  TypedData value,
  RlShaderUniformDataType uniformType,
  num count,
) => run(
  () => 'rlSetUniform($locIndex, ${value.lengthInBytes}, ${uniformType.name})',
  () {
    final Pointer<Void> ptr;
    switch (uniformType) {
      case .RL_SHADER_UNIFORM_FLOAT:
      case .RL_SHADER_UNIFORM_VEC2:
      case .RL_SHADER_UNIFORM_VEC3:
      case .RL_SHADER_UNIFORM_VEC4:
        ptr = rl.Temp.Float$.FromTypedData(value).cast();
      case .RL_SHADER_UNIFORM_INT:
      case .RL_SHADER_UNIFORM_IVEC2:
      case .RL_SHADER_UNIFORM_IVEC3:
      case .RL_SHADER_UNIFORM_IVEC4:
      case .RL_SHADER_UNIFORM_SAMPLER2D:
        ptr = rl.Temp.Int32$.FromTypedData(value).cast();
      case .RL_SHADER_UNIFORM_UINT:
      case .RL_SHADER_UNIFORM_UIVEC2:
      case .RL_SHADER_UNIFORM_UIVEC3:
      case .RL_SHADER_UNIFORM_UIVEC4:
        ptr = rl.Temp.Uint32$.FromTypedData(value).cast();
    }
    rl.Rlgl.rlSetUniform(
      locIndex.toInt(),
      ptr,
      uniformType.value,
      count.toInt(),
    );
  },
);