Analogue Clock AIO v0.1
Categories
Scripts | Linden Script Language
Mode
Compat
Langage










Scripts permettant de faire tourner les différentes aiguilles d'une horloge analogique.
Créez 4 Prims Cylindres les uns au dessus des autres (3 pour les aiguilles et 1 pour la base) et liés les de haut en bas. Le bas sera donc le prim root servant de base à l'horloge. Placez le script ci-dessous dans le prim root.
Analogue Clock AIO v0.1 by djphil | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
// Analogue Clock AIO v0.1 by djphil default { state_entry() { llSetTimerEvent(1.0); } timer() { float now = llGetWallclock(); integer tmp = (integer)now / 60; // Heures float hour = (now / 60) / 60; integer minute = tmp - ((integer)hour * 60); rotation hand_rot = llEuler2Rot(<0, 0, -30 * (hour * DEG_TO_RAD)>); llSetLinkPrimitiveParamsFast(2, [PRIM_ROT_LOCAL, hand_rot]); // Minutes hour = tmp / 60; minute = tmp - ((integer)hour * 60); hand_rot = llEuler2Rot(<0, 0, -6 * minute * DEG_TO_RAD>); llSetLinkPrimitiveParamsFast(3, [PRIM_ROT_LOCAL, hand_rot]); // Secondes integer second = (integer)now - ((integer)hour*60)-(minute * 60); hand_rot = llEuler2Rot(<0, 0, -6 * second * DEG_TO_RAD>); llSetLinkPrimitiveParamsFast(4, [PRIM_ROT_LOCAL, hand_rot]); } } |
Voici la même chose mais avec 3 scripts séparés (plus gourmand).
Aiguille des secondes:
Aiguille des secondes | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
default { state_entry() { llSetTimerEvent(1); } timer() { float now = llGetWallclock(); integer tmp = (integer)now / 60; integer hour = tmp / 60; integer minute = tmp - (hour * 60); integer second = (integer)now - (hour*60)-(minute * 60); rotation hand_rot = llEuler2Rot(<-6 * second * DEG_TO_RAD, 0, 0>); llSetLocalRot(hand_rot); } } |
Aiguille des minutes:
Aiguille des minutes | |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
default { state_entry() { llSetTimerEvent(1); } timer() { float now = llGetWallclock(); integer tmp = (integer)now / 60; integer hour = tmp / 60; integer minute = tmp - (hour * 60); rotation hand_rot = llEuler2Rot(<-6 * minute * DEG_TO_RAD, 0, 0>); llSetLocalRot(hand_rot); } } |
Aiguille des heures:
Aiguille des heures: | |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
default { state_entry() { llSetTimerEvent(1); } timer() { float now = llGetWallclock(); integer tmp = (integer)now / 60; float hour = (now / 60) / 60; integer minute = tmp - ((integer)hour * 60); rotation hand_rot = llEuler2Rot(<-30 * (hour * DEG_TO_RAD), 0, 0>); llSetLocalRot(hand_rot); } } |