|
- unit uutlMcfHelper;
-
- {$mode objfpc}{$H+}
-
- interface
-
- uses
- ugluMatrix, ugluVector, uutlMCF, uglcLight;
-
- procedure utlWriteMatrix4f(const aSection: TutlMCFSection; const aMatrix: TgluMatrix4f);
- function utlReadMatrix4f(const aSection: TutlMCFSection): TgluMatrix4f;
- procedure utlWriteMaterial(const aSection: TutlMCFSection; const aMaterial: TglcMaterialRec);
- function utlReadMaterial(const aSection: TutlMCFSection): TglcMaterialRec;
- procedure utlWriteLight(const aSection: TutlMCFSection; const aLight: TglcLightRec);
- function utlReadLight(const aSection: TutlMCFSection): TglcLightRec;
-
- implementation
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure utlWriteMatrix4f(const aSection: TutlMCFSection; const aMatrix: TgluMatrix4f);
- begin
- with aSection do begin
- SetString('AxisX', gluVector4fToStr(aMatrix[maAxisX]));
- SetString('AxisY', gluVector4fToStr(aMatrix[maAxisY]));
- SetString('AxisZ', gluVector4fToStr(aMatrix[maAxisZ]));
- SetString('Pos', gluVector4fToStr(aMatrix[maPos]));
- end;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function utlReadMatrix4f(const aSection: TutlMCFSection): TgluMatrix4f;
- begin
- with aSection do begin
- result[maAxisX] := gluStrToVector4f(GetString('AxisX', '1; 0; 0; 0;'));
- result[maAxisY] := gluStrToVector4f(GetString('AxisY', '0; 1; 0; 0;'));
- result[maAxisZ] := gluStrToVector4f(GetString('AxisZ', '0; 0; 1; 0;'));
- result[maPos] := gluStrToVector4f(GetString('Pos', '0; 0; 0; 1;'));
- end;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure utlWriteMaterial(const aSection: TutlMCFSection; const aMaterial: TglcMaterialRec);
- begin
- with aSection do begin
- SetString('Ambient', gluVector4fToStr(aMaterial.Ambient));
- SetString('Diffuse', gluVector4fToStr(aMaterial.Diffuse));
- SetString('Specular', gluVector4fToStr(aMaterial.Specular));
- SetString('Emission', gluVector4fToStr(aMaterial.Emission));
- SetFloat ('Shininess', aMaterial.Shininess);
- end;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function utlReadMaterial(const aSection: TutlMCFSection): TglcMaterialRec;
- begin
- with aSection do begin
- result.Ambient := gluStrToVector4f(GetString('Ambient', gluVector4fToStr(MAT_DEFAULT_AMBIENT)));
- result.Diffuse := gluStrToVector4f(GetString('Diffuse', gluVector4fToStr(MAT_DEFAULT_DIFFUSE)));
- result.Specular := gluStrToVector4f(GetString('Specular', gluVector4fToStr(MAT_DEFAULT_SPECULAR)));
- result.Emission := gluStrToVector4f(GetString('Emission', gluVector4fToStr(MAT_DEFAULT_EMISSION)));
- result.Shininess := GetFloat('Shininess', MAT_DEFAULT_SHININESS);
- end;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure utlWriteLight(const aSection: TutlMCFSection; const aLight: TglcLightRec);
- begin
- with aSection do begin
- SetString('Ambient', gluVector4fToStr(aLight.Ambient));
- SetString('Diffuse', gluVector4fToStr(aLight.Diffuse));
- SetString('Specular', gluVector4fToStr(aLight.Specular));
- SetString('Position', gluVector4fToStr(aLight.Position));
- SetString('SpotDirection', gluVector3fToStr(aLight.SpotDirection));
- SetFloat ('SpotExponent', aLight.SpotExponent);
- SetFloat ('SpotCutoff', aLight.SpotCutoff);
- SetFloat ('ConstantAtt', aLight.ConstantAtt);
- SetFloat ('LinearAtt', aLight.LinearAtt);
- SetFloat ('QuadraticAtt', aLight.QuadraticAtt);
- end;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function utlReadLight(const aSection: TutlMCFSection): TglcLightRec;
- begin
- with aSection do begin
- result.Ambient := gluStrToVector4f(GetString('Ambient', gluVector4fToStr(LIGHT_DEFAULT_AMBIENT)));
- result.Diffuse := gluStrToVector4f(GetString('Diffuse', gluVector4fToStr(LIGHT_DEFAULT_DIFFUSE)));
- result.Specular := gluStrToVector4f(GetString('Specular', gluVector4fToStr(LIGHT_DEFAULT_SPECULAR)));
- result.Position := gluStrToVector4f(GetString('Position', gluVector4fToStr(LIGHT_DEFAULT_POSITION)));
- result.SpotDirection := gluStrToVector3f(GetString('SpotDirection', gluVector3fToStr(LIGHT_DEFAULT_SPOT_DIRECTION)));
- result.SpotExponent := GetFloat ('SpotExponent', LIGHT_DEFAULT_SPOT_EXPONENT);
- result.SpotCutoff := GetFloat ('SpotCutoff', LIGHT_DEFAULT_SPOT_CUTOFF);
- result.ConstantAtt := GetFloat ('ConstantAtt', LIGHT_DEFAULT_CONSTANT_ATT);
- result.LinearAtt := GetFloat ('LinearAtt', LIGHT_DEFAULT_LINEAR_ATT);
- result.QuadraticAtt := GetFloat ('QuadraticAtt', LIGHT_DEFAULT_QUADRATIC_ATT);
- end;
- end;
-
- end.
|