[dll]ds_cube
Inviato: 16/01/2012, 17:11
In alcuni rari casi(in genere nel 3d) potreste aver bisogno di usare array tridimensionali per immagazzinare dati. Un'esempio può essere fare un mondo cuboso in stile minecraft o semplicemente immagazzinare altri dati importanti ad una griglia per un particolare sistema di IA basato sulla diffusione o gestione dei gas.
Potreste ovviamente usare ds_list dentro una griglia o viceversa ma il risultato risulterebbe piuttosto lento e non vi permetterà veloci calcoli sulle aree come avviene per le ds_grid.
Ho così pensato di fare una semplice e veloce dll per gestire quelle che io chiamo "ds_cube" che non è altro che un'array tridimensionale e vi permetterà di gestire grosse quantità di dati in maniera molto veloce.
Per il momento ha solo le funzioni indispensabili:
Tutte queste funzioni hanno dei controlli appositi per evitare che commettiate errori "gravi" quindi elimina memoria solo se esiste, non scrive/legge valori fuori dall'array ecc.
Ho testato tutto a dovere ma potrebbero esserci comunque dei problemi quindi se notate qualcosa di strano avvisatemi.
In caso di errori da parte vostra(leggere valori su un'indice che non esiste) semplicemente restituisce false, non ho ancora messo message box vari per debuggare facilmente ma ho intenzione di metterli(assieme ai commenti nelle varie funzioni).
Il mio obiettivo è quello di aggiungere funzionalità per i calcolo sulle aree anche se non ho ancora deciso se mettere o no un controllo sulle stringhe. Penso di no visto che avrei difficoltà con il tipo di dato restituito(forse è addirittura impossibile) quindi per ora mi accontento dei valori(che sono double)
Sono sicuro che interesserà a ben pochi e che finirà nel dimenticatoio ma intanto ho fatto qualcosa.
Link download: http://www.megaupload.com/?d=8AT4310J
Source: http://pastebin.com/pkArSPNG
Potreste ovviamente usare ds_list dentro una griglia o viceversa ma il risultato risulterebbe piuttosto lento e non vi permetterà veloci calcoli sulle aree come avviene per le ds_grid.
Ho così pensato di fare una semplice e veloce dll per gestire quelle che io chiamo "ds_cube" che non è altro che un'array tridimensionale e vi permetterà di gestire grosse quantità di dati in maniera molto veloce.
Per il momento ha solo le funzioni indispensabili:
Codice: Seleziona tutto
ds_cube_create(w,h,d) crea una nuova ds_cube vuota(tutti i valori a 0) e restituisce l'indice
ds_cube_destroy(id) distrugge la ds_cube indicata
ds_cube_exist(id) restituisce se la ds_cube esiste.
ds_cube_set(id,x,y,z,value) imposta un valore alla determinata cella
ds_cube_get(id,x,y,z) restituisce il valore della cella determinata.
Ho testato tutto a dovere ma potrebbero esserci comunque dei problemi quindi se notate qualcosa di strano avvisatemi.
In caso di errori da parte vostra(leggere valori su un'indice che non esiste) semplicemente restituisce false, non ho ancora messo message box vari per debuggare facilmente ma ho intenzione di metterli(assieme ai commenti nelle varie funzioni).
Il mio obiettivo è quello di aggiungere funzionalità per i calcolo sulle aree anche se non ho ancora deciso se mettere o no un controllo sulle stringhe. Penso di no visto che avrei difficoltà con il tipo di dato restituito(forse è addirittura impossibile) quindi per ora mi accontento dei valori(che sono double)
Sono sicuro che interesserà a ben pochi e che finirà nel dimenticatoio ma intanto ho fatto qualcosa.
Link download: http://www.megaupload.com/?d=8AT4310J
Source: http://pastebin.com/pkArSPNG