if ShowCover then
begin
for I := 0 to QuadCount - 1 do
begin
// Position initialisieren (aPos[0] = 0, aPos[1] = 0, aPos[2] = 10)
aPos := Vector_Make3f(0, 0, 12);
// Die Rotation des Quads (um den Mittelpunkt des Kreises, der durch die Quads gebildet wird)
// + ListAnge, also die Rotation, die mit der Maus gemacht wird
QuadAngle := DegToRad(360 / (QuadCount) * I) + ListAngle;
// Den Positionvektor um den Mittelpunkt des Kreises um die Y-Achse rotieren
aPos := Vector_Rotatef3(aPos, Vector_Make3f(0, 0, 0), QuadAngle, False, True, False);
if not(LastAddCover = Round(NoCoverTexture)) then
if LastAddCover = Trunc(quadTexture[I]) then
begin
glTranslatef(0, -6, -30);
if rDisk < 10 then
begin
// CD ist im Cover
glTranslatef((aPos[0] + QuadSizeS) - 2, aPos[1] + QuadSizeS - 1, aPos[2] - 0.12)
end
else if (rDisk > 10) and (rDisk < 140) then
begin
// Bewege die CD in Y Richtung nach oben. (Ist OK)
AnimLblY := AnimLblY + 0.05;
glTranslatef((aPos[0] + QuadSizeS) - 2, aPos[1] + QuadSizeS + AnimLblY, aPos[2] - 0.12);
end
// Diese Abfragen resultieren daraus das ich nicht von X-Beliebiger Stelle im Karrussell die CD zum Mittelpunkt rotiere.
else if (rDisk > 140) and (rDisk < 360) then
begin
AnimLblX := AnimLblX + 0.05;
// Zuviele IF Abfragen und das ergebniss ist bescheiden..
// Cover befindet sich links im Karussell wird aber nur in X Position verschoben bei gleichzeitiger Rotation um die eigene Y Achse.
// soll aber immer zum Mittelpunkt rotieren..
if (aPos[0] + QuadSizeS) < 0 then
begin
glTranslatef((aPos[0] + QuadSizeS) + AnimLblX, aPos[1] + QuadSizeS + AnimLblY,
aPos[2] - 0.12);
glRotatef((rDisk - 180 + Y) * 2.5, (aPos[0] + QuadSizeS) + AnimLblX, 0, 0);
end
else
begin
// Cover ist auf der rechten Seite des Karussells
glTranslatef((aPos[0] + QuadSizeS) - AnimLblX, aPos[1] + QuadSizeS + AnimLblY,
aPos[2] - 0.12);
glRotatef((rDisk - 180 + Y) * 2.5, (aPos[0] + QuadSizeS) + AnimLblX, 0, 0);
end;
end
else if rDisk > 360 then // Mehr wie zwei Sekunden
begin
// CD ein wenig um die Achse drehen..
glRotatef((rDisk - 180 + Y) * 0.8, 1, 0, 0);
glRotatef((rDisk - 180 + Y) * 1, 0, 1, 0);
glRotatef((rDisk - 180 + Y) * 0.1, 0, 0, 1);
end;
end;
end;
end;