从一个老外的BLOG上找到的,准备在引擎中使用。Cal3d是个很强的骨骼系统,很多虚拟现实系统都使用这个。本人做了略微略微的修改,但并不大,就增加 了个DLLPATH,呵呵。用的时候只要修改下这个就好了。
{
$Id: cal3d.pas,v 1.4 2003/05/31 23:14:44 pythian Exp $
Description: Delphi header file for cal3d.dll library
Author: Elessar (elessar@wladca.pl)
Created on: 15.11.2001
}
unit VRCal3d;
interface
uses windows, sysutils;
const
DLLPath = '..\..\引擎部分\外部DLL\';
//file magic cookies
SKELETON_FILE_MAGIC: array[0..3] of char = ('C', 'S', 'F', #0);
ANIMATION_FILE_MAGIC: array[0..3] of char = ('C', 'A', 'F', #0);
MESH_FILE_MAGIC: array[0..3] of char = ('C', 'M', 'F', #0);
MATERIAL_FILE_MAGIC: array[0..3] of char = ('C', 'R', 'F', #0);
//library version
LIBRARY_VERSION = 600;
//file version
CURRENT_FILE_VERSION: Cardinal = LIBRARY_VERSION;
EARLIEST_COMPATIBLE_FILE_VERSION = 600;
//maximum array ranges
MAX_SINGLE = 29999;
MAX_INT = 29999;
type
//some additional types
PByte = ^Byte;
PInteger = ^Integer;
PSingle = ^Single;
PSingleArray = array of single;
PByteArray = array of byte;
PIntArray = array of integer;
PStringArray = array of string;
PCalSingleArray = ^CalSingleArray;
CalSingleArray = array[0..MAX_SINGLE] of single;
PCalIntArray = ^CalIntArray;
CalIntArray = array[0..MAX_INT] of integer;
PCalColorBuf = ^CalColorBuf;
CalColorBuf = array[0..3] of byte;
//Some cal3d functions return pointers to standard c++ objects, these ones
//are impossible to use in delphi, however, I do not consider them important
//for programs that use cal3d, they are used rather internally
StdList = class
end;
StdMap = class
end;
StdVector = class
end;
CalUserData = Pointer;
PCalColor = ^CalColor;
CalColor = record
red: byte;
green: byte;
blue: byte;
alpha: byte;
end;
PCalMap = ^CalMap;
CalMap = record
strFilename: PChar;
userData: CalUserData;
end;
PCalFace = ^CalFace;
CalFace = array[0..2] of Integer;
PCalTextureCoordinate = ^CalTextureCoordinate;
CalTextureCoordinate = record
u: single;
v: single;
end;
PCalInfluence = ^CalInfluence;
CalInfluence = record
boneId: integer;
weight: single;
x, y, z: single;
nx, ny, nz: single;
end;
PCalVertex = ^CalVertex;
CalVertex = record
vectorInfluence: StdVector;
collapseId: integer;
faceCollapseCount: integer;
end;
{
CalQuaternion = class
end;
CalVector = class
end;
}
CalQuaternion = ^CalQuaternionRec;
CalQuaternionRec = record
x, y, z, w: Single;
end;
CalVector = ^CalVectorRec;
CalVectorRec = record
x, y, z: Single;
end;
CalAnimation = class
end;
CalAnimationAction = class
end;
CalAnimationCycle = class
end;
CalCoreAnimation = class
end;
CalCoreKeyframe = class
end;
CalCoreTrack = class
end;
CalCoreMaterial = class
end;
CalCoreMesh = class
end;
CalCoreModel = class
end;
CalCoreSubmesh = class
end;
CalCoreSkeleton = class
end;
CalBone = class
end;
CalCoreBone = class
end;
CalSkeleton = class
end;
CalLoader = class
end;
CalSaver = class
end;
CalModel = class
end;
CalMixer = class
end;
CalMesh = class
end;
CalRenderer = class
end;
CalSubmesh = class
end;
var
// *** CalAnimation ***
Animation_Destroy: procedure(self: CalAnimation); cdecl;
Animation_GetCoreAnimation: function(self: CalAnimation): CalCoreAnimation;
cdecl;
Animation_GetState: function(self: CalAnimation): cardinal; cdecl;
Animation_GetTime: function(self: CalAnimation): single; cdecl;
Animation_GetType: function(self: CalAnimation): cardinal; cdecl;
// *** CalAnimationAction ***
AnimationAction_New: function(): CalAnimationAction; cdecl;
AnimationAction_Delete: procedure(self: CalAnimationAction); cdecl;
AnimationAction_Create: function(self: CalAnimationAction; pCoreAnimation:
CalCoreAnimation): boolean; cdecl;
AnimationAction_Destroy: procedure(self: CalAnimationAction); cdecl;
AnimationAction_Execute: function(self: CalAnimationAction; delayIn, delayOut:
single): boolean; cdecl;
AnimationAction_GetWeight: function(self: CalAnimationAction): single; cdecl;
AnimationAction_Update: function(self: CalAnimationAction; deltaTime: single):
boolean; cdecl;
// *** CalAnimationCycle ***
AnimationCycle_New: function(): CalAnimationCycle; cdecl;
AnimationCycle_Delete: procedure(self: CalAnimationCycle); cdecl;
AnimationCycle_Blend: function(self: CalAnimationCycle; weight, delay:
single): boolean; cdecl;
AnimationCycle_Create: function(self: CalAnimationCycle; pCoreAnimation:
CalCoreAnimation): boolean; cdecl;
AnimationCycle_Destroy: procedure(self: CalAnimationCycle); cdecl;
AnimationCycle_GetWeight: function(self: CalAnimationCycle): single; cdecl;
AnimationCycle_SetAsync: procedure(self: CalAnimationCycle; time, duration:
single); cdecl;
AnimationCycle_Update: function(self: CalAnimationCycle; deltaTime: single):
boolean; cdecl;
// *** CalBone ***
Bone_New: function(): CalBone; cdecl;
Bone_Delete: procedure(self: CalBone); cdecl;
Bone_BlendState: procedure(self: CalBone; weight: single; translation:
CalVector; rotation: CalQuaternion); cdecl;
Bone_CalculateState: procedure(self: CalBone); cdecl;
Bone_ClearState: procedure(self: CalBone); cdecl;
Bone_Create: function(self: CalBone; pCoreBone: CalCoreBone): boolean; cdecl;
Bone_Destroy: procedure(self: CalBone); cdecl;
Bone_GetCoreBone: function(self: CalBone): CalCoreBone; cdecl;
Bone_GetRotation: function(self: CalBone): CalQuaternion; cdecl;
Bone_GetRotationAbsolute: function(self: CalBone): CalQuaternion; cdecl;
Bone_GetRotationBoneSpace: function(self: CalBone): CalQuaternion; cdecl;
Bone_GetTranslation: function(self: CalBone): CalVector; cdecl;
Bone_GetTranslationAbsolute: function(self: CalBone): CalVector; cdecl;
Bone_GetTranslationBoneSpace: function(self: CalBone): CalVector; cdecl;
Bone_LockState: procedure(self: CalBone); cdecl;
Bone_SetSkeleton: procedure(self: CalBone; pSkeleton: CalSkeleton); cdecl;
// *** CalCoreAnimation ***
CoreAnimation_New: function(): CalCoreAnimation; cdecl;
CoreAnimation_Delete: procedure(self: CalCoreAnimation); cdecl;
CoreAnimation_AddCoreTrack: function(self: CalCoreAnimation; pCoreTrack:
CalCoreTrack): Boolean; cdecl;
CoreAnimation_Create: function(self: CalCoreAnimation): boolean; cdecl;
CoreAnimation_Destroy: procedure(self: CalCoreAnimation); cdecl;
CoreAnimation_GetCoreTrack: function(self: CalCoreAnimation; coreBoneId:
integer): CalCoreTrack; cdecl;
CoreAnimation_GetDuration: function(self: CalCoreAnimation): single; cdecl;
CoreAnimation_GetListCoreTrack: function(self: CalCoreAnimation): StdList;
cdecl;
CoreAnimation_SetDuration: procedure(self: CalCoreAnimation; duration:
single); cdecl;
// *** CalCoreBone *** 骨头
CoreBone_New: function(): CalCoreBone; cdecl;
CoreBone_Delete: procedure(self: CalCoreBone); cdecl;
CoreBone_AddChildId: function(self: CalCoreBone; childId: integer): boolean;
cdecl;
CoreBone_CalculateState: procedure(self: CalCoreBone); cdecl;
CoreBone_Create: function(self: CalCoreBone; strName: PChar): boolean; cdecl;
CoreBone_Destroy: procedure(self: CalCoreBone); cdecl;
CoreBone_GetListChildId: function(self: CalCoreBone): StdList; cdecl;
CoreBone_GetName: function(self: CalCoreBone): PChar; cdecl;
CoreBone_GetParentId: function(self: CalCoreBone): integer; cdecl;
CoreBone_GetRotation: function(self: CalCoreBone): CalQuaternion; cdecl;
CoreBone_GetRotationAbsolute: function(self: CalCoreBone): CalQuaternion;
cdecl;
CoreBone_GetTranslation: function(self: CalCoreBone): CalVector; cdecl;
CoreBone_GetTranslationAbsolute: function(self: CalCoreBone): CalVector;
cdecl;
CoreBone_GetUserData: function(self: CalCoreBone): CalUserData; cdecl;
CoreBone_SetCoreSkeleton: procedure(self: CalCoreBone; pCoreSkeleton:
CalCoreSkeleton); cdecl;
CoreBone_SetParentId: procedure(self: CalCoreBone; parentId: integer); cdecl;
CoreBone_SetRotation: procedure(self: CalCoreBone; rotation: CalQuaternion);
cdecl;
CoreBone_SetTranslation: procedure(self: CalCoreBone; translation: CalVector);
cdecl;
CoreBone_SetUserData: procedure(self: CalCoreBone; userData: CalUserData);
cdecl;
// *** CalCoreKeyFrame *** 关键帧
CoreKeyframe_New: function(): CalCoreKeyframe; cdecl;
CoreKeyframe_Delete: procedure(self: CalCoreKeyframe); cdecl;
CoreKeyframe_Create: function(self: CalCoreKeyframe): boolean; cdecl;
CoreKeyframe_Destroy: procedure(self: CalCoreKeyframe); cdecl;
CoreKeyframe_GetRotation: function(self: CalCoreKeyframe): CalQuaternion;
cdecl;
CoreKeyframe_GetTime: function(self: CalCoreKeyframe): single; cdecl;
CoreKeyframe_GetTranslation: function(self: CalCoreKeyframe): CalVector;
cdecl;
CoreKeyframe_SetRotation: procedure(self: CalCoreKeyframe; rotation:
CalQuaternion); cdecl;
CoreKeyframe_SetTime: procedure(self: CalCoreKeyframe; time: single); cdecl;
CoreKeyframe_SetTranslation: procedure(self: CalCoreKeyframe; translation:
CalVector); cdecl;
// *** CalCoreMaterial ***
CoreMaterial_New: function(): CalCoreMaterial; cdecl;
CoreMaterial_Delete: procedure(self: CalCoreMaterial); cdecl;
CoreMaterial_Create: function(self: CalCoreMaterial): boolean; cdecl;
CoreMaterial_Destroy: procedure(self: CalCoreMaterial); cdecl;
CoreMaterial_GetAmbientColor: function(self: CalCoreMaterial): PCalColor;
cdecl;
CoreMaterial_GetDiffuseColor: function(self: CalCoreMaterial): PCalColor;
cdecl;
CoreMaterial_GetMapCount: function(self: CalCoreMaterial): integer; cdecl;
CoreMaterial_GetMapFilename: function(self: CalCoreMaterial; mapId: integer):
PChar; cdecl;
CoreMaterial_GetMapUserData: function(self: CalCoreMaterial; mapId: integer):
CalUserData; cdecl;
CoreMaterial_GetShininess: function(self: CalCoreMaterial): single; cdecl;
CoreMaterial_GetSpecularColor: function(self: CalCoreMaterial): PCalColor;
cdecl;
CoreMaterial_GetUserData: function(self: CalCoreMaterial): CalUserData; cdecl;
CoreMaterial_GetVectorMap: function(self: CalCoreMaterial): StdVector; cdecl;
CoreMaterial_Reserve: function(self: CalCoreMaterial; mapCount: integer):
boolean; cdecl;
CoreMaterial_SetMUserData: procedure(self: CalCoreMaterial; mapId: integer;
userData: CalUserData); cdecl;
CoreMaterial_SetAmbientColor: procedure(self: CalCoreMaterial; ambientColor:
PCalColor); cdecl;
CoreMaterial_SetDiffuseColor: procedure(self: CalCoreMaterial; diffuseColor:
PCalColor); cdecl;
CoreMaterial_SetMap: function(self: CalCoreMaterial; id: integer; map:
PCalMap): boolean; cdecl;
CoreMaterial_SetMapUserData: function(self: CalCoreMaterial; mapId: integer;
userData: CalUserData): boolean; cdecl;
CoreMaterial_SetShininess: procedure(self: CalCoreMaterial; shininess:
single); cdecl;
CoreMaterial_SetSpecularColor: procedure(self: CalCoreMaterial; specularColor:
PCalColor); cdecl;
CoreMaterial_SetUserData: procedure(self: CalCoreMaterial; userData:
CalUserData); cdecl;
// *** CalCoreMesh ***
CoreMesh_New: function(): CalCoreMesh; cdecl;
CoreMesh_Delete: procedure(self: CalCoreMesh); cdecl;
CoreMesh_AddCoreSubmesh: function(self: CalCoreMesh; pCoreSubmesh:
CalCoreSubmesh): integer; cdecl;
CoreMesh_Create: function(self: CalCoreMesh): boolean; cdecl;
CoreMesh_Destroy: procedure(self: CalCoreMesh); cdecl;
CoreMesh_GetCoreSubmesh: function(self: CalCoreMesh; id: integer):
CalCoreSubmesh; cdecl;
CoreMesh_GetCoreSubmeshCount: function(self: CalCoreMesh): integer; cdecl;
CoreMesh_GetVectorCoreSubmesh: function(self: CalCoreMesh): StdVector; cdecl;
// *** CalCoreModel ***
CoreModel_New: function(): CalCoreModel; cdecl;
CoreModel_Delete: procedure(self: CalCoreModel); cdecl;
CoreModel_AddCoreAnimation: function(self: CalCoreModel; pCoreAnimation:
CalCoreAnimation): integer; cdecl;
CoreModel_AddCoreMaterial: function(self: CalCoreModel; pCoreMaterial:
CalCoreMaterial): integer; cdecl;
CoreModel_AddCoreMesh: function(self: CalCoreModel; pCoreMesh: CalCoreMesh):
integer; cdecl;
CoreModel_Create: function(self: CalCoreModel; strName: PChar): boolean;
cdecl;
CoreModel_CreateCoreMaterialThread: function(self: CalCoreModel;
coreMaterialThreadId: integer): boolean; cdecl;
CoreModel_Destroy: procedure(self: CalCoreModel); cdecl;
CoreModel_GetCoreAnimation: function(self: CalCoreModel; id: integer):
CalCoreAnimation; cdecl;
CoreModel_GetCoreAnimationCount: function(self: CalCoreModel): integer; cdecl;
CoreModel_GetCoreMaterial: function(self: CalCoreModel; id: integer):
CalCoreMaterial; cdecl;
CoreModel_GetCoreMaterialCount: function(self: CalCoreModel): integer; cdecl;
CoreModel_GetCoreMaterialId: function(self: CalCoreModel;
coreMaterialThreadId, setId: integer): integer; cdecl;
CoreModel_GetCoreMesh: function(self: CalCoreModel; id: integer): CalCoreMesh;
cdecl;
CoreModel_GetCoreMeshCount: function(self: CalCoreModel): integer; cdecl;
CoreModel_GetCoreSkeleton: function(self: CalCoreModel): CalCoreSkeleton;
cdecl;
CoreModel_GetUserData: function(self: CalCoreModel): CalUserData; cdecl;
CoreModel_LoadCoreAnimation: function(self: CalCoreModel; strFilename: PChar):
integer; cdecl;
CoreModel_LoadCoreMaterial: function(self: CalCoreModel; strFilename: PChar):
integer; cdecl;
CoreModel_LoadCoreMesh: function(self: CalCoreModel; strFilename: PChar):
integer; cdecl;
CoreModel_LoadCoreSkeleton: function(self: CalCoreModel; strFilename: PChar):
boolean; cdecl;
CoreModel_SaveCoreAnimation: function(self: CalCoreModel; strFilename: PChar;
id: integer): boolean; cdecl;
CoreModel_SaveCoreMaterial: function(self: CalCoreModel; strFilename: PChar;
id: integer): boolean; cdecl;
CoreModel_SaveCoreMesh: function(self: CalCoreModel; strFilename: PChar; id:
integer): boolean; cdecl;
CoreModel_SaveCoreSkeleton: function(self: CalCoreModel; strFilename: PChar):
boolean; cdecl;
CoreModel_SetCoreMaterialId: function(self: CalCoreModel;
coreMaterialThreadId, setId, coreMaterialId: integer): boolean; cdecl;
CoreModel_SetUserData: procedure(self: CalCoreModel; userData: CalUserData);
cdecl;
// *** CalCoreSkeleton ***
CoreSkeleton_New: function(): CalCoreSkeleton; cdecl;
CoreSkeleton_Delete: procedure(self: CalCoreSkeleton); cdecl;
CoreSkeleton_AddCoreBone: function(self: CalCoreSkeleton; pCoreBone:
CalCoreBone): integer; cdecl;
CoreSkeleton_AddRootCoreBoneId: function(self: CalCoreSkeleton; boneId:
integer): boolean; cdecl;
CoreSkeleton_CalculateState: procedure(self: CalCoreSkeleton); cdecl;
CoreSkeleton_Create: function(self: CalCoreSkeleton): boolean; cdecl;
CoreSkeleton_Destroy: procedure(self: CalCoreSkeleton); cdecl;
CoreSkeleton_GetCoreBone: function(self: CalCoreSkeleton; boneId: integer):
CalCoreBone; cdecl;
CoreSkeleton_GetCoreBoneId: function(self: CalCoreSkeleton; strBone: PChar):
integer; cdecl;
CoreSkeleton_GetListRootCoreBoneId: function(self: CalCoreSkeleton): StdList;
cdecl;
CoreSkeleton_GetVectorCoreBone: function(self: CalCoreSkeleton): StdVector;
cdecl;
// *** CalCoreSubmesh ***
CoreSubmesh_New: function(): CalCoreSubmesh; cdecl;
CoreSubmesh_Delete: procedure(self: CalCoreSubmesh); cdecl;
CoreSubmesh_Create: function(self: CalCoreSubmesh): boolean; cdecl;
CoreSubmesh_Destroy: procedure(self: CalCoreSubmesh); cdecl;
CoreSubmesh_GetCoreMaterialThreadId: function(self: CalCoreSubmesh): integer;
cdecl;
CoreSubmesh_GetFaceCount: function(self: CalCoreSubmesh): integer; cdecl;
CoreSubmesh_GetLodCount: function(self: CalCoreSubmesh): integer; cdecl;
CoreSubmesh_GetVectorFace: function(self: CalCoreSubmesh): StdVector; cdecl;
CoreSubmesh_GetVectorVectorTextureCoordinate: function(self: CalCoreSubmesh):
StdVector; cdecl;
CoreSubmesh_GetVectorVertex: function(self: CalCoreSubmesh): StdVector; cdecl;
CoreSubmesh_GetVertexCount: function(self: CalCoreSubmesh): integer; cdecl;
CoreSubmesh_Reserve: function(self: CalCoreSubmesh; vertexCount,
textureCoordinateCount, faceCount: integer): boolean; cdecl;
CoreSubmesh_SetCoreMaterialThreadId: procedure(self: CalCoreSubmesh;
coreMaterialThreadId: integer); cdecl;
CoreSubmesh_SetFace: function(self: CalCoreSubmesh; id: integer; face:
PCalFace): boolean; cdecl;
CoreSubmesh_SetLodCount: procedure(self: CalCoreSubmesh; lodCount: integer);
cdecl;
CoreSubmesh_SetTextureCoordinate: function(self: CalCoreSubmesh; vertexId, id:
integer; textureCoordinate: PCalTextureCoordinate): boolean; cdecl;
CoreSubmesh_SetVertex: function(self: CalCoreSubmesh; id: integer; vertex:
PCalVertex): boolean; cdecl;
// *** CalCoreTrack ***
CoreTrack_New: function(): CalCoreTrack; cdecl;
CoreTrack_Delete: procedure(self: CalCoreTrack); cdecl;
CoreTrack_AddCoreKeyframe: function(self: CalCoreTrack; pCoreKeyFrame:
CalCoreKeyframe): boolean; cdecl;
CoreTrack_Create: function(self: CalCoreTrack): boolean; cdecl;
CoreTrack_Destroy: procedure(self: CalCoreTrack); cdecl;
CoreTrack_GetCoreBoneId: function(self: CalCoreTrack): integer; cdecl;
CoreTrack_GetMapCoreKeyframe: function(self: CalCoreTrack): StdMap; cdecl;
CoreTrack_GetState: function(self: CalCoreTrack; time, duration: single;
translation: CalVector; rotation: CalQuaternion): boolean; cdecl;
CoreTrack_SetCoreBoneId: function(self: CalCoreTrack; coreBoneId: integer):
boolean; cdecl;
// *** CalLoader ***
Loader_New: function(): CalLoader; cdecl;
Loader_Delete: procedure(self: CalLoader); cdecl;
Loader_LoadCoreAnimation: function(self: CalLoader; strFilename: PChar):
CalCoreAnimation; cdecl;
Loader_LoadCoreMaterial: function(self: CalLoader; strFilename: PChar):
CalCoreMaterial; cdecl;
Loader_LoadCoreMesh: function(self: CalLoader; strFilename: PChar):
CalCoreMesh; cdecl;
Loader_LoadCoreSkeleton: function(self: CalLoader; strFilename: PChar):
CalCoreSkeleton; cdecl;
// *** CalMesh ***
Mesh_New: function(): CalMesh; cdecl;
Mesh_Delete: procedure(self: CalMesh); cdecl;
Mesh_Create: function(self: CalMesh; pCoreMesh: CalCoreMesh): boolean; cdecl;
Mesh_Destroy: procedure(self: CalMesh); cdecl;
Mesh_GetCoreMesh: function(self: CalMesh): CalCoreMesh; cdecl;
Mesh_GetSubmesh: function(self: CalMesh; id: integer): CalSubmesh; cdecl;
Mesh_GetSubmeshCount: function(self: CalMesh): integer; cdecl;
Mesh_SetLodLevel: procedure(self: CalMesh; lodLevel: single); cdecl;
Mesh_SetMaterialSet: procedure(self: CalMesh; setId: integer); cdecl;
Mesh_SetModel: procedure(self: CalMesh; pModel: CalModel); cdecl;
// *** CalMixer ***
Mixer_New: function(): CalMixer; cdecl;
Mixer_Delete: procedure(self: CalMixer); cdecl;
Mixer_BlendCycle: function(self: CalMixer; id: integer; weight, delay:
single): boolean; cdecl;
Mixer_ClearCycle: function(self: CalMixer; id: integer; delay: single):
boolean; cdecl;
Mixer_Create: function(self: CalMixer; pModel: CalModel): boolean; cdecl;
Mixer_Destroy: procedure(self: CalMixer); cdecl;
Mixer_ExecuteAction: function(self: CalMixer; id: integer; delayIn, delayOut:
single): boolean; cdecl;
Mixer_UpdateAnimation: procedure(self: CalMixer; deltaTime: single); cdecl;
Mixer_UpdateSkeleton: procedure(self: CalMixer); cdecl;
// *** CalModel ***
Model_New: function(): CalModel; cdecl;
Model_Delete: procedure(self: CalModel); cdecl;
Model_Create: function(self: CalModel; pCoreModel: CalCoreModel): boolean;
cdecl;
Model_Destroy: procedure(self: CalModel); cdecl;
Model_AttachMesh: function(self: CalModel; coreMeshId: integer):
boolean; cdecl;
Model_GetCoreModel: function(self: CalModel): CalCoreModel; cdecl;
Model_GetMixer: function(self: CalModel): CalMixer; cdecl;
Model_GetRenderer: function(self: CalModel): CalRenderer; cdecl;
Model_GetSkeleton: function(self: CalModel): CalSkeleton; cdecl;
Model_GetUserData: function(self: CalModel): CalUserData; cdecl;
Model_SetLodLevel: procedure(self: CalModel; lodLevel: single); cdecl;
Model_SetMaterialSet: procedure(self: CalModel; setId: integer); cdecl;
Model_SetUserData: procedure(self: CalModel; userData: CalUserData); cdecl;
Model_Update: procedure(self: CalModel; deltaTime: single); cdecl;
// *** CalQuaternion ***
Quaternion_New: function(x, y, z, w: single): CalQuaternion; cdecl;
Quaternion_Delete: procedure(self: CalQuaternion); cdecl;
Quaternion_Blend: procedure(self: CalQuaternion; factor: single; q:
CalQuaternion); cdecl;
Quaternion_Product1: procedure(self: CalQuaternion; q: CalQuaternion); cdecl;
Quaternion_Product3: procedure(self: CalQuaternion; tx, ty, tz: single);
cdecl;
Quaternion_Product4: procedure(self: CalQuaternion; tx, ty, tz, tw: single);
cdecl;
// *** CalRenderer ***
Renderer_New: function(): CalRenderer; cdecl;
Renderer_Delete: procedure(self: CalRenderer); cdecl;
Renderer_BeginRendering: function(self: CalRenderer): boolean; cdecl;
Renderer_Create: function(self: CalRenderer; pModel: CalModel): boolean;
cdecl;
Renderer_Destroy: procedure(self: CalRenderer); cdecl;
Renderer_DetachMesh: function(self: CalRenderer; coreMeshId: integer):
boolean; cdecl;
Renderer_EndRendering: procedure(self: CalRenderer); cdecl;
Renderer_GetAmbientColor: procedure(self: CalRenderer; pColorBuffer: PByte);
cdecl;
Renderer_GetDiffuseColor: procedure(self: CalRenderer; pColorBuffer: PByte);
cdecl;
Renderer_GetFaceCount: function(self: CalRenderer): integer; cdecl;
Renderer_GetFaces: function(self: CalRenderer; pFaceBuffer: PInteger):
integer; cdecl;
Renderer_GetMapCount: function(self: CalRenderer): integer; cdecl;
Renderer_GetMapUserData: function(self: CalRenderer; mapId: integer):
CalUserData; cdecl;
Renderer_GetMeshCount: function(self: CalRenderer): integer; cdecl;
Renderer_GetNormals: function(self: CalRenderer; pNormalBuffer: PSingle):
integer; cdecl;
Renderer_GetShininess: function(self: CalRenderer): Single; cdecl;
Renderer_GetSpecularColor: procedure(self: CalRenderer; pColorBuffer: PByte);
cdecl;
Renderer_GetSubmeshCount: function(self: CalRenderer; meshId: integer):
integer; cdecl;
Renderer_GetTextureCoordinates: function(self: CalRenderer; mapId: integer;
pTextureCoordinateBuffer: PSingle): integer; cdecl;
Renderer_GetVectorMesh: function(self: CalRenderer): StdVector; cdecl;
Renderer_GetVertexCount: function(self: CalRenderer): integer; cdecl;
Renderer_GetVertices: function(self: CalRenderer; pVertexBuffer: Pointer):
integer; cdecl;
Renderer_SelectMeshSubmesh: function(self: CalRenderer; meshId, submeshId:
integer): boolean; cdecl;
// *** CalSaver ***
Saver_New: function(): CalSaver; cdecl;
Saver_Delete: procedure(self: CalSaver); cdecl;
Saver_SaveCoreAnimation: function(self: CalSaver; strFilename: PChar;
pCoreAnimation: CalCoreAnimation): boolean; cdecl;
Saver_SaveCoreMaterial: function(self: CalSaver; strFilename: PChar;
pCoreMaterial: CalCoreMaterial): boolean; cdecl;
Saver_SaveCoreMesh: function(self: CalSaver; strFilename: PChar; pCoreMesh:
CalCoreMesh): boolean; cdecl;
Saver_SaveCoreSkeleton: function(self: CalSaver; strFilename: PChar;
pCoreSkeleton: CalCoreSkeleton): boolean; cdecl;
// *** CalSkeleton ***
Skeleton_New: function(): CalSkeleton; cdecl;
Skeleton_Delete: procedure(self: CalSkeleton); cdecl;
Skeleton_CalculateState: procedure(self: CalSkeleton); cdecl;
Skeleton_ClearState: procedure(self: CalSkeleton); cdecl;
Skeleton_Create: function(self: CalSkeleton; pCoreSkeleton: CalCoreSkeleton):
boolean; cdecl;
Skeleton_Destroy: procedure(self: CalSkeleton); cdecl;
Skeleton_GetBone: function(self: CalSkeleton; boneId: integer): CalBone;
cdecl;
Skeleton_GetVectorBone: function(self: CalSkeleton): StdVector; cdecl;
Skeleton_LockState: procedure(self: CalSkeleton); cdecl;
Skeleton_GetBonePoints: function(self: CalSkeleton; pPoints: PSingle):
integer; cdecl;
Skeleton_GetBonePointsStatic: function(self: CalSkeleton; pPoints: PSingle):
integer; cdecl;
Skeleton_GetBoneLines: function(self: CalSkeleton; pLines: PSingle): integer;
cdecl;
Skeleton_GetBoneLinesStatic: function(self: CalSkeleton; pLines: PSingle):
integer; cdecl;
// *** CalSubmesh ***
Submesh_New: function(): CalSubmesh; cdecl;
Submesh_Delete: procedure(self: CalSubmesh); cdecl;
Submesh_Create: function(self: CalSubmesh; pCoreSubmesh: CalCoreSubmesh):
boolean; cdecl;
Submesh_Destroy: procedure(self: CalSubmesh); cdecl;
Submesh_GetCoreSubmesh: function(self: CalSubmesh): CalCoreSubmesh; cdecl;
Submesh_GetCoreMaterialId: function(self: CalSubmesh): integer; cdecl;
Submesh_GetFaceCount: function(self: CalSubmesh): integer; cdecl;
Submesh_GetFaces: function(self: CalSubmesh; pFaceBuffer: PInteger): integer;
cdecl;
Submesh_GetVertexCount: function(self: CalSubmesh): integer; cdecl;
Submesh_SetCoreMaterialId: procedure(self: CalSubmesh; coreMaterialId:
integer); cdecl;
Submesh_SetLodLevel: procedure(self: CalSubmesh; lodLevel: single); cdecl;
// *** CalVector ***
Vector_New: function(x, y, z: single): CalVector; cdecl;
Vector_Delete: procedure(self: CalVector); cdecl;
Vector_Blend: procedure(self: CalVector; factor: single; v: CalVector); cdecl;
Vector_Add: procedure(self: CalVector; v: CalVector); cdecl;
Vector_Transform: procedure(self: CalVector; q: CalQuaternion); cdecl;
procedure LoadCal3D();
procedure FreeCal3D();
function IsLoaded(): Boolean;
implementation
var
hDLL: THandle = 0;
function IsLoaded(): Boolean;
begin
Result := (hDLL <> 0);
end;
procedure LoadCal3d();
begin
if fileexists(DLLPath+'cal3d.dll') then
hDLL := LoadLibrary(DLLPath+'cal3d.dll')
else
raise exception.create('Could not locate cal3d.dll');
// *** CalAnimation ***
Animation_Destroy := GetProcAddress(hDLL, 'CalAnimation_Destroy');
Animation_GetCoreAnimation := GetProcAddress(hDLL,
'CalAnimation_GetCoreAnimation');
Animation_GetState := GetProcAddress(hDLL, 'CalAnimation_GetState');
Animation_GetTime := GetProcAddress(hDLL, 'CalAnimation_GetTime');
Animation_GetType := GetProcAddress(hDLL, 'CalAnimation_GetType');
// *** CalAnimationAction ***
AnimationAction_New := GetProcAddress(hDLL, 'CalAnimationAction_New');
AnimationAction_Delete := GetProcAddress(hDLL, 'CalAnimationAction_Delete');
AnimationAction_Create := GetProcAddress(hDLL, 'CalAnimationAction_Create');
AnimationAction_Destroy := GetProcAddress(hDLL, 'CalAnimationAction_Destroy');
AnimationAction_Execute := GetProcAddress(hDLL, 'CalAnimationAction_Execute');
AnimationAction_GetWeight := GetProcAddress(hDLL,
'CalAnimationAction_GetWeight');
AnimationAction_Update := GetProcAddress(hDLL, 'CalAnimationAction_Update');
// *** CalAnimationCycle ***
AnimationCycle_New := GetProcAddress(hDLL, 'CalAnimationCycle_New');
AnimationCycle_Delete := GetProcAddress(hDLL, 'CalAnimationCycle_Delete');
AnimationCycle_Blend := GetProcAddress(hDLL, 'CalAnimationCycle_Blend');
AnimationCycle_Create := GetProcAddress(hDLL, 'CalAnimationCycle_Create');
AnimationCycle_Destroy := GetProcAddress(hDLL, 'CalAnimationCycle_Destroy');
AnimationCycle_GetWeight := GetProcAddress(hDLL, 'CalAnimationCycle_GetWeight');
AnimationCycle_SetAsync := GetProcAddress(hDLL, 'CalAnimationCycle_SetAsync');
AnimationCycle_Update := GetProcAddress(hDLL, 'CalAnimationCycle_Update');
// *** CalBone ***
Bone_New := GetProcAddress(hDLL, 'CalBone_New');
Bone_Delete := GetProcAddress(hDLL, 'CalBone_Delete');
Bone_BlendState := GetProcAddress(hDLL, 'CalBone_BlendState');
Bone_CalculateState := GetProcAddress(hDLL, 'CalBone_CalculateState');
Bone_ClearState := GetProcAddress(hDLL, 'CalBone_ClearState');
Bone_Create := GetProcAddress(hDLL, 'CalBone_Create');
Bone_Destroy := GetProcAddress(hDLL, 'CalBone_Destroy');
Bone_GetCoreBone := GetProcAddress(hDLL, 'CalBone_GetCoreBone');
Bone_GetRotation := GetProcAddress(hDLL, 'CalBone_GetRotation');
Bone_GetRotationAbsolute := GetProcAddress(hDLL, 'CalBone_GetRotationAbsolute');
Bone_GetRotationBoneSpace := GetProcAddress(hDLL, 'CalBone_GetRotationBoneSpace');
Bone_GetTranslation := GetProcAddress(hDLL, 'CalBone_GetTranslation');
Bone_GetTranslationAbsolute := GetProcAddress(hDLL, 'CalBone_GetTranslationAbsolute');
Bone_GetTranslationBoneSpace := GetProcAddress(hDLL, 'CalBone_GetTranslationBoneSpace');
Bone_LockState := GetProcAddress(hDLL, 'CalBone_LockState');
Bone_SetSkeleton := GetProcAddress(hDLL, 'CalBone_SetSkeleton');
// *** CalCoreAnimation ***
CoreAnimation_New := GetProcAddress(hDLL, 'CalCoreAnimation_New');
CoreAnimation_Delete := GetProcAddress(hDLL, 'CalCoreAnimation_Delete');
CoreAnimation_AddCoreTrack := GetProcAddress(hDLL,
'CalCoreAnimation_AddCoreTrack');
CoreAnimation_Create := GetProcAddress(hDLL, 'CalCoreAnimation_Create');
CoreAnimation_Destroy := GetProcAddress(hDLL, 'CalCoreAnimation_Destroy');
CoreAnimation_GetCoreTrack := GetProcAddress(hDLL,
'CalCoreAnimation_GetCoreTrack');
CoreAnimation_GetDuration := GetProcAddress(hDLL,
'CalCoreAnimation_GetDuration');
CoreAnimation_GetListCoreTrack := GetProcAddress(hDLL,
'CalCoreAnimation_GetListCoreTrack');
CoreAnimation_SetDuration := GetProcAddress(hDLL,
'CalCoreAnimation_SetDuration');
// *** CalCoreBone ***
CoreBone_New := GetProcAddress(hDLL, 'CalCoreBone_New');
CoreBone_Delete := GetProcAddress(hDLL, 'CalCoreBone_Delete');
CoreBone_AddChildId := GetProcAddress(hDLL, 'CalCoreBone_AddChildId');
CoreBone_CalculateState := GetProcAddress(hDLL, 'CalCoreBone_CalculateState');
CoreBone_Create := GetProcAddress(hDLL, 'CalCoreBone_Create');
CoreBone_Destroy := GetProcAddress(hDLL, 'CalCoreBone_Destroy');
CoreBone_GetListChildId := GetProcAddress(hDLL, 'CalCoreBone_GetListChildId');
CoreBone_GetName := GetProcAddress(hDLL, 'CalCoreBone_GetName');
CoreBone_GetParentId := GetProcAddress(hDLL, 'CalCoreBone_GetParentId');
CoreBone_GetRotation := GetProcAddress(hDLL, 'CalCoreBone_GetRotation');
CoreBone_GetRotationAbsolute := GetProcAddress(hDLL,
'CalCoreBone_GetRotationAbsolute');
CoreBone_GetTranslation := GetProcAddress(hDLL, 'CalCoreBone_GetTranslation');
CoreBone_GetTranslationAbsolute := GetProcAddress(hDLL,
'CalCoreBone_GetTranslationAbsolute');
CoreBone_GetUserData := GetProcAddress(hDLL, 'CalCoreBone_GetUserData');
CoreBone_SetCoreSkeleton := GetProcAddress(hDLL, 'CalCoreBone_SetCoreSkeleton');
CoreBone_SetParentId := GetProcAddress(hDLL, 'CalCoreBone_SetParentId');
CoreBone_SetRotation := GetProcAddress(hDLL, 'CalCoreBone_SetRotation');
CoreBone_SetTranslation := GetProcAddress(hDLL, 'CalCoreBone_SetTranslation');
CoreBone_SetUserData := GetProcAddress(hDLL, 'CalCoreBone_SetUserData');
// *** CalCoreKeyFrame ***
CoreKeyframe_New := GetProcAddress(hDLL, 'CalCoreKeyframe_New');
CoreKeyframe_Delete := GetProcAddress(hDLL, 'CalCoreKeyframe_Delete');
CoreKeyframe_Create := GetProcAddress(hDLL, 'CalCoreKeyframe_Create');
CoreKeyframe_Destroy := GetProcAddress(hDLL, 'CalCoreKeyframe_Destroy');
CoreKeyframe_GetRotation := GetProcAddress(hDLL, 'CalCoreKeyframe_GetRotation');
CoreKeyframe_GetTime := GetProcAddress(hDLL, 'CalCoreKeyframe_GetTime');
CoreKeyframe_GetTranslation := GetProcAddress(hDLL,
'CalCoreKeyframe_GetTranslation');
CoreKeyframe_SetRotation := GetProcAddress(hDLL, 'CalCoreKeyframe_SetRotation');
CoreKeyframe_SetTime := GetProcAddress(hDLL, 'CalCoreKeyframe_SetTime');
CoreKeyframe_SetTranslation := GetProcAddress(hDLL,
'CalCoreKeyframe_SetTranslation');
// *** CalCoreMaterial ***
CoreMaterial_New := GetProcAddress(hDLL, 'CalCoreMaterial_New');
CoreMaterial_Delete := GetProcAddress(hDLL, 'CalCoreMaterial_Delete');
CoreMaterial_Create := GetProcAddress(hDLL, 'CalCoreMaterial_Create');
CoreMaterial_Destroy := GetProcAddress(hDLL, 'CalCoreMaterial_Destroy');
CoreMaterial_GetAmbientColor := GetProcAddress(hDLL,
'CalCoreMaterial_GetAmbientColor');
CoreMaterial_GetDiffuseColor := GetProcAddress(hDLL,
'CalCoreMaterial_GetDiffuseColor');
CoreMaterial_GetMapCount := GetProcAddress(hDLL, 'CalCoreMaterial_GetMapCount');
CoreMaterial_GetMapFilename := GetProcAddress(hDLL,
'CalCoreMaterial_GetMapFilename');
CoreMaterial_GetMapUserData := GetProcAddress(hDLL,
'CalCoreMaterial_GetMapUserData');
CoreMaterial_GetShininess := GetProcAddress(hDLL,
'CalCoreMaterial_GetShininess');
CoreMaterial_GetSpecularColor := GetProcAddress(hDLL,
'CalCoreMaterial_GetSpecularColor');
CoreMaterial_GetUserData := GetProcAddress(hDLL, 'CalCoreMaterial_GetUserData');
CoreMaterial_GetVectorMap := GetProcAddress(hDLL,
'CalCoreMaterial_GetVectorMap');
CoreMaterial_Reserve := GetProcAddress(hDLL, 'CalCoreMaterial_Reserve');
CoreMaterial_SetMUserData := GetProcAddress(hDLL,
'CalCoreMaterial_SetMUserData');
CoreMaterial_SetAmbientColor := GetProcAddress(hDLL,
'CalCoreMaterial_SetAmbientColor');
CoreMaterial_SetDiffuseColor := GetProcAddress(hDLL,
'CalCoreMaterial_SetDiffuseColor');
CoreMaterial_SetMap := GetProcAddress(hDLL, 'CalCoreMaterial_SetMap');
CoreMaterial_SetMapUserData := GetProcAddress(hDLL,
'CalCoreMaterial_SetMapUserData');
CoreMaterial_SetShininess := GetProcAddress(hDLL,
'CalCoreMaterial_SetShininess');
CoreMaterial_SetSpecularColor := GetProcAddress(hDLL,
'CalCoreMaterial_SetSpecularColor');
CoreMaterial_SetUserData := GetProcAddress(hDLL, 'CalCoreMaterial_SetUserData');
// *** CalCoreMesh ***
CoreMesh_New := GetProcAddress(hDLL, 'CalCoreMesh_New');
CoreMesh_Delete := GetProcAddress(hDLL, 'CalCoreMesh_Delete');
CoreMesh_AddCoreSubmesh := GetProcAddress(hDLL, 'CalCoreMesh_AddCoreSubmesh');
CoreMesh_Create := GetProcAddress(hDLL, 'CalCoreMesh_Create');
CoreMesh_Destroy := GetProcAddress(hDLL, 'CalCoreMesh_Destroy');
CoreMesh_GetCoreSubmesh := GetProcAddress(hDLL, 'CalCoreMesh_GetCoreSubmesh');
CoreMesh_GetCoreSubmeshCount := GetProcAddress(hDLL,
'CalCoreMesh_GetCoreSubmeshCount');
CoreMesh_GetVectorCoreSubmesh := GetProcAddress(hDLL,
'CalCoreMesh_GetVectorCoreSubmesh');
// *** CalCoreModel ***
CoreModel_New := GetProcAddress(hDLL, 'CalCoreModel_New');
CoreModel_Delete := GetProcAddress(hDLL, 'CalCoreModel_Delete');
CoreModel_AddCoreAnimation := GetProcAddress(hDLL,
'CalCoreModel_AddCoreAnimation');
CoreModel_AddCoreMaterial := GetProcAddress(hDLL,
'CalCoreModel_AddCoreMaterial');
CoreModel_AddCoreMesh := GetProcAddress(hDLL, 'CalCoreModel_AddCoreMesh');
CoreModel_Create := GetProcAddress(hDLL, 'CalCoreModel_Create');
CoreModel_CreateCoreMaterialThread := GetProcAddress(hDLL,
'CalCoreModel_CreateCoreMaterialThread');
CoreModel_Destroy := GetProcAddress(hDLL, 'CalCoreModel_Destroy');
CoreModel_GetCoreAnimation := GetProcAddress(hDLL,
'CalCoreModel_GetCoreAnimation');
CoreModel_GetCoreAnimationCount := GetProcAddress(hDLL,
'CalCoreModel_GetCoreAnimationCount');
CoreModel_GetCoreMaterial := GetProcAddress(hDLL,
'CalCoreModel_GetCoreMaterial');
CoreModel_GetCoreMaterialCount := GetProcAddress(hDLL,
'CalCoreModel_GetCoreMaterialCount');
CoreModel_GetCoreMaterialId := GetProcAddress(hDLL,
'CalCoreModel_GetCoreMaterialId');
CoreModel_GetCoreMesh := GetProcAddress(hDLL, 'CalCoreModel_GetCoreMesh');
CoreModel_GetCoreMeshCount := GetProcAddress(hDLL,
'CalCoreModel_GetCoreMeshCount');
CoreModel_GetCoreSkeleton := GetProcAddress(hDLL,
'CalCoreModel_GetCoreSkeleton');
CoreModel_GetUserData := GetProcAddress(hDLL, 'CalCoreModel_GetUserData');
CoreModel_LoadCoreAnimation := GetProcAddress(hDLL,
'CalCoreModel_LoadCoreAnimation');
CoreModel_LoadCoreMaterial := GetProcAddress(hDLL,
'CalCoreModel_LoadCoreMaterial');
CoreModel_LoadCoreMesh := GetProcAddress(hDLL, 'CalCoreModel_LoadCoreMesh');
CoreModel_LoadCoreSkeleton := GetProcAddress(hDLL,
'CalCoreModel_LoadCoreSkeleton');
CoreModel_SaveCoreAnimation := GetProcAddress(hDLL,
'CalCoreModel_SaveCoreAnimation');
CoreModel_SaveCoreMaterial := GetProcAddress(hDLL,
'CalCoreModel_SaveCoreMaterial');
CoreModel_SaveCoreMesh := GetProcAddress(hDLL, 'CalCoreModel_SaveCoreMesh');
CoreModel_SaveCoreSkeleton := GetProcAddress(hDLL,
'CalCoreModel_SaveCoreSkeleton');
CoreModel_SetCoreMaterialId := GetProcAddress(hDLL,
'CalCoreModel_SetCoreMaterialId');
CoreModel_SetUserData := GetProcAddress(hDLL, 'CalCoreModel_SetUserData');
// *** CalCoreSkeleton ***
CoreSkeleton_New := GetProcAddress(hDLL, 'CalCoreSkeleton_New');
CoreSkeleton_Delete := GetProcAddress(hDLL, 'CalCoreSkeleton_Delete');
CoreSkeleton_AddCoreBone := GetProcAddress(hDLL, 'CalCoreSkeleton_AddCoreBone');
CoreSkeleton_AddRootCoreBoneId := GetProcAddress(hDLL,
'CalCoreSkeleton_AddRootCoreBoneId');
CoreSkeleton_CalculateState := GetProcAddress(hDLL,
'CalCoreSkeleton_CalculateState');
CoreSkeleton_Create := GetProcAddress(hDLL, 'CalCoreSkeleton_Create');
CoreSkeleton_Destroy := GetProcAddress(hDLL, 'CalCoreSkeleton_Destroy');
CoreSkeleton_GetCoreBone := GetProcAddress(hDLL, 'CalCoreSkeleton_GetCoreBone');
CoreSkeleton_GetCoreBoneId := GetProcAddress(hDLL,
'CalCoreSkeleton_GetCoreBoneId');
CoreSkeleton_GetListRootCoreBoneId := GetProcAddress(hDLL,
'CalCoreSkeleton_GetListRootCoreBoneId');
CoreSkeleton_GetVectorCoreBone := GetProcAddress(hDLL,
'CalCoreSkeleton_GetVectorCoreBone');
// *** CalCoreSubmesh ***
CoreSubmesh_New := GetProcAddress(hDLL, 'CalCoreSubmesh_New');
CoreSubmesh_Delete := GetProcAddress(hDLL, 'CalCoreSubmesh_Delete');
CoreSubmesh_Create := GetProcAddress(hDLL, 'CalCoreSubmesh_Create');
CoreSubmesh_Destroy := GetProcAddress(hDLL, 'CalCoreSubmesh_Destroy');
CoreSubmesh_GetCoreMaterialThreadId := GetProcAddress(hDLL,
'CalCoreSubmesh_GetCoreMaterialThreadId');
CoreSubmesh_GetFaceCount := GetProcAddress(hDLL, 'CalCoreSubmesh_GetFaceCount');
CoreSubmesh_GetLodCount := GetProcAddress(hDLL, 'CalCoreSubmesh_GetLodCount');
CoreSubmesh_GetVectorFace := GetProcAddress(hDLL,
'CalCoreSubmesh_GetVectorFace');
CoreSubmesh_GetVectorVectorTextureCoordinate := GetProcAddress(hDLL,
'CalCoreSubmesh_GetVectorVectorTextureCoordinate');
CoreSubmesh_GetVectorVertex := GetProcAddress(hDLL,
'CalCoreSubmesh_GetVectorVertex');
CoreSubmesh_GetVertexCount := GetProcAddress(hDLL,
'CalCoreSubmesh_GetVertexCount');
CoreSubmesh_Reserve := GetProcAddress(hDLL, 'CalCoreSubmesh_Reserve');
CoreSubmesh_SetCoreMaterialThreadId := GetProcAddress(hDLL,
'CalCoreSubmesh_SetCoreMaterialThreadId');
CoreSubmesh_SetFace := GetProcAddress(hDLL, 'CalCoreSubmesh_SetFace');
CoreSubmesh_SetLodCount := GetProcAddress(hDLL, 'CalCoreSubmesh_SetLodCount');
CoreSubmesh_SetTextureCoordinate := GetProcAddress(hDLL,
'CalCoreSubmesh_SetTextureCoordinate');
CoreSubmesh_SetVertex := GetProcAddress(hDLL, 'CalCoreSubmesh_SetVertex');
// *** CalCoreTrack ***
CoreTrack_New := GetProcAddress(hDLL, 'CalCoreTrack_New');
CoreTrack_Delete := GetProcAddress(hDLL, 'CalCoreTrack_Delete');
CoreTrack_AddCoreKeyframe := GetProcAddress(hDLL,
'CalCoreTrack_AddCoreKeyframe');
CoreTrack_Create := GetProcAddress(hDLL, 'CalCoreTrack_Create');
CoreTrack_Destroy := GetProcAddress(hDLL, 'CalCoreTrack_Destroy');
CoreTrack_GetCoreBoneId := GetProcAddress(hDLL, 'CalCoreTrack_GetCoreBoneId');
CoreTrack_GetMapCoreKeyframe := GetProcAddress(hDLL,
'CalCoreTrack_GetMapCoreKeyframe');
CoreTrack_GetState := GetProcAddress(hDLL, 'CalCoreTrack_GetState');
CoreTrack_SetCoreBoneId := GetProcAddress(hDLL, 'CalCoreTrack_SetCoreBoneId');
// *** CalLoader ***
Loader_New := GetProcAddress(hDLL, 'CalLoader_New');
Loader_Delete := GetProcAddress(hDLL, 'CalLoader_Delete');
Loader_LoadCoreAnimation := GetProcAddress(hDLL, 'CalLoader_LoadCoreAnimation');
Loader_LoadCoreMaterial := GetProcAddress(hDLL, 'CalLoader_LoadCoreMaterial');
Loader_LoadCoreMesh := GetProcAddress(hDLL, 'CalLoader_LoadCoreMesh');
Loader_LoadCoreSkeleton := GetProcAddress(hDLL, 'CalLoader_LoadCoreSkeleton');
// *** CalMesh ***
Mesh_New := GetProcAddress(hDLL, 'CalMesh_New');
Mesh_Delete := GetProcAddress(hDLL, 'CalMesh_Delete');
Mesh_Create := GetProcAddress(hDLL, 'CalMesh_Create');
Mesh_Destroy := GetProcAddress(hDLL, 'CalMesh_Destroy');
Mesh_GetCoreMesh := GetProcAddress(hDLL, 'CalMesh_GetCoreMesh');
Mesh_GetSubmesh := GetProcAddress(hDLL, 'CalMesh_GetSubmesh');
Mesh_GetSubmeshCount := GetProcAddress(hDLL, 'CalMesh_GetSubmeshCount');
Mesh_SetLodLevel := GetProcAddress(hDLL, 'CalMesh_SetLodLevel');
Mesh_SetMaterialSet := GetProcAddress(hDLL, 'CalMesh_SetMaterialSet');
Mesh_SetModel := GetProcAddress(hDLL, 'CalMesh_SetModel');
// *** CalMixer ***
Mixer_New := GetProcAddress(hDLL, 'CalMixer_New');
Mixer_Delete := GetProcAddress(hDLL, 'CalMixer_Delete');
Mixer_BlendCycle := GetProcAddress(hDLL, 'CalMixer_BlendCycle');
Mixer_ClearCycle := GetProcAddress(hDLL, 'CalMixer_ClearCycle');
Mixer_Create := GetProcAddress(hDLL, 'CalMixer_Create');
Mixer_Destroy := GetProcAddress(hDLL, 'CalMixer_Destroy');
Mixer_ExecuteAction := GetProcAddress(hDLL, 'CalMixer_ExecuteAction');
Mixer_UpdateAnimation := GetProcAddress(hDLL, 'CalMixer_UpdateAnimation');
Mixer_UpdateSkeleton := GetProcAddress(hDLL, 'CalMixer_UpdateSkeleton');
// *** CalModel ***
Model_New := GetProcAddress(hDLL, 'CalModel_New');
Model_Delete := GetProcAddress(hDLL, 'CalModel_Delete');
Model_Create := GetProcAddress(hDLL, 'CalModel_Create');
Model_Destroy := GetProcAddress(hDLL, 'CalModel_Destroy');
Model_AttachMesh := GetProcAddress(hDLL, 'CalModel_AttachMesh');
Model_GetCoreModel := GetProcAddress(hDLL, 'CalModel_GetCoreModel');
Model_GetMixer := GetProcAddress(hDLL, 'CalModel_GetMixer');
Model_GetRenderer := GetProcAddress(hDLL, 'CalModel_GetRenderer');
Model_GetSkeleton := GetProcAddress(hDLL, 'CalModel_GetSkeleton');
Model_GetUserData := GetProcAddress(hDLL, 'CalModel_GetUserData');
Model_SetLodLevel := GetProcAddress(hDLL, 'CalModel_SetLodLevel');
Model_SetMaterialSet := GetProcAddress(hDLL, 'CalModel_SetMaterialSet');
Model_SetUserData := GetProcAddress(hDLL, 'CalModel_SetUserData');
Model_Update := GetProcAddress(hDLL, 'CalModel_Update');
// *** CalQuaternion ***
Quaternion_New := GetProcAddress(hDLL, 'CalQuaternion_New');
Quaternion_Delete := GetProcAddress(hDLL, 'CalQuaternion_Delete');
Quaternion_Blend := GetProcAddress(hDLL, 'CalQuaternion_Blend');
Quaternion_Product1 := GetProcAddress(hDLL, 'CalQuaternion_Product1');
Quaternion_Product3 := GetProcAddress(hDLL, 'CalQuaternion_Product3');
Quaternion_Product4 := GetProcAddress(hDLL, 'CalQuaternion_Product4');
// *** CalRenderer ***
Renderer_New := GetProcAddress(hDLL, 'CalRenderer_New');
Renderer_Delete := GetProcAddress(hDLL, 'CalRenderer_Delete');
Renderer_BeginRendering := GetProcAddress(hDLL, 'CalRenderer_BeginRendering');
Renderer_Create := GetProcAddress(hDLL, 'CalRenderer_Create');
Renderer_Destroy := GetProcAddress(hDLL, 'CalRenderer_Destroy');
Renderer_DetachMesh := GetProcAddress(hDLL, 'CalRenderer_DetachMesh');
Renderer_EndRendering := GetProcAddress(hDLL, 'CalRenderer_EndRendering');
Renderer_GetAmbientColor := GetProcAddress(hDLL, 'CalRenderer_GetAmbientColor');
Renderer_GetDiffuseColor := GetProcAddress(hDLL, 'CalRenderer_GetDiffuseColor');
Renderer_GetFaceCount := GetProcAddress(hDLL, 'CalRenderer_GetFaceCount');
Renderer_GetFaces := GetProcAddress(hDLL, 'CalRenderer_GetFaces');
Renderer_GetMapCount := GetProcAddress(hDLL, 'CalRenderer_GetMapCount');
Renderer_GetMapUserData := GetProcAddress(hDLL, 'CalRenderer_GetMapUserData');
Renderer_GetMeshCount := GetProcAddress(hDLL, 'CalRenderer_GetMeshCount');
Renderer_GetNormals := GetProcAddress(hDLL, 'CalRenderer_GetNormals');
Renderer_GetShininess := GetProcAddress(hDLL, 'CalRenderer_GetShininess');
Renderer_GetSpecularColor := GetProcAddress(hDLL,
'CalRenderer_GetSpecularColor');
Renderer_GetSubmeshCount := GetProcAddress(hDLL, 'CalRenderer_GetSubmeshCount');
Renderer_GetTextureCoordinates := GetProcAddress(hDLL,
'CalRenderer_GetTextureCoordinates');
Renderer_GetVectorMesh := GetProcAddress(hDLL, 'CalRenderer_GetVectorMesh');
Renderer_GetVertexCount := GetProcAddress(hDLL, 'CalRenderer_GetVertexCount');
Renderer_GetVertices := GetProcAddress(hDLL, 'CalRenderer_GetVertices');
Renderer_SelectMeshSubmesh := GetProcAddress(hDLL,
'CalRenderer_SelectMeshSubmesh');
// *** CalSaver ***
Saver_New := GetProcAddress(hDLL, 'CalSaver_New');
Saver_Delete := GetProcAddress(hDLL, 'CalSaver_Delete');
Saver_SaveCoreAnimation := GetProcAddress(hDLL, 'CalSaver_SaveCoreAnimation');
Saver_SaveCoreMaterial := GetProcAddress(hDLL, 'CalSaver_SaveCoreMaterial');
Saver_SaveCoreMesh := GetProcAddress(hDLL, 'CalSaver_SaveCoreMesh');
Saver_SaveCoreSkeleton := GetProcAddress(hDLL, 'CalSaver_SaveCoreSkeleton');
// *** CalSkeleton ***
Skeleton_New := GetProcAddress(hDLL, 'CalSkeleton_New');
Skeleton_Delete := GetProcAddress(hDLL, 'CalSkeleton_Delete');
Skeleton_CalculateState := GetProcAddress(hDLL, 'CalSkeleton_CalculateState');
Skeleton_ClearState := GetProcAddress(hDLL, 'CalSkeleton_ClearState');
Skeleton_Create := GetProcAddress(hDLL, 'CalSkeleton_Create');
Skeleton_Destroy := GetProcAddress(hDLL, 'CalSkeleton_Destroy');
Skeleton_GetBone := GetProcAddress(hDLL, 'CalSkeleton_GetBone');
Skeleton_GetVectorBone := GetProcAddress(hDLL, 'CalSkeleton_GetVectorBone');
Skeleton_LockState := GetProcAddress(hDLL, 'CalSkeleton_LockState');
Skeleton_GetBonePoints := GetProcAddress(hDLL, 'CalSkeleton_GetBonePoints');
Skeleton_GetBonePointsStatic := GetProcAddress(hDLL,
'CalSkeleton_GetBonePointsStatic');
Skeleton_GetBoneLines := GetProcAddress(hDLL, 'CalSkeleton_GetBoneLines');
Skeleton_GetBoneLinesStatic := GetProcAddress(hDLL,
'CalSkeleton_GetBoneLinesStatic');
// *** CalSubmesh ***
Submesh_New := GetProcAddress(hDLL, 'CalSubmesh_New');
Submesh_Delete := GetProcAddress(hDLL, 'CalSubmesh_Delete');
Submesh_Create := GetProcAddress(hDLL, 'CalSubmesh_Create');
Submesh_Destroy := GetProcAddress(hDLL, 'CalSubmesh_Destroy');
Submesh_GetCoreSubmesh := GetProcAddress(hDLL, 'CalSubmesh_GetCoreSubmesh');
Submesh_GetCoreMaterialId := GetProcAddress(hDLL,
'CalSubmesh_GetCoreMaterialId');
Submesh_GetFaceCount := GetProcAddress(hDLL, 'CalSubmesh_GetFaceCount');
Submesh_GetFaces := GetProcAddress(hDLL, 'CalSubmesh_GetFaces');
Submesh_GetVertexCount := GetProcAddress(hDLL, 'CalSubmesh_GetVertexCount');
Submesh_SetCoreMaterialId := GetProcAddress(hDLL,
'CalSubmesh_SetCoreMaterialId');
Submesh_SetLodLevel := GetProcAddress(hDLL, 'CalSubmesh_SetLodLevel');
// *** CalVector ***
Vector_New := GetProcAddress(hDLL, 'CalVector_New');
Vector_Delete := GetProcAddress(hDLL, 'CalVector_Delete');
Vector_Add := GetProcAddress(hDLL, 'CalVector_Add');
Vector_Blend := GetProcAddress(hDLL, 'CalVector_Blend');
Vector_Transform := GetProcAddress(hDLL, 'CalVector_Transform');
end;
procedure FreeCal3d();
begin
// *** CalAnimation ***
@Animation_Destroy := nil;
@Animation_GetCoreAnimation := nil;
@Animation_GetState := nil;
@Animation_GetTime := nil;
@Animation_GetType := nil;
// *** CalAnimationAction ***
@AnimationAction_New := nil;
@AnimationAction_Delete := nil;
@AnimationAction_Create := nil;
@AnimationAction_Destroy := nil;
@AnimationAction_Execute := nil;
@AnimationAction_GetWeight := nil;
@AnimationAction_Update := nil;
// *** CalAnimationCycle ***
@AnimationCycle_New := nil;
@AnimationCycle_Delete := nil;
@AnimationCycle_Blend := nil;
@AnimationCycle_Create := nil;
@AnimationCycle_Destroy := nil;
@AnimationCycle_GetWeight := nil;
@AnimationCycle_SetAsync := nil;
@AnimationCycle_Update := nil;
// *** CalBone ***
Bone_New := nil;
Bone_Delete := nil;
Bone_BlendState := nil;
Bone_CalculateState := nil;
Bone_ClearState := nil;
Bone_Create := nil;
Bone_Destroy := nil;
Bone_GetCoreBone := nil;
Bone_GetRotation := nil;
Bone_GetRotationAbsolute := nil;
Bone_GetRotationBoneSpace := nil;
Bone_GetTranslation := nil;
Bone_GetTranslationAbsolute := nil;
Bone_GetTranslationBoneSpace := nil;
Bone_LockState := nil;
Bone_SetSkeleton := nil;
// *** CalCoreAnimation ***
@CoreAnimation_New := nil;
@CoreAnimation_Delete := nil;
@CoreAnimation_AddCoreTrack := nil;
@CoreAnimation_Create := nil;
@CoreAnimation_Destroy := nil;
@CoreAnimation_GetCoreTrack := nil;
@CoreAnimation_GetDuration := nil;
@CoreAnimation_GetListCoreTrack := nil;
@CoreAnimation_SetDuration := nil;
// *** CalCoreBone ***
@CoreBone_New := nil;
@CoreBone_Delete := nil;
@CoreBone_AddChildId := nil;
@CoreBone_CalculateState := nil;
@CoreBone_Create := nil;
@CoreBone_Destroy := nil;
@CoreBone_GetListChildId := nil;
@CoreBone_GetName := nil;
@CoreBone_GetParentId := nil;
@CoreBone_GetRotation := nil;
@CoreBone_GetRotationAbsolute := nil;
@CoreBone_GetTranslation := nil;
@CoreBone_GetTranslationAbsolute := nil;
@CoreBone_GetUserData := nil;
@CoreBone_SetCoreSkeleton := nil;
@CoreBone_SetParentId := nil;
@CoreBone_SetRotation := nil;
@CoreBone_SetTranslation := nil;
@CoreBone_SetUserData := nil;
// *** CalCoreKeyFrame ***
@CoreKeyframe_New := nil;
@CoreKeyframe_Delete := nil;
@CoreKeyframe_Create := nil;
@CoreKeyframe_Destroy := nil;
@CoreKeyframe_GetRotation := nil;
@CoreKeyframe_GetTime := nil;
@CoreKeyframe_GetTranslation := nil;
@CoreKeyframe_SetRotation := nil;
@CoreKeyframe_SetTime := nil;
@CoreKeyframe_SetTranslation := nil;
// *** CalCoreMaterial ***
@CoreMaterial_New := nil;
@CoreMaterial_Delete := nil;
@CoreMaterial_Create := nil;
@CoreMaterial_Destroy := nil;
@CoreMaterial_GetAmbientColor := nil;
@CoreMaterial_GetDiffuseColor := nil;
@CoreMaterial_GetMapCount := nil;
@CoreMaterial_GetMapFilename := nil;
@CoreMaterial_GetMapUserData := nil;
@CoreMaterial_GetShininess := nil;
@CoreMaterial_GetSpecularColor := nil;
@CoreMaterial_GetUserData := nil;
@CoreMaterial_GetVectorMap := nil;
@CoreMaterial_Reserve := nil;
@CoreMaterial_SetMUserData := nil;
@CoreMaterial_SetAmbientColor := nil;
@CoreMaterial_SetDiffuseColor := nil;
@CoreMaterial_SetMap := nil;
@CoreMaterial_SetMapUserData := nil;
@CoreMaterial_SetShininess := nil;
@CoreMaterial_SetSpecularColor := nil;
@CoreMaterial_SetUserData := nil;
// *** CalCoreMesh ***
@CoreMesh_New := nil;
@CoreMesh_Delete := nil;
@CoreMesh_AddCoreSubmesh := nil;
@CoreMesh_Create := nil;
@CoreMesh_Destroy := nil;
@CoreMesh_GetCoreSubmesh := nil;
@CoreMesh_GetCoreSubmeshCount := nil;
@CoreMesh_GetVectorCoreSubmesh := nil;
// *** CalCoreModel ***
@CoreModel_New := nil;
@CoreModel_Delete := nil;
@CoreModel_AddCoreAnimation := nil;
@CoreModel_AddCoreMaterial := nil;
@CoreModel_AddCoreMesh := nil;
@CoreModel_Create := nil;
@CoreModel_CreateCoreMaterialThread := nil;
@CoreModel_Destroy := nil;
@CoreModel_GetCoreAnimation := nil;
@CoreModel_GetCoreAnimationCount := nil;
@CoreModel_GetCoreMaterial := nil;
@CoreModel_GetCoreMaterialCount := nil;
@CoreModel_GetCoreMaterialId := nil;
@CoreModel_GetCoreMesh := nil;
@CoreModel_GetCoreMeshCount := nil;
@CoreModel_GetCoreSkeleton := nil;
@CoreModel_GetUserData := nil;
@CoreModel_LoadCoreAnimation := nil;
@CoreModel_LoadCoreMaterial := nil;
@CoreModel_LoadCoreMesh := nil;
@CoreModel_LoadCoreSkeleton := nil;
@CoreModel_SaveCoreAnimation := nil;
@CoreModel_SaveCoreMaterial := nil;
@CoreModel_SaveCoreMesh := nil;
@CoreModel_SaveCoreSkeleton := nil;
@CoreModel_SetCoreMaterialId := nil;
@CoreModel_SetUserData := nil;
// *** CalCoreSkeleton ***
@CoreSkeleton_New := nil;
@CoreSkeleton_Delete := nil;
@CoreSkeleton_AddCoreBone := nil;
@CoreSkeleton_AddRootCoreBoneId := nil;
@CoreSkeleton_CalculateState := nil;
@CoreSkeleton_Create := nil;
@CoreSkeleton_Destroy := nil;
@CoreSkeleton_GetCoreBone := nil;
@CoreSkeleton_GetCoreBoneId := nil;
@CoreSkeleton_GetListRootCoreBoneId := nil;
@CoreSkeleton_GetVectorCoreBone := nil;
// *** CalCoreSubmesh ***
@CoreSubmesh_New := nil;
@CoreSubmesh_Delete := nil;
@CoreSubmesh_Create := nil;
@CoreSubmesh_Destroy := nil;
@CoreSubmesh_GetCoreMaterialThreadId := nil;
@CoreSubmesh_GetFaceCount := nil;
@CoreSubmesh_GetLodCount := nil;
@CoreSubmesh_GetVectorFace := nil;
@CoreSubmesh_GetVectorVectorTextureCoordinate := nil;
@CoreSubmesh_GetVectorVertex := nil;
@CoreSubmesh_GetVertexCount := nil;
@CoreSubmesh_Reserve := nil;
@CoreSubmesh_SetCoreMaterialThreadId := nil;
@CoreSubmesh_SetFace := nil;
@CoreSubmesh_SetLodCount := nil;
@CoreSubmesh_SetTextureCoordinate := nil;
@CoreSubmesh_SetVertex := nil;
// *** CalCoreTrack ***
@CoreTrack_New := nil;
@CoreTrack_Delete := nil;
@CoreTrack_AddCoreKeyframe := nil;
@CoreTrack_Create := nil;
@CoreTrack_Destroy := nil;
@CoreTrack_GetCoreBoneId := nil;
@CoreTrack_GetMapCoreKeyframe := nil;
@CoreTrack_GetState := nil;
@CoreTrack_SetCoreBoneId := nil;
// *** CalLoader ***
@Loader_New := nil;
@Loader_Delete := nil;
@Loader_LoadCoreAnimation := nil;
@Loader_LoadCoreMaterial := nil;
@Loader_LoadCoreMesh := nil;
@Loader_LoadCoreSkeleton := nil;
// *** CalMesh ***
@Mesh_New := nil;
@Mesh_Delete := nil;
@Mesh_Create := nil;
@Mesh_Destroy := nil;
@Mesh_GetCoreMesh := nil;
@Mesh_GetSubmesh := nil;
@Mesh_GetSubmeshCount := nil;
@Mesh_SetLodLevel := nil;
@Mesh_SetMaterialSet := nil;
@Mesh_SetModel := nil;
// *** CalMixer ***
@Mixer_New := nil;
@Mixer_Delete := nil;
@Mixer_BlendCycle := nil;
@Mixer_ClearCycle := nil;
@Mixer_Create := nil;
@Mixer_Destroy := nil;
@Mixer_ExecuteAction := nil;
@Mixer_UpdateAnimation := nil;
@Mixer_UpdateSkeleton := nil;
// *** CalModel ***
@Model_New := nil;
@Model_Delete := nil;
@Model_Create := nil;
@Model_Destroy := nil;
@Model_AttachMesh := nil;
@Model_GetCoreModel := nil;
@Model_GetMixer := nil;
@Model_GetRenderer := nil;
@Model_GetSkeleton := nil;
@Model_GetUserData := nil;
@Model_SetLodLevel := nil;
@Model_SetMaterialSet := nil;
@Model_SetUserData := nil;
@Model_Update := nil;
// *** CalQuaternion ***
@Quaternion_New := nil;
@Quaternion_Delete := nil;
@Quaternion_Blend := nil;
@Quaternion_Product1 := nil;
@Quaternion_Product3 := nil;
@Quaternion_Product4 := nil;
// *** CalRenderer ***
@Renderer_New := nil;
@Renderer_Delete := nil;
@Renderer_BeginRendering := nil;
@Renderer_Create := nil;
@Renderer_Destroy := nil;
@Renderer_DetachMesh := nil;
@Renderer_EndRendering := nil;
@Renderer_GetAmbientColor := nil;
@Renderer_GetDiffuseColor := nil;
@Renderer_GetFaceCount := nil;
@Renderer_GetFaces := nil;
@Renderer_GetMapCount := nil;
@Renderer_GetMapUserData := nil;
@Renderer_GetMeshCount := nil;
@Renderer_GetNormals := nil;
@Renderer_GetShininess := nil;
@Renderer_GetSpecularColor := nil;
@Renderer_GetSubmeshCount := nil;
@Renderer_GetTextureCoordinates := nil;
@Renderer_GetVectorMesh := nil;
@Renderer_GetVertexCount := nil;
@Renderer_GetVertices := nil;
@Renderer_SelectMeshSubmesh := nil;
// *** CalSaver ***
@Saver_New := nil;
@Saver_Delete := nil;
@Saver_SaveCoreAnimation := nil;
@Saver_SaveCoreMaterial := nil;
@Saver_SaveCoreMesh := nil;
@Saver_SaveCoreSkeleton := nil;
// *** CalSkeleton ***
@Skeleton_New := nil;
@Skeleton_Delete := nil;
@Skeleton_CalculateState := nil;
@Skeleton_ClearState := nil;
@Skeleton_Create := nil;
@Skeleton_Destroy := nil;
@Skeleton_GetBone := nil;
@Skeleton_GetVectorBone := nil;
@Skeleton_LockState := nil;
@Skeleton_GetBonePoints := nil;
@Skeleton_GetBonePointsStatic := nil;
@Skeleton_GetBoneLines := nil;
@Skeleton_GetBoneLinesStatic := nil;
// *** CalSubmesh ***
@Submesh_New := nil;
@Submesh_Delete := nil;
@Submesh_Create := nil;
@Submesh_Destroy := nil;
@Submesh_GetCoreSubmesh := nil;
@Submesh_GetCoreMaterialId := nil;
@Submesh_GetFaceCount := nil;
@Submesh_GetFaces := nil;
@Submesh_GetVertexCount := nil;
@Submesh_SetCoreMaterialId := nil;
@Submesh_SetLodLevel := nil;
// *** CalVector ***
@Vector_New := nil;
@Vector_Delete := nil;
@Vector_Add := nil;
@Vector_Blend := nil;
@Vector_Transform := nil;
FreeLibrary(hDLL);
hDLL := 0;
end;
{$WARNINGS OFF}
end.
{
$Log: cal3d.pas,v $
Revision 1.4 2003/05/31 23:14:44 pythian
new Editor almost stable
Revision 1.3 2002/10/11 14:23:44 pythian
Skeletal Animation, Cal 0.8, golurut
Revision 1.2 2002/06/09 22:44:00 pythian
Quake 3 bsp importer and patches working, Cal3D texture fix
Revision 1.1 2002/06/09 14:02:11 mhearn
Committed basic skeletal modelling code -mike
Revision 1.9 2001/12/27 10:01:28 elessar
- prepared for publishing :)
Revision 1.8 2001/12/25 16:01:49 elessar
- cosmetic changes (nothing significant)
Revision 1.7 2001/12/23 17:07:31 elessar
- can't remember :)
Revision 1.6 2001/12/03 12:01:29 elessar
- now it works!
Revision 1.5 2001/11/25 18:24:30 elessar
- some additional types in cal3d.pas
Revision 1.4 2001/11/23 23:48:24 elessar
- first quite well working version
Revision 1.3 2001/11/22 14:35:37 elessar
- CalAnimation, CalAnimationAction and CalAnimationCycle classes
Revision 1.2 2001/11/20 20:58:25 elessar
- Testing external functions
}