Gebruiker:Elwin
Uit 3Dwiki
Deze pagina gebruik ik om wat te testen, verder weinig interessants te vinden hier vooralsnog. :)
Inhoud |
[bewerken] Syntax highlighting
[bewerken] Ideeën
- Is er een syntax highlighter voor de AW acties mogelijk denk je? --Lode 5 jun 2008 10:44 (CEST)
- Sure, ik zal er eens naar kijken. Tenzij jij me voor bent, vind ik ook goed. :) Elwin
[bewerken] C (3Dwiki)
Ik heb een nieuwe language file gemaakt voor de Geshi syntax highlighter: C (3Dwiki). Deze kan gebruikt worden door <source lang="c"> te gebruiken (zie hieronder voor een voorbeeld). De standaard C highlighting kan gebruikt worden met <source lang="c_old">.
De gebruikte kleuren zijn gebaseerd op wat de Microsoft Visual Studios gebruiken. Alle AW functies en attributes krijgen een link naar de pagina erover op de AW SDK. Ideeën voor verbeteringen zijn welkom.
[bewerken] Ideeën
- Commentaar zou italic kunnen. -- Dat is mogelijk, maar helpt waarschijnlijk weinig. Het commentaar valt al genoeg op met de afwijkende kleur. Elwin
- Escape character met een afwijkende opmaak aangeven in strings. -- Ik vind dit niet zo nodig, misschien vinden sommigen dit wel fijn? Elwin
- Keywords bold maken? -- Zo is het ook wel duidelijk genoeg. Elwin
- Nummers en haakjes speciale opmaak geven. -- Nummerieke constantes apart aangeven zou kunnen, haakjes lijkt me niet fijn. Elwin
- Operatoren speciaal aangeven. -- Lijkt niet te werken met deze versie van Geshi. Elwin
- Inmiddels is dit wel mogelijk, maar nog steeds niet gewenst, naar mijn mening althans. Elwin
- De standaard C functies ook links geven naar een website met extra informatie (voorbeeld). -- Mogelijk; het is wel wat werk om alle functies te zoeken (overzicht). Elwin
- De functie pagina's die al bestaan in de 3Dwiki wel hier "houden"? - Kvdk
- Dat zou op zich kunnen, welke pagina's zijn er al? Elwin
- Zie Categorie:SDK voor alle die al toegevoegt zijn, en wanneer ik tijd heb vertaal ik er steeds meer - Kvdk
- Alle links verwijzen nu naar binnen de 3Dwiki. Elwin
- Zie Categorie:SDK voor alle die al toegevoegt zijn, en wanneer ik tijd heb vertaal ik er steeds meer - Kvdk
[bewerken] Voorbeeldcode
C (3Dwiki) stijl
/* greeter.c : Een simpele Active Worlds greeterbot in C. */ #include "aw.h" #include <stdio.h> #include <stdlib.h> #define HOST "auth.activeworlds.com" /* Het adres waar je bot moet inloggen. */ #define POORT 6702 /* De poort waar je bot moet inloggen. */ #define WERELD "Beta" /* De wereld die je bot moet binnen gaan. */ #define BEWONERSNUMMER 1024 /* Je bewonersnummer. */ #define WACHTWOORD "helloworld" /* Je privilege-wachtwoord. */ #define BOTNAAM "GreeterBot" /* De naam van de bot. */ void handle_avatar_add(void); int main() { // single line comment. // continued single line comment \ #define int 5; 0x55 13246f .3 12987L 09823 (a + b) / 4; array[4] = 2; ptr->age = 34; obj.age = 34; for( i = 0; i < 10; i++ ) for( i = 10; i > 0; i-- ) if( !done ) ... flags = ~flags; for( i = 0; i < 10; ++i ) for( i = 10; i > 0; --i ) int i = -1; int i = +1; data = *ptr; address = &obj; int i = (int) floatNum; int size = sizeof(floatNum); int i = 2 * 4; float f = 10 / 3; int rem = 4 % 3; int i = 2 + 3; int i = 5 - 1; int flags = 33 << 1; int flags = 33 >> 1; if( i < 42 ) if( i <= 42 ) if( i > 42 ) if( i >= 42 ) if( i == 42 ) if( i != 42 ) flags = flags & 42; flags = flags ^ 42; flags = flags | 42; if( conditionA && conditionB ) if( conditionA || conditionB ) int i = (a > b) ? a : b; int a = b; a += 3; b -= 4; a *= 5; a /= 2; a %= 3; flags &= new_flags; flags ^= new_flags; flags |= new_flags; flags <<= 2; flags >>= 2; for( i = 0, j = 0; i < 10; i++, j++ ) int rc; /* Initialiseer de Active Worlds API. */ if (rc = aw_init(AW_BUILD)) { printf("Kan AW API niet initialiseren (reden: %d).\n", rc); exit(1); } /* Als een avatar de wereld binnenkomt: een functie aanroepen. */ aw_event_set(AW_EVENT_AVATAR_ADD, handle_avatar_add); /* Een nieuwe bot aanmaken. */ if (rc = aw_create(HOST, POORT, 0)) { printf("Kan geen bot aanmaken (reden: %d).\n", rc); exit(1); } /* De bot inloggen in het universum. */ aw_int_set(AW_LOGIN_OWNER, BEWONERSNUMMER); aw_string_set(AW_LOGIN_PRIVILEGE_PASSWORD, WACHTWOORD); aw_string_set(AW_LOGIN_APPLICATION, "SDK voorbeeld"); aw_string_set(AW_LOGIN_NAME, BOTNAAM); if (rc = aw_login()) { printf("Kan niet inloggen (reden: %d).\n", rc); exit(1); } /* Laat de bot de wereld binnengaan. */ if (rc = aw_enter(WERELD)) { printf("Kan wereld niet binnengaan (reden: %d).\n", rc); exit(1); } /* De positie van de bot bekend maken in de wereld. */ aw_int_set(AW_MY_X, 1000); /* 1W */ aw_int_set(AW_MY_Z, 1000); /* 1N */ aw_int_set(AW_MY_YAW, 2250); /* Kijkend naar GZ */ if (rc = aw_state_change()) { printf("Kan status niet veranderen (reden: %d).\n", rc); exit(1); } /* Event loop. */ while (!aw_wait(-1)) ; /* Afsluiten. */ aw_destroy(); aw_term(); return 0; } /* handle_avatar_add() : Deze functie wordt aangeroepen als een avatar de wereld binnenkomt. */ void handle_avatar_add(void) { char message[64]; /* Groet de nieuwe avatar en schrijf ook een berichtje naar de console. */ sprintf(message, "Hoi, %s!", aw_string(AW_AVATAR_NAME)); aw_say(message); printf("avatar_add: %s\n", aw_string(AW_AVATAR_NAME)); }
Standaard C stijl
/* greeter.c : Een simpele Active Worlds greeterbot in C. */ #include "aw.h" #include <stdio.h> #include <stdlib.h> #define HOST "auth.activeworlds.com" /* Het adres waar je bot moet inloggen. */ #define POORT 6702 /* De poort waar je bot moet inloggen. */ #define WERELD "Beta" /* De wereld die je bot moet binnen gaan. */ #define BEWONERSNUMMER 1024 /* Je bewonersnummer. */ #define WACHTWOORD "helloworld" /* Je privilege-wachtwoord. */ #define BOTNAAM "GreeterBot" /* De naam van de bot. */ void handle_avatar_add(void); int main() { int rc; /* Initialiseer de Active Worlds API. */ if (rc = aw_init(AW_BUILD)) { printf("Kan AW API niet initialiseren (reden: %d).\n", rc); exit(1); } /* Als een avatar de wereld binnenkomt: een functie aanroepen. */ aw_event_set(AW_EVENT_AVATAR_ADD, handle_avatar_add); /* Een nieuwe bot aanmaken. */ if (rc = aw_create(HOST, POORT, 0)) { printf("Kan geen bot aanmaken (reden: %d).\n", rc); exit(1); } /* De bot inloggen in het universum. */ aw_int_set(AW_LOGIN_OWNER, BEWONERSNUMMER); aw_string_set(AW_LOGIN_PRIVILEGE_PASSWORD, WACHTWOORD); aw_string_set(AW_LOGIN_APPLICATION, "SDK voorbeeld"); aw_string_set(AW_LOGIN_NAME, BOTNAAM); if (rc = aw_login()) { printf("Kan niet inloggen (reden: %d).\n", rc); exit(1); } /* Laat de bot de wereld binnengaan. */ if (rc = aw_enter(WERELD)) { printf("Kan wereld niet binnengaan (reden: %d).\n", rc); exit(1); } /* De positie van de bot bekend maken in de wereld. */ aw_int_set(AW_MY_X, 1000); /* 1W */ aw_int_set(AW_MY_Z, 1000); /* 1N */ aw_int_set(AW_MY_YAW, 2250); /* Kijkend naar GZ */ if (rc = aw_state_change()) { printf("Kan status niet veranderen (reden: %d).\n", rc); exit(1); } /* Event loop. */ while (!aw_wait(-1)) ; /* Afsluiten. */ aw_destroy(); aw_term(); return 0; } /* handle_avatar_add() : Deze functie wordt aangeroepen als een avatar de wereld binnenkomt. */ void handle_avatar_add(void) { char message[64]; /* Groet de nieuwe avatar en schrijf ook een berichtje naar de console. */ sprintf(message, "Hoi, %s!", aw_string(AW_AVATAR_NAME)); aw_say(message); printf("avatar_add: %s\n", aw_string(AW_AVATAR_NAME)); }
[bewerken] C++ (3Dwiki)
Ik heb ook een nieuwe language file gemaakt voor C++. Deze kan gebruikt worden door <source lang="cpp"> te gebruiken. De standaard C++ highlighting kan gebruikt worden met <source lang="cpp_old">.
Deze is behalve het toevoegen van de extra keywords van C++ verder identiek aan de bovenstaande stijl voor C.
[bewerken] RWX (3Dwiki)
Ik heb een syntax highlighting file gemaakt voor RWX code. De kleuren zijn min of meer hetzelfde als bij C en C++. Deze RWX stijl kan gebruikt worden door <source lang="rwx"> te gebruiken.
[bewerken] Ideeën
- Tof dat je dit hebt gemaakt! Er zijn wat problemen met keywords in variabelen en comments, is zoiets op te lossen? --Lode 4 jun 2008 00:37 (CEST)
Texture vierkant-uv.jpg
Quad 12 11 10 9 #linker zijkant (rechter texture)
- Ik had het inderdaad al opgemerkt en wat zitten testen. Het lijkt dat Geshi het standaard zo doet (en niet instelbaar). Een keyword wordt altijd als zodanig ge-highlight als er spaties of leestekens omheen staan, maar niet als het onderdeel is van een langer woord. In die namen die je gekozen had voor dat voorbeeld gaat dat dus net verkeerd.
- Daarbij komt nog dat het commentaar van RWX eigenlijk niet op de normale geshi manier kan volgens mij, om de uitzondering van '#!' mee te nemen. Anders zou het keywords-in-commentaar-probleem er niet zijn.
- In dit geval is dat dus niet zo handig. Een oplossing zou het maken van wat uitzonderingen in de language file zijn voor woorden die misschien vaak in commentaar gaan voorkomen, maar heel elegant is dat niet. Een andere oplossing is het kiezen van iets andere namen, zodat de highlighting niet faalt ('vierkant-uvs.jpg', misschien 'rechter textuur' ofzo); en een nieuwere versie van Geshi zou misschien ook werken. Elwin
- Is er een nieuwe versie van Geshi dat jij weet? Ik ga anders later vandaag wel even kijken. --Lode 5 jun 2008 10:43 (CEST)
- Mogelijk geen stabiele versie. Elwin
- Ik heb net in ieder geval GeSHi geüpdatet, de vorige versie was mogelijk zo'n 1,5 jaar oud. Ook heb ik een andere (meer officiële) extensie gebruikt als syntax highlighter. De code is wel veranderd van <code .. in <source ... Met extra mogelijkheden voor linenumbers (line= & start=). --Lode 5 jun 2008 16:58 (CEST)
- Prima. :) Elwin
- Ik heb net in ieder geval GeSHi geüpdatet, de vorige versie was mogelijk zo'n 1,5 jaar oud. Ook heb ik een andere (meer officiële) extensie gebruikt als syntax highlighter. De code is wel veranderd van <code .. in <source ... Met extra mogelijkheden voor linenumbers (line= & start=). --Lode 5 jun 2008 16:58 (CEST)
- Mogelijk geen stabiele versie. Elwin
- Is er een nieuwe versie van Geshi dat jij weet? Ik ga anders later vandaag wel even kijken. --Lode 5 jun 2008 10:43 (CEST)
- Het lijkt me prima om de code taal gewoon rwx te noemen, ipv rwx3dwiki, typt sneller, en er komt voorlopig toch geen RWX versie van Geshi zelf gok ik :) --Lode 5 jun 2008 10:43 (CEST)
- Jah, zou kunnen. Het leek mij op zich fijn om het onderscheid te bewaren tussen language files die standaard bij Geshi zitten en degene die we zelf maken, maar dat valt uit de headers verder ook wel op te maken. Ik zal het wel hernoemen naar 'rwx' inderdaad. Elwin
- Misschien ook de andere (C/C++)? De oude versies kunnen dan cold/coriginal/cdefault genoemd worden? Heb ik met de php code ook gedaan. Dat maakt het wel makkelijker om gewoon als standaard de verbeterde versie te gebruiken. --Lode 5 jun 2008 17:05 (CEST)
- Hernamen gedaan; de oude versies heb ik c_old genoemd (anders is het zo koud). Elwin
- Ja, dat is waar :) --Lode 5 jun 2008 19:37 (CEST)
- Hernamen gedaan; de oude versies heb ik c_old genoemd (anders is het zo koud). Elwin
- Misschien ook de andere (C/C++)? De oude versies kunnen dan cold/coriginal/cdefault genoemd worden? Heb ik met de php code ook gedaan. Dat maakt het wel makkelijker om gewoon als standaard de verbeterde versie te gebruiken. --Lode 5 jun 2008 17:05 (CEST)
[bewerken] Voorbeeldcode
##### COBDump3: V3.00.346 by HamFon@ActiveWorlds.com ##### Source File: C:\3D\3DWEBP~1\SCIFI1\NEWFOL~1\AD1.COB ##### VRT Timestamp: Mon Aug 27 00:59:15 2001 ModelBegin ProtoBegin cube_0_0 Surface 1 1 0 TextureModes Lit Foreshorten Transform 0.021631 0. 0. 0. 0. 0.021631 0. 0. 0. 0. 0.897437 0. 0. 0. 1.0243 1. Vertex 4.376825 4.376825 -1.138733 #! prelight 1 1 1 UV 0. 0. # 1 Vertex -4.376825 4.376825 -1.138733 #! prelight 1 1 1 UV 1. 0. # 2 Vertex -4.376825 -4.376825 -1.138733 #! prelight 1 1 1 UV 1. 1. # 3 Vertex 4.376825 -4.376825 -1.138733 #! prelight 1 1 1 UV 0. 1. # 4 Vertex -1. 1. 1. #! prelight 1 1 1 UV 0.25 1. # 5 Vertex 1. 1. 1. #! prelight 1 1 1 UV 0. 1. # 6 Vertex 1. -1. 1. #! prelight 1 1 1 UV 0.75 1. # 7 Vertex -1. -1. 1. #! prelight 1 1 1 UV 0.5 1. # 8 Vertex -4.376825 4.376825 -1.138733 #! prelight 1 1 1 UV 0.25 0. # 9 Vertex 4.376825 4.376825 -1.138733 #! prelight 1 1 1 UV 0.5 0. # 10 Vertex 1. 1. -1. #! prelight 1 1 1 UV 0.5 1. # 11 Vertex -1. 1. -1. #! prelight 1 1 1 UV 0.25 1. # 12 Vertex -4.376825 -4.376825 -1.138733 #! prelight 1 1 1 UV 0. 0. # 13 Vertex -1. -1. -1. #! prelight 1 1 1 UV 0. 1. # 14 Vertex 4.376825 -4.376825 -1.138733 #! prelight 1 1 1 UV 0.75 0. # 15 Vertex -4.376825 -4.376825 -1.138733 #! prelight 1 1 1 UV 1. 0. # 16 Vertex -1. -1. -1. #! prelight 1 1 1 UV 1. 1. # 17 Vertex 1. -1. -1. #! prelight 1 1 1 UV 0.75 1. # 18 Vertex -1. 1. 1. #! prelight 1 1 1 UV 0. 0. # 19 Vertex -1. -1. 1. #! prelight 1 1 1 UV 1. 0. # 20 Vertex -1. 1. -1. #! prelight 1 1 1 UV 0. 1. # 21 Vertex 1. 1. 1. #! prelight 1 1 1 UV 0. 0. # 22 Vertex -1. 1. 1. #! prelight 1 1 1 UV 1. 0. # 23 Vertex -1. 1. -1. #! prelight 1 1 1 UV 1. 1. # 24 Vertex 1. 1. -1. #! prelight 1 1 1 UV 0. 1. # 25 Vertex 1. -1. 1. #! prelight 1 1 1 UV 0. 0. # 26 Vertex 1. 1. 1. #! prelight 1 1 1 UV 1. 0. # 27 Vertex 1. 1. -1. #! prelight 1 1 1 UV 1. 1. # 28 Vertex 1. -1. -1. #! prelight 1 1 1 UV 0. 1. # 29 Vertex -1. -1. 1. #! prelight 1 1 1 UV 0. 0. # 30 Vertex 1. -1. 1. #! prelight 1 1 1 UV 1. 0. # 31 Vertex 1. -1. -1. #! prelight 1 1 1 UV 1. 1. # 32 Vertex -1. -1. -1. #! prelight 1 1 1 UV 0. 1. # 33 Color 1. 1. 1. Opacity 1. Texture mon3 LightSampling Facet Quad 33 32 31 30 Quad 29 28 27 26 Quad 25 24 23 22 Quad 21 17 20 19 Texture mon2 Quad 11 18 15 10 Quad 18 17 16 15 Quad 14 12 9 13 Quad 12 11 10 9 Quad 8 7 6 5 Quad 4 3 2 1 ProtoEnd # cube_0_0 ClumpBegin Rotate 0 1 0 180 Rotate 1 0 0 -90 Scale .1 .1 .1 ProtoInstance cube_0_0 ClumpEnd ModelEnd

