unit aiMaterial;

interface

uses aiTypes, aiVector2D, aiVector3D;

{This following directive causes enums to be stored as double words (32bit), to be compatible with
 the assimp C Dll}
{$Z4}

type TaiTextureOp = (
	aiTextureOp_Multiply = $0,
	aiTextureOp_Add = $1,
	aiTextureOp_Subtract = $2,
	aiTextureOp_Divide = $3,
	aiTextureOp_SmoothAdd = $4,
	aiTextureOp_SignedAdd = $5
	//_aiTextureOp_Force32Bit = 0x9fffffff
);

type TaiTextureMapMode = (
    aiTextureMapMode_Wrap = $0,
    aiTextureMapMode_Clamp = $1,
    aiTextureMapMode_Decal = $3,
    aiTextureMapMode_Mirror = $2
	 //_aiTextureMapMode_Force32Bit = 0x9fffffff
);

type TaiTextureMapping = (
    aiTextureMapping_UV = $0,
    aiTextureMapping_SPHERE = $1,
    aiTextureMapping_CYLINDER = $2,
    aiTextureMapping_BOX = $3,
    aiTextureMapping_PLANE = $4,
    aiTextureMapping_OTHER = $5
	 //_aiTextureMapping_Force32Bit = 0x9fffffff
);

type TaiTextureType = (
    aiTextureType_NONE = $0,
    aiTextureType_DIFFUSE = $1,
    aiTextureType_SPECULAR = $2,
    aiTextureType_AMBIENT = $3,
    aiTextureType_EMISSIVE = $4,
    aiTextureType_HEIGHT = $5,
    aiTextureType_NORMALS = $6,
    aiTextureType_SHININESS = $7,
    aiTextureType_OPACITY = $8,
    aiTextureType_DISPLACEMENT = $9,
    aiTextureType_LIGHTMAP = $A,
    aiTextureType_REFLECTION = $B,
    aiTextureType_UNKNOWN = $C
	 //_aiTextureType_Force32Bit = 0x9fffffff
);

const AI_TEXTURE_TYPE_MAX = aiTextureType_UNKNOWN;

type TaiShadingMode = (
    aiShadingMode_Flat = $1,
    aiShadingMode_Gouraud =  $2,
    aiShadingMode_Phong = $3,
    aiShadingMode_Blinn	= $4,
    aiShadingMode_Toon = $5,
    aiShadingMode_OrenNayar = $6,
    aiShadingMode_Minnaert = $7,
    aiShadingMode_CookTorrance = $8,
    aiShadingMode_NoShading = $9,
    aiShadingMode_Fresnel = $A
	 //_aiShadingMode_Force32Bit = 0x9fffffff
);


type TaiTextureFlags = (
	aiTextureFlags_Invert = $1,
	aiTextureFlags_UseAlpha = $2,
	aiTextureFlags_IgnoreAlpha = $4
	//_aiTextureFlags_Force32Bit = 0x9fffffff
);

type TaiBlendMode = (
	aiBlendMode_Default = $0,
	aiBlendMode_Additive = $1
	//_aiBlendMode_Force32Bit = 0x9fffffff
);

type TaiUVTransform = packed record
   mTranslation: TaiVector2D;
   mScaling: TaiVector2D;
   mRotation: single;
end;

type TaiPropertyTypeInfo = (
   aiPTI_Float   = $1,
   aiPTI_String  = $3,
   aiPTI_Integer = $4,
   aiPTI_Buffer  = $5
	// _aiPTI_Force32Bit = 0x9fffffff
);

type TaiMaterialProperty = packed record
   mKey: aiString;
   mSemantic: Cardinal;
   mIndex: Cardinal;
   mDataLength: Cardinal;
   mType: TaiPropertyTypeInfo;
   mData: PChar;
end;
type PaiMaterialProperty = ^TaiMaterialProperty;

type TaiMaterial = packed record
   mProperties: pointer;
   mNumProperties: Cardinal;
   mNumAllocated: Cardinal;
end;
type PaiMaterial = ^TaiMaterial;
type PaiMaterialArray = array[0..0] of PaiMaterial;
type PPaiMaterialArray = ^PaiMaterialArray;

const AI_MATKEY_NAME = '?mat.name';
const AI_MATKEY_TWOSIDED = '$mat.twosided';
const AI_MATKEY_SHADING_MODEL = '$mat.shadingm';
const AI_MATKEY_ENABLE_WIREFRAME = '$mat.wireframe';
const AI_MATKEY_BLEND_FUNC = '$mat.blend';
const AI_MATKEY_OPACITY = '$mat.opacity';
const AI_MATKEY_BUMPSCALING = '$mat.bumpscaling';
const AI_MATKEY_SHININESS = '$mat.shininess';
const AI_MATKEY_REFLECTIVITY = '$mat.reflectivity';
const AI_MATKEY_SHININESS_STRENGTH = '$mat.shinpercent';
const AI_MATKEY_REFRACTI = '$mat.refracti';
const AI_MATKEY_COLOR_DIFFUSE = '$clr.diffuse';
const AI_MATKEY_COLOR_AMBIENT = '$clr.ambient';
const AI_MATKEY_COLOR_SPECULAR = '$clr.specular';
const AI_MATKEY_COLOR_EMISSIVE = '$clr.emissive';
const AI_MATKEY_COLOR_TRANSPARENT = '$clr.transparent';
const AI_MATKEY_COLOR_REFLECTIVE = '$clr.reflective';
const AI_MATKEY_GLOBAL_BACKGROUND_IMAGE = '?bg.global';

const _AI_MATKEY_TEXTURE_BASE = '$tex.file';
const _AI_MATKEY_UVWSRC_BASE = '$tex.uvwsrc';
const _AI_MATKEY_TEXOP_BASE = '$tex.op';
const _AI_MATKEY_MAPPING_BASE = '$tex.mapping';
const _AI_MATKEY_TEXBLEND_BASE = '$tex.blend';
const _AI_MATKEY_MAPPINGMODE_U_BASE = '$tex.mapmodeu';
const _AI_MATKEY_MAPPINGMODE_V_BASE = '$tex.mapmodev';
const _AI_MATKEY_TEXMAP_AXIS_BASE = '$tex.mapaxis';
const _AI_MATKEY_UVTRANSFORM_BASE = '$tex.uvtrafo';
const _AI_MATKEY_TEXFLAGS_BASE = '$tex.flags';



implementation

end.