LIExtModule* liext_render_new ( LIMaiProgram* program) { LIExtModule* self; /* Allocate self. */ self = lisys_calloc (1, sizeof (LIExtModule)); if (self == NULL) return NULL; self->program = program; self->render = limai_program_find_component (program, "render"); if (self->render == NULL) { lisys_error_set (EINVAL, "extension `render' can only be used by the client"); liext_render_free (self); return NULL; } /* Register classes. */ liscr_script_set_userdata (program->script, LIEXT_SCRIPT_LIGHT, self); liscr_script_set_userdata (program->script, LIEXT_SCRIPT_RENDER, self); liext_script_light (program->script); liext_script_render (program->script); return self; }
LIExtModule* liext_heightmap_new ( LIMaiProgram* program) { LIExtModule* self; int i; /* Allocate self. */ self = lisys_calloc (1, sizeof (LIExtModule)); if (self == NULL) return NULL; self->program = program; for (i=0; i<HEIGHTMAP_MAX_TEXTURES; i++) self->materials[i] = 0; /* Prepare images */ self->file1[0] = 0; self->file2[0] = 0; self->data1 = NULL; self->data2 = NULL; /* Register classes. */ liscr_script_set_userdata (program->script, LIEXT_SCRIPT_HEIGHTMAP, self); liext_script_heightmap (program->script); printf("heightmap initialized"); return self; }
static int private_init ( LIMaiProgram* self, const char* path, const char* name, const char* args) { /* Initialize paths. */ self->paths = lipth_paths_new (path, name); if (self->paths == NULL) return 0; /* Initialize dictionaries. */ self->components = lialg_strdic_new (); if (self->components == NULL) return 0; /* Initialize callbacks. */ self->callbacks = lical_callbacks_new (); if (self->callbacks == NULL) return 0; /* Allocate the model manager. */ self->models = limdl_manager_new (); if (self->models == NULL) return 0; self->models->model_added_callback.callback = private_model_added; self->models->model_added_callback.userdata = self; self->models->model_removed_callback.callback = private_model_removed; self->models->model_removed_callback.userdata = self; /* Allocate the script. */ self->script = liscr_script_new (); if (self->script == NULL) return 0; /* Initialize timer. */ self->start = lisys_timeval_init (); self->prev_tick = self->start; self->curr_tick = self->start; /* Initialize messaging. */ self->message_mutex = lisys_mutex_new (); if (self->message_mutex == NULL) return 0; /* Register classes. */ liscr_script_set_userdata (self->script, LISCR_SCRIPT_PROGRAM, self); liscr_script_packet (self->script); liscr_script_program (self->script); /* Register callbacks. */ if (!lical_callbacks_insert (self->callbacks, "tick", 2, private_tick, self, self->calls)) return 0; lialg_random_init (&self->random, lisys_time (NULL)); return 1; }
LIExtTerrainModule* liext_terrain_module_new ( LIMaiProgram* program) { LIExtTerrainModule* self; /* Allocate self. */ self = lisys_calloc (1, sizeof (LIExtTerrainModule)); if (self == NULL) return NULL; self->program = program; /* Register classes. */ liscr_script_set_userdata (program->script, LIEXT_SCRIPT_TERRAIN, self); liscr_script_set_userdata (program->script, LIEXT_SCRIPT_TERRAIN_CHUNK, self); liext_script_terrain (program->script); liext_script_terrain_chunk (program->script); return self; }
LIExtModule* liext_file_new ( LIMaiProgram* program) { LIExtModule* self; /* Allocate self. */ self = lisys_calloc (1, sizeof (LIExtModule)); if (self == NULL) return NULL; self->program = program; /* Register classes. */ liscr_script_set_userdata (program->script, LIEXT_SCRIPT_FILE, self); liext_script_file (program->script); return self; }
LIExtMathModule* liext_math_new ( LIMaiProgram* program) { LIExtMathModule* self; /* Allocate self. */ self = lisys_calloc (1, sizeof (LIExtMathModule)); if (self == NULL) return NULL; self->program = program; /* Register classes. */ liscr_script_set_userdata (program->script, LIEXT_SCRIPT_MATH, self); liext_script_quaternion (program->script); liext_script_vector (program->script); return self; }
LIExtModule* liext_heightmap_new ( LIMaiProgram* program) { LIExtModule* self; /* Allocate self. */ self = lisys_calloc (1, sizeof (LIExtModule)); if (self == NULL) return NULL; self->program = program; /* Allocate paths */ //self->paths = lipth_paths_new (NULL, LIEXT_SCRIPT_HEIGHTMAP); /* Register classes. */ liscr_script_set_userdata (program->script, LIEXT_SCRIPT_HEIGHTMAP, self); liext_script_heightmap (program->script); printf("heightmap initialized"); return self; }