2011-07-31 deraj@users.sourceforge.net * r_file_system.c (r_file_system_start): Log paths on error * radius.h: Fixed version number * radius.h: Removed unused raw execution * radius.c: Only support application-based execution for now * r_file_system.h: Support multiple platform-specific data dirs * r_file_system.c: Get platform-specific data dirs * radius.c: Propagate data dir override to file system path allocation * r_platform.h: Allow platforms to specify several data dirs * r_platform_unix.h: Use hard-coded, default, and base dirs * r_platform_windows.h: Only use the base dir on Windows * r_file_system.h: Propagate main script to r_file_system_start * r_file_system.c: Add all default dirs, more logging for file not found errors * radius.c: Propagate main script to r_file_system_start * r_event.c: Drop pending events after layer change to avoid double-submission 2011-07-26 deraj@users.sourceforge.net * r_transform2d.c: Removed duplicate definition * r_zlist.c: Fixed prototype for r_zlist_unlock implementation * r_collision_detector.c (l_CollisionDetector_checkCollision): Unused param * r_collision_detector.c: Removed erroneous consts * r_collision_tree.c: Removed erroneous consts * r_entity.c: Removed erroneous consts * r_entity.h: Removed erroneous consts * r_transform2d.c: Removed erroneous consts * r_transform2d.h: Removed erroneous consts * r_vector.c: Removed erroneous consts * r_vector.h: Removed erroneous consts * r_event.c: Removed erroneous consts * r_mesh.c: Removed erroneous consts * r_video.c: Removed erroneous consts * r_entity.c (r_entity_update): Handle invalid values * r_entity.c: Enable entity cleanup * r_mesh.c (l_Mesh_addTriangle): Fix braces in triangle assignment 2011-05-14 deraj@users.sourceforge.net * r_script_lib.c: Added shiftLeft and shiftRight 2011-04-09 deraj@users.sourceforge.net * r_entity.c (r_entity_update): Update children when no update function exists 2011-04-05 deraj@users.sourceforge.net * r_entity.c (r_entity_update): Don't update empty animations * r_video.c (r_video_draw_element): Skip elements without images/animations 2011-04-01 deraj@users.sourceforge.net * r_element.c: Add animation.addFrame for building animations programmatically * r_entity.c (r_entity_update): Prevent underflow for zero-frame animation 2011-03-31 deraj@users.sourceforge.net * r_entity.c (r_entity_update): Elements are now updated if necessary * r_object_list.h: Expose r_object_list_remove_index * r_object_list.c: Group r_object_list_remove_index with public functions * r_zlist.h: Add r_zlist_remove_index * r_zlist.c: Wrap r_object_list_remove_index * r_element_list.h: Add r_element_list_remove_index * r_element_list.c: Wrap r_zlist_remove_index * r_element.h: Add transient flag to animations * r_element.c: Initialize transient flag * r_entity.c (r_entity_update): Transient animations are removed when done 2011-03-30 deraj@users.sourceforge.net * r_mesh.c: Clean up triangle list in destructor * r_video.c (r_video_draw_element): Separated image vs. image region drawing * r_object.h: Added "Animation" object type * r_script_lib.c: Added name for "Animation" type * r_element.h: Definitions for frames, animations, and animation elements * r_element.c: Animation/animation element initialization, registration * r_video.c (r_video_draw_element): Draw current animation frame 2011-03-29 deraj@users.sourceforge.net * r_entity.h: Split children list: ordering display (z), updates (order) * r_entity.c: Keep children lists in sync, use children_update for updates * r_entity_list.h: Constructors for display/update lists, new helpers * r_entity_list.c: Support for update vs. display lists * r_layer.h: Split entity lists: display (z), update (order) * r_layer.c: Keep entity lists in sync, use entities_update for updates * r_object_list.h: Expose object list direct manipulation functions * r_object_list.c: Split up and expose manipulation functions * r_zlist.h: Wrap direct manipulation functions * r_zlist.c: Wrap direct manipulation functions * r_video.c: Draw entities in display order (new decoupled from update order) 2011-03-28 deraj@users.sourceforge.net * r_entity.c (r_entity_update): Children are no longer updated automatically * r_entity.c (l_Entity_updateChildren): Added Entity.updateChildren 2011-03-27 deraj@users.sourceforge.net * r_script_lib.c: Added "adir": convert angle to direction (on [0, 360)) 2011-03-23 deraj@users.sourceforge.net * r_file_system.c: Added "load" for forcing a script to be (re)loaded 2011-03-10 deraj@users.sourceforge.net * r_script_lib.c: Added round, sign math functions 2011-02-20 deraj@users.sourceforge.net * r_script_lib.c (r_script_string_setup): Expose Lua's find/format in "String" * r_element_list.c (l_ElementList_forEach): Specify item type correctly * r_zlist.h: Propagate item type to for-each * r_zlist.c (l_ZList_forEach): Specify item type * r_object_list.h: Propagate item type to for-each * r_object_list.c (l_ObjectList_forEach): Specify item type * r_script_lib.c: Added String.substring/toUpper/toLower * r_event_keys.c: "kp-min" is now "kp-minus" 2011-02-06 deraj@users.sourceforge.net * r_layer.c (r_layer_init): Initialize collision debugging to false 2011-02-05 deraj@users.sourceforge.net * r_object_id_list.h: List of weak references to objects * r_object_id_list.c: Implementation of weak reference list * Makefile.am: Added r_object_id_list.c/h * r_collision_detector.h: Expose l_CollisionDetector_new * r_collision_detector.c: Remove CollisionDetector.new * r_object.h: Add R_OBJECT_ID_INVALID and push-by-ID * r_object.c: Push objects by ID only * r_layer.h: Layers keep track of their collision detectors * r_layer.c: Maintain list of collision detectors and add creation function * r_video.c: Draw all collision detectors on the layer * r_collision_tree.h: Tree entries no longer can be in limbo * r_collision_tree.c: All tree operations now take effect immediately * r_collision_detector.h: Add lock/unlock functions * r_collision_detector.c: Protect tree operations by locking/committing * r_layer.c: Lock/unlock collision detectors as well * r_video.c: Move weak reference clearing to layer unlock 2011-02-04 deraj@users.sourceforge.net * r_entity_list.h: Lock/unlock require parent argument * r_entity_list.c (r_entity_list_lock/unlock): Lock/unlock this list as well * r_layer.c (r_layer_update): Use r_layer_lock/unlock * r_entity.c: Entity lists now lock recursively 2011-02-01 deraj@users.sourceforge.net * r_entity.h: Added entity lock/unlock functions * r_entity.c: Lock children when iterating, implement children locking * r_entity_list.h: Add entity list lock/unlock * r_entity_list.c: Locking, only update valid (for this frame) children * r_layer.c: Lock entities when iterating, only update valid children * r_layer_stack.c: Use updated references to object list items * r_video.c: Assume entity lists aren't locked when rendering * r_zlist.h: ZList locking/unlocking * r_zlist.c: Simply "insert" function, add locking/unlocking * r_object_list.h: Define object list entry type, add list-locking * r_object_list.c: Use list item type, add locked manipulation/commit 2011-01-29 deraj@users.sourceforge.net * r_collision_detector.h: Removed unused header 2011-01-20 deraj@users.sourceforge.net * r_audio.h: Renamed r_audio_clip_instance_t positions to indicate units * r_audio_decoder.h: Use samples instead of bytes for clip size * r_audio_decoder.c: Use samples instead of bytes for clip size * r_audio_clip_manager.c: Use samples instead of bytes for clip size * r_audio.c (r_audio_callback): Rewrote mixing for better data locality 2011-01-18 deraj@users.sourceforge.net * r_audio.c: Clamp instead of overflow audio 2011-01-15 deraj@users.sourceforge.net * r_video.c: Improvements to collision debugging 2011-01-09 deraj@users.sourceforge.net * r_collision_detector.h: Removed unused type * r_collision_detector.c (l_CollisionDetector_forEachCollision): Use a different iteration mechanism when filtering based on groups * r_collision_tree.h: Nodes track their parent, filtered collision test * r_collision_tree.c: Added filtered test that can process fewer entries 2011-01-08 deraj@users.sourceforge.net * r_object.h: Export functions for reading/writing unsigned int fields * r_object.c: Implemented helpers for reading/writing unsigned int fields * r_entity.h: Added "group" field to r_entity_t * r_entity.c: Expose Entity.group * r_collision_detector.c (l_CollisionDetector_forEachCollision): Opt. filters 2011-01-06 deraj@users.sourceforge.net * r_collision_tree.h (r_collision_tree_entry_t): Added deleted flag * r_collision_tree.c: Skip "deleted" entry collisions (really delete on update) * r_hash_table.c (r_hash_table_clear): Implementation * r_collision_tree.h: Added r_collision_tree_clear * r_collision_tree.c (r_collision_tree_clear): Implementation * r_collision_detector.c: Added CollisionDetector.clearChildren * r_collision_tree.h: Added r_collision_tree_cleanup * r_collision_tree.c (r_collision_tree_cleanup): Implementation * r_collision_detector.c: Added cleanup for CollisionDetector * r_collision_detector.c: Added CollisionDetector.checkCollision * r_collision_tree.c (r_collision_tree_node_purge_invalid): Fixed update bug * r_entity.h: Added flag to indicate if an entity has children * r_entity.c: Initialize children entity list on demand * r_video.c: Check for child entities before rendering them 2011-01-05 deraj@users.sourceforge.net * Makefile.am: Added r_hash_table.c/h * r_collision_detector.c: Added CollisionDetector.removeChild * r_collision_tree.h: Added hash from entity to node, removal * r_collision_tree.c: Keep hash up-to-date, simple (but flawed) removal 2011-01-04 deraj@users.sourceforge.net * r_collision_tree.c: Added r_collision_tree_node_prune for pruning tree * r_collision_tree.c: Push modified entries down to children when possible * r_hash_table.h: Simple pointer to struct hash table * r_hash_table.c: Chained hash table implementation * r_collision_tree.h: Added entity-to-node hash table * r_collision_tree.c: Initialize/update entity-to-node hash table 2011-01-03 deraj@users.sourceforge.net * r_transform2d.h: Expose r_transform2d_invert * r_transform2d.c: Implementation of inverse and determinant * r_entity.c: Compute absolute transform by inverting local * r_collision_detector.c (r_collision_detection_intersect_entities): Use bounding rectangle to skip triangle intersection tests * r_entity.h: Added bounding rectangle to r_entity_t * r_entity.c: Compute bounding rectangle on demand * r_video.c: Debug collisions by drawing bounding rectangles as well * Makefile.am: Added r_collision_tree.c/h * r_collision_detector.c: Exposed r_collision_detector_intersect_entities * r_list.h: List should be const for r_list_get_index * r_list.c (r_list_get_index): List should be const * r_mesh.h: Expose r_triangle_list_get_index for iteration * r_mesh.c (r_triangle_list_get_index): Implementation * r_entity.c: Fix mesh triangle iteration * r_layer.h: Added member of graphically viewing collision detection * r_layer.c: Added (self-explanatory) debugCollisionDetector field to layer * r_video.c: Added facility for graphically viewing collision detection * r_collision_tree.h: Added space-divided collision detection tree * r_collision_tree.c: (Partial) Implementation of collision tree * r_collision_detector.h: Add collision tree * r_collision_detector.c: Use collision tree in for-each * r_collision_tree.c: Update collision tree before finding collisions * r_collision_detector.c: Use collision tree internally 2011-01-02 deraj@users.sourceforge.net * r_object.h: Field init/read/write now receive a pointer to the field * r_object.c: Update field functions to receive pointer to the field * r_element.c: Updates for field functions prototype changes * r_element_list.c: Updates for field functions prototype changes * r_element_list.h: Updates for field functions prototype changes * r_image_cache.c: Updates for field functions prototype changes * r_image_cache.h: Updates for field functions prototype changes * r_object_ref.c: Updates for field functions prototype changes * r_object_ref.h: Updates for field functions prototype changes * r_resource_cache.c: Updates for field functions prototype changes * r_resource_cache.h: Updates for field functions prototype changes * r_string_buffer.c: Updates for field functions prototype changes * r_object.h: Added r_object_field_write_default for default write * r_object.c (r_object_field_write_default): Implemented 2010-12-31 deraj@users.sourceforge.net * configure.in: Incremented version * r_defs.h: Incremented version * r_event.c: Fixed bad merge * r_mesh.c: Enforce CCW ordering on mesh triangles * r_collision_detector.h: Moved R_TRIANGLE_SIGNED_AREA to here * r_collision_detector.c: Mesh triangles are guaranteed to be CCW 2010-12-30 deraj@users.sourceforge.net * r_collision_detector.h: Initial collision detection interface * r_collision_detector.c: Working (though inefficient) collision detection * r_object.h: Added CollisionDetector type * r_script_lib.c: Register CollisionDetector type * Makefile.am: Added r_collision_detector.* * r_collision_detector.c: Code cleanup 2010-12-29 deraj@users.sourceforge.net * r_matrix.h: Rewrote transformations to not use a stack * r_matrix.c: Reimplemented transformations * r_state.h: Pixel-to-coordinate transformation is now a member * r_state.c: Initialize transformation * r_event.c: Pixel-to-coordinate transformation is now a member * r_video.c: Pixel-to-coordinate transformation is now a member * Makefile.am: Renamed r_matrix.* to r_transform2d.* * r_transform2d.h: Formerly r_matrix.h * r_transform2d.c: Formerly r_matrix.c * r_state.h: Include r_transform2d.h * r_vector.h (r_vector2d_from_homogeneous): Mark source vector const * r_vector.c (r_vector2d_from_homogeneous): Mark source vector const * r_entity.c: Added Entity.convertToLocal/Absolute for coordinate transforms * r_video.c: Fixed ordering of entity/element transformations * r_entity.c: Fixed ordering of transformations * r_transform2d.h: Expose normal vectors * r_transform2d.c: Use homogeneous vectors internally only * r_event.c: Don't need to use homogeneous vectors anymore * r_entity.h: Expose transformation matrices * r_entity.c: Expose transformation matrices, add Entity.mesh * r_object.h: Add mesh type identifier * r_script_lib.c: Export Mesh functions * r_mesh.h: Added new mesh type * r_mesh.c: New mesh type 2010-12-28 deraj@users.sourceforge.net * r_entity.h: Added parent reference to r_entity_t * r_entity.c: Keep track of parent when being added/removed * r_layer.c (l_Layer_addChild): Top-level entities must not have a parent 2010-12-27 deraj@users.sourceforge.net * r_entity_list.h: Export r_entity_list_init * r_entity_list.c: Export r_entity_list_init * r_entity.h: Don't directly expose internal entity list to scripts * r_entity.c: Added r_entity_cleanup for clearing children * r_layer.h: Don't directly expose internal entity list to scripts * r_layer.c (r_layer_cleanup): Clear entity list * r_video.c (r_video_draw): Layer entitiy list is now a member, not reference * r_layer.c (r_layer_update): Entity list is now a member, not a reference * r_video.c (r_video_draw_entity): Entity.children is a member, not reference * r_object_list.h: Added manipulation functions for internal/hidden lists * r_object_list.c: Implemented manipulation functions for internal/hidden lists * r_zlist.h: Added manipulation functions for internal/hidden lists * r_zlist.c: Implemented manipulation functions for internal/hidden lists * r_entity.c: Added add/remove/forEach/clearChild/Children to Entity * r_layer.c: Added add/remove/forEach/clearChild/Children to Layer * r_object_list.c (r_object_list_add): Optional owner override (for parent) * r_object_list.c (r_object_list_remove): Optional owner override (for parent) * r_object_list.c: ObjectList internal functions use parent as owner of refs * r_object_list.c (r_object_list_cleanup): Don't explicitly check object type 2010-12-12 deraj@users.sourceforge.net * r_image_cache.c (r_image_free_texture): Do nothing when no storage type set * r_image_cache.c: Fix initialization of default image/font * r_defs.h: Added R_MIN and R_MAX macros * r_video.c: Use R_MIN/R_MAX 2010-12-09 deraj@users.sourceforge.net * r_file_system.c: Added "include" for optionally loading a file 2010-12-08 deraj@users.sourceforge.net * r_video.c: Assume minimum texture size is 8 * r_image_cache.c: Fix composite buffer size * r_element.c: Added "imageRegion" type name 2010-12-07 deraj@users.sourceforge.net * r_video.c: Added Video.setTitle for setting window title 2010-12-03 deraj@users.sourceforge.net * r_video.c: Fixed font rending (position was off) * r_script_lib.c: Added "pow" math function 2010-12-03 deraj@users.sourceforge.net * r_video.c: Fixed last composite element texture calculations * r_state.h: Added "full featured" (OpenGL 1.2) flag to r_state_t * r_state.c: Initialize "full featured" video to false * r_video.c (r_video_set_mode): Check for OpenGL 1.2 and set flag * r_image_cache.c: Use GL_CLAMP_TO_EDGE if available * r_video.c: Moved core image rendering to r_video_draw_image_internal * r_video.c: Fonts can now be rendered from composite storage 2010-12-02 deraj@users.sourceforge.net * r_image_cache.c: Enforce minimum texture size on last composite element * r_state.h: Texture sizes use "unsigned int" 2010-12-01 deraj@users.sourceforge.net * r_video.c: Bug fixes to composite region calculations 2010-11-30 deraj@users.sourceforge.net * r_element.h: r_element_image_region_t * r_element.c: Added image region element * r_video.c: Rendering for single-texture component storage * r_defs.h: Added R_F_BAD_COORDINATES 2010-11-29 deraj@users.sourceforge.net * r_image_cache.c: Added helper for creating a texture from an image region * r_video.c: Rendering for composite images 2010-11-28 deraj@users.sourceforge.net * r_image_cache.c: Moved actual texture creation to r_image_load_internal * r_image_cache.h: Added native and composite image storage types * r_state.h: Added max texture size parameter * r_state.c: Initialize max texture size * r_video.c (r_video_set_mode): Retrieve max OpenGL texture size * r_defs.h: Added OpenGL error code facility * r_video.c (r_gl_to_status): Convert OpenGL errors to status codes * r_image_cache.c: Added row/column and other size calculations for composites 2010-11-26 deraj@users.sourceforge.net * r_zlist.c: Actually fixed Z-List sort (smaller z implies drawn first) 2010-11-24 deraj@users.sourceforge.net * configure.in: Updated web site * radius-engine.pc: Updated web site * r_script_lib.c (l_random): random() uses [0, 1] and random(n) uses [0, n) * r_image_cache.c (r_image_load): Added support for RGB PNG images * r_video.c: Skip drawing invisible entities/elements 2010-11-21 deraj@users.sourceforge.net * r_script_lib.c (l_random): random now returns values on [0, 1) 2010-11-20 deraj@users.sourceforge.net * r_video.c: Simplified lifetiem of mouse coordinate transformation * r_event.c: Only use mouse coordinate transformation if it exists 2010-11-18 deraj@users.sourceforge.net * configure.in: Incremented version * r_defs.h: Incremented version 2010-11-17 deraj@users.sourceforge.net * r_event.c: Fixed joystick count * r_video.c (r_video_start): Set application name as window title * r_video.h: r_video_start takes the application name * radius.c: Pass application name to video module 2010-11-16 deraj@users.sourceforge.net * r_matrix.h: Added r_affine_transform2d_stack_clear * r_matrix.c: Implemented r_affine_transform2d_stack_clear * r_video.c: Reset mouse coordinate transformation when changing video mode * r_event.c: Added support for mouse buttons other than left, middle, right * r_event.c: Changed name of mouse left/right/middle to mbleft/mbright/mbmiddle * r_video.c (r_video_set_mode): Fixed mouse coordinate transformation 2010-11-15 deraj@users.sourceforge.net * r_event.h: Added r_event_setup * r_event.c (l_Mouse_getPosition, r_event_setup): Added mouse functions * r_script_lib.c: Call r_event_setup 2010-09-21 deraj@users.sourceforge.net * r_state.h: Added event_state * r_state.c: event_state initialized to NULL * r_layer.h: Added joystick button/axis handler field * r_layer.c: Initialize joystick button/axis handler field * r_event.c (r_event_start, r_event_stop): Open/close joysticks * r_event.c: Joystick event handling * r_video.c (r_video_start): Enable SDL joystick support 2010-09-02 deraj@users.sourceforge.net * r_defs.h: Incremented version * configure.in: Incremented version 2010-09-01 deraj@users.sourceforge.net * r_audio_decoder.c: Fixed capitalization of SDL_sound.h * r_audio.c (r_audio_callback): Removed unused variable * r_audio_clip_manager (r_audio_clip_instance_release): Added default case * r_audio_decoder.c: Removed unused functions * r_vector.h: Removed const from r_vector_2d_from_homogeneous declaration * r_vector.c (r_vector2d_from_homogeneous): Removed unsupported const 2010-08-30 deraj@users.sourceforge.net * r_audio_clip_cache.h: Added audio state functions * r_audio_clip_cache.c: Audio state helpers are now globals * r_layer.c: Layers now have audio state manipulation functions 2010-08-23 deraj@users.sourceforge.net * r_layer_stack.h: Added r_layer_stack_get_active_audio_state and r_layer_stack_get_active_audio_state_for_layer * r_layer_stack.c: Implemented functions for finding active audio states * r_event.c: Use layer stack function for finding active audio state * r_audio_clip_cache.c: Audio state play/clear, music start/stop/seek now can be used globally (for the active audio state) or for a specific layer 2010-08-22 deraj@users.sourceforge.net * r_file_internal.c (r_file_internal_close): Files are now only closed once (fixing a possible heap corruption issue) * r_audio.h: Grouped global audio functions and state functions * r_audio.c: Audio state functions now can use either a specific audio state or the default * r_audio.c: Audio state internal functions assume audio state is not NULL * r_audio_clip_cache.c: Renamed music functions and put all on Audio table 2010-08-21 deraj@users.sourceforge.net * r_audio.c (r_audio_music_play): Ensure only one music clip plays at a time * r_state.h: Added global music volume * r_state.c: Music defaults to max volume (constrained by global max volume) * r_audio.h: Added r_audio_music_set_volume * r_audio.c (r_audio_music_set_volume): Music volume adjustment (current state) * r_audio.c: Music functions now can be called with/without audio lock * r_audio.c (r_audio_set_current_state): Ensure music volume is correct when changing audio states * r_audio_clip_cache.c: Added Audio.Music.getVolume and Audio.Music.setVolume * r_audio_clip_cache.c: Global/music volume now have common get/set helpers * r_audio.h: Added r_audio_clip_instance_flags_t for looping * r_audio.c: Propagate looping flags when creating clip instances * r_audio_clip_cache.c: l_Audio_Music_play added optional loop argument * r_audio_decoder.c (r_audio_decoder_process_task): Rewind for looping * r_audio.h: Added r_audio_music_seek * r_audio.c (r_audio_music_seek): Music seeking * r_audio_clip_cache.c (l_Audio_Music_seek): Music seek function * r_audio_clip_decoder.c (r_audio_decoder_schedule_seek_task): Don't lock audio 2010-08-16 deraj@users.sourceforge.net * r_audio_callback.c: Fixed scheduling of next on-demand clip decode task (previously only one buffer was used, leading to occasional skipping) * r_audio.h: Tweaked cached/on-demand buffer sizes so that the longest cached clip is a little less than 6 seconds, but on-demand clips have three buffers that total about 9 seconds * r_audio.c (r_audio_allocate_sample): Pass in desired buffer size * r_audio_clip_manager.h: Moved audio clip manager to its own file * r_audio_clip_manager.c: Moved audio clip manager implementation * r_audio.h: Removed audio clip manager * r_audio.c: Removed audio clip manager * Makefile.am: Added r_audio_clip_manager.h, r_audio_clip_manager.c * r_audio.h: Replaced r_audio_clip_handle_t with a ref-counted data pointer * r_audio.c: Use ref-counted r_audio_clip_data pointer instead of handle * r_audio_clip_manager.h: Audio clip data pointer functions * r_audio_clip_manager.c: Use clip data pointer list to keep track of data * r_audio_clip_cache.h: Store a clip data pointer instead of handle * r_audio_clip_cache.c: Use clip data pointer instead of handle 2010-08-15 deraj@users.sourceforge.net * r_defs.h: Added RA_F_CANT_SEEK, RA_F_SEEK_ERROR * r_audio_decoder.h: Moved task definition to implementation file * r_audio_decoder.c: Moved task definition to implementation file * r_audio_decoder.c: Support for multiple decoder task types * r_audio_decoder.h: Added r_audio_decoder_schedule_seek_task * r_audio_decoder.c: Implemented decoder seek tasks * r_audio.h: Added IDs to clip instances * r_audio.c: Auto-incrementing clip instance IDs * r_audio.h: Added music play/stop functions * r_audio.c: Implemented music play/stop * r_audio_clip_cache.c: Added Audio.Music.play/stop 2010-08-13 deraj@users.sourceforge.net * r_audio.c: Clip instances are now stored in an array of pointers (bug fix) * r_audio.c: Miscellaneous fixes for on-demand clips * r_list.h: Added r_list_steal_index * r_list.c: r_list_steal_index implementation * r_audio_decoder.c: Take ownership of clip instance reference from list * r_audio_decoder.c: Shortcut decoding task if no decoding is necessary 2010-08-12 deraj@users.sourceforge.net * r_audio_decoder.c: Decoder thread now takes r_state_t as its user data * r_audio_decoder.c (r_audio_decoder_schedule_task): Added scheduling * r_audio.c (r_audio_start): Moved decoder ownership to r_audio_decoder_start 2010-08-11 deraj@users.sourceforge.net * r_audio.c (r_audio_clip_manager_t, r_audio_clip_manager_start, r_audio_clip_manager_end): Added lock to protect clip handles * r_audio.c (r_audio_clip_manager_load, r_audio_clip_manager_duplicate_handle_internal, r_audio_clip_manager_release_handle_internal): Protected handle ref counts * r_audio.h (r_audio_clip_instance_t): Added ref-counting for clip instances * r_audio.c (r_audio_clip_instance_release, r_audio_clip_instance_add_ref, r_audio_state_queue_clip_internal): Ref-counting for clip instances * r_audio.c (r_audio_start, r_audio_end): Start/stop decoder * r_state.h: Added audio_decoder field * r_state.c: Initialize audio_decoder * r_defs.h: Added new audio decoding error codes * r_audio_decoder.c: Implemented decoding task processing 2010-08-10 deraj@users.sourceforge.net * r_list.c (r_list_get_count): Added list count getter * Makefile.am: Added r_audio_decoder.h, r_audio_decoder.c * r_audio_decoder.h: Initial audio decoder interface * r_audio_decoder.c: Partial implementation of audio decoder 2010-08-08 deraj@users.sourceforge.net * r_defs.hn: Incremented version * configure.in: Incremented version * r_file_internal.c (r_file_internal_write): Use platform newline for files * r_file_system.h: Decreased max path length to 256 (including NULL) for Linux * r_platform_defs.h: Added platform definition files * Makefile.am: Added all three platform definition files * r_defs.h: Include platform definitions (e.g. R_INLINE) * r_platform_defs_windows.h: Defined R_INLINE * r_platform_defs_unix.h: Defined R_INLINE * r_event.h (r_event_get_time_difference): Inlined * r_matrix.h: Inlined transformation functions * r_object_ref.h (r_object_ref_init): Inlined * r_vector.h (r_vector2d_from_homogeneous): Inlined, first parameter const * r_vector.c (r_vector2d_from_homogeneous): Inlined, first parameter const * r_video.c (r_video_color_blend): Inlined * r_script_lib.c (l_mathFunction): Inlined * r_zlist.c (r_zlist_sort_insert): Inlined * r_event.h: r_event_get_current_time is no longer global * r_event.c (r_event_get_current_time): Inlined * r_script.h: R_SCRIPT_ENTER/EXIT now do nothing on release builds 2010-08-01 deraj@users.sourceforge.net * r_audio_clip_cache.c (l_Audio_play): Audio.play persistently caches sounds * r_audio.c (r_audio_clip_manager_release_handle_internal): Added comment * r_log.h: Definitions for r_log_file_start, r_log_file_end, r_log_file_log * r_log.c: Added r_log_file_start, r_log_file_end, r_log_file_log for logging * r_state.h: Added log file state * r_state.c: Initialize log file state * radius.c: Log file now started after setting up file system * r_platform.h: Added platform-dependent newline string * r_platform_windows.h: Newline: "\r\n" * r_platform_unix.h: Newline: "\n" * r_defs.h: Added R_S_STOP_ENUMERATION for "for each" style callbacks * r_layer.h: Added propagate_audio flag * r_layer.c: propagateAudio field * r_event.c (r_event_detect_active_layer): Use top non-propagating audio state * r_layer_stack.h: Added generic looping over layer stack * r_layer_stack.c (r_layer_stack_process): Implementation of generic looping * r_log.c (r_log_file_log): Flush log file after each write * r_script_lib.c (l_debugBreak): Write call stack to log 2010-07-31 deraj@users.sourceforge.net * r_list.c (R_LIST_ITEM): Fixed item offset macro * r_list.c (r_list_add): Fixed initialization of larger array * r_object_list.c (r_object_list_add): Fixed initialization of larger array * r_object_list.h: Added TODO to merge r_list and r_object_list code * r_object.c (l_Object_metatable_gc): Fixed type comparison for cleaning up 2010-07-22 deraj@users.sourceforge.net * r_element.h: Element type enumeration now starts at zero * r_element.c: Element type is now available to scripts 2010-07-18 deraj@users.sourceforge.net * r_color.c: Added Color.clone to duplicate color objects * r_defs.h: Incremented version 2010-07-17 deraj@users.sourceforge.net * Makefile.am: Source files are now listed one per line * r_audio.c: Fixed compiler warnings * r_audio_clip_cache.c: Fixed compiler warnings * r_color.c: Fixed compiler warnings * r_element.c: Fixed compiler warnings * r_element_list.c: Fixed compiler warnings * r_entity.c: Fixed compiler warnings * r_entity_list.c: Fixed compiler warnings * r_event.c: Fixed compiler warnings * r_event.h: Moved r_event_get_time_difference to r_event.c * r_file.c: Fixed compiler warnings * r_file_system.c: Fixed compiler warnings * r_image_cache.c: Fixed compiler warnings * r_layer.c: Fixed compiler warnings * r_layer_stack.c: Fixed compiler warnings * r_matrix.c: Fixed compiler warnings * r_object.c: Fixed compiler warnings * r_object_list.c: Fixed compiler warnings * r_resource_cache.c: Fixed compiler warnings * r_script_lib.c: Fixed compiler warnings * r_string_buffer.c: Fixed compiler warnings * r_video.c: Fixed compiler warnings * r_zlist.c: Removed unused code 2010-07-14 deraj@users.sourceforge.net * r_object_list.c (r_object_list_clear): Only clear items if count > 0 * r_object_list.c (r_object_list_clear): Avoid underflow of i by testing count * r_defs.h: Modified R_SUCCEEDED/R_FAILED to not depend on enum size/signedness 2010-07-13 deraj@users.sourceforge.net * Makefile.am: (Linux build) Added Automake makefile * acinclude.m4: (Linux build) Added M4 macros for Autoconf * configure.in: (Linux build) Added Autoconf template * radius-engine.pc.in: (Linux build) Added pkg-config template * r_platform.c: Removed unnecessary header * radius.h: Incremented version * r_platform_unix: Initial platform-specific functions for UNIX-like OS * acinclude.m4: Fixed capitalization of SDL_sound * acinclude.m4: AM_PATH_LUA uses pkg-config now * r_image_cache.c: Protected OpenGL calls before OpenGL context is set 2010-07-03 deraj@users.sourceforge.net * r_file_system.h: r_file_system_setup_script sets up script functions * r_file_system.c: File system script functions are set up separately * r_file_system.c (r_file_system_start): stdout/stderr are reopened on Windows * r_platform.h: Added r_platform_setup_output for preparing output * r_platform_windows.h: stdout/stderr are redirected to user profile * radius.c (radius_execute_internal): Base file system is now initialized first 2010-06-28 deraj@users.sourceforge.net * r_state.h: Added audio_volume field to r_state_t * r_state.c: Audio volume defaults to 0 (no audio) * r_audio.c (r_audio_callback): Respect global audio volume * r_audio.h: Added r_audio_set_volume for setting audio volume * r_audio.c: Implemented r_audio_set_volume * r_audio_clip_cache.c: Added Audio.setVolume function * r_audio_clip_cache.c: Added Audio.getVolume function * r_audio.c (r_audio_clip_data_free_internal): Ignore frees of empty clips 2010-06-27 deraj@users.sourceforge.net * All: Applied MIT License to engine code 2010-06-20 deraj@users.sourceforge.net * r_audio.c: Read/write wrappers return count even if less than requested 2010-06-19 deraj@users.sourceforge.net * r_state.h: Added audio data pointer to r_state_t * r_state.c: Initialize audio data pointer to NULL * r_audio.h: Added function to set current audio state * r_audio.c: Queueing clips now uses the active state * r_layer.h: Added audio state to r_layer_t * r_layer.c: Initialization and cleanup of audio state * r_event.c: Current audio state is now set when layers are pushed/popped * r_audio.h: Audio state clearing function * r_audio.c: Implemented clear function * r_audio_clip_cache.c: Moved playSound to Audio.play and added Audio.clear * r_list.c: r_list_clear now sets the item count back to zero * r_script.h: Added optional argument support to script argument verification * r_script.c: Implemented r_script_verify_arguments_with_optional * r_audio.h: Added constants for position extremes * r_audio.c: Implemented volume and left-right fading * r_audio_clip_cache.c: Audio.play can now accept volume and position 2010-06-10 deraj@users.sourceforge.net * r_list.h: List element manipulation functions now accept r_state_t pointer * r_list.c: Add r_state_t pointer * r_object_list.c: Add r_state_t pointer * r_audio.h: Clip instances now hold only a handle to the clip data * r_audio.c: Clip instances use a handle 2010-06-06 deraj@users.sourceforge.net * r_list.c: Fixed bug in list initialization * r_audio.c: Audio clip manager initialization code is now called * r_audio.c: Clip instances are removed from the audio state once complete 2010-06-04 deraj@users.sourceforge.net * r_audio_clip_cache.h: Initial audio clip cache definition * r_audio_clip_cache.c: Audio clip cache implementation * r_audio.c: Fixed seek implementation 2010-06-01 deraj@users.sourceforge.net * r_audio.c: Added private audio clip store * r_audio.c: Started SDL_RWops implementation for PhysicsFS 2010-05-31 deraj@users.sourceforge.net * r_image_cache.h: Image type is now an object * r_image_cache.c: Refactored images as objects so that lifetimes are managed * r_object.h: Field read/write functions supply object * r_object.c: Field read/write functions supply object * r_object.h: r_object_push_new declaration * r_object.c: Added r_object_push_new for creating objects from C * r_script.h: Added macros for tracking script stack invariants * r_script.c: Fixed node registration to not modify script stack * r_object.c: Added script stack invariants to object functions * r_image_cache.c: Added persistent table to image cache * r_script_lib.c: Added garbageCollect for running garbage collector * r_resource_cache.h: Generic resource cache definition * r_resource_cache.c: Generic resource cache implementation * r_image_cache.c: Refactored image cache to use generic resource cache 2010-05-29 deraj@users.sourceforge.net * r_audio.h: Moved audio clip instance list inside r_audio. * r_audio.c: Moved audio clip instance list inside r_audio. * r_image_cache.c: Use a reference for image cache instead of registry 2010-05-19 deraj@users.sourceforge.net * r_audio_clip_instance_list.h: Simple growable list for audio clip instances * r_audio_clip_instance_list.c: Audio clip instance list implementation 2010-05-17 deraj@users.sourceforge.net * r_audio.h: Initial audio structures defined * r_list.h: Generic list utility type * r_list.c: Generic growable list implementation 2010-05-16 deraj@users.sourceforge.net * r_audio.h: Added initial audio subsystem interface * r_audio.c: Initial audio implementation * r_defs.h: Added audio status codes * radius.c: Added audio initialization for applications * r_defs.h: Fixed script facility code 2010-04-04 deraj@users.sourceforge.net * r_image_cache.c: Added additional error context * r_video.c: Added additional error context 2010-03-26 deraj@users.sourceforge.net * r_image_cache.c (r_image_cache_start): Default font is loaded when the image cache is started (ensuring the default font exists before it is assigned in an element initializer) * r_string_buffer.c (r_string_buffer_clear): Length is now reset to zero when cleared (before this, the string appeared to always be empty after clearing--even if appended to later) 2010-03-24 deraj@users.sourceforge.net * Utility\Input.lua: Initial logical/customizable input support 2010-03-22 deraj@users.sourceforge.net * r_script_lib.c (l_Table_forEach): Implemented for-each table function 2009-12-31 deraj@users.sourceforge.net * r_state.h: r_state_t can now be created on the stack * r_state.c: r_state_t stack-allocated implentation * radius.c: Main r_state_t is now allocated on the stack * radius.c: Application-based initialization * r_file_system.h: Application-specific path creation prototypes * r_file_system.c: Application-specific path implementation * r_defs.h: Platform definitions * r_platform.h: Platform-specific prototypes * r_platform.c: Platform-specific implementation selector * r_platform_windows.h: Windows platform-specific implementation * r_string.c (r_string_format_allocate): Format as a newly-allocated string * r_defs.h: Status codes are now defined in an enumeration 2009-12-30 deraj@users.sourceforge.net * r_script.c (r_script_verify_arguments): Expected argument array may be NULL if no arguments are expected * r_video.h: Prototypes for video functions for scripts * r_video.c: Video functions available to scripts * r_script_lib.c (l_dump): Dump function now dumps all arguments * r_image_cache.h: Images are now pointers to image-related data (currently just the texture ID--which may change as textures on reload) * r_image_cache.c: All images are reloaded properly when changing video modes * r_video.c (r_video_draw_element): Update to use new image data * r_video.c (r_video_set_mode): Input is "un-grabbed" when switching out of fullscreen * r_video.c: Video mode get functions split up * r_video.c (r_video_draw, r_video_set_mode): Error on draw with no mode set * radius.c (main): No video mode is set by default * radius.h: New library entry point * radius.c: New library entry point implementation 2009-12-29 deraj@users.sourceforge.net * r_file_system.h: Moved file system setup to new file * r_file_system.c: File system interface implementation * r_file_internal.h: Internal file wrapper * r_file_internal.c: Implementation of native file wrapper * r_file.h: Initial file object definition * r_file.c: Initial file object implementation 2009-12-28 deraj@users.sourceforge.net * r_file.h: File system initialization uses a user-specific write directory * r_file.c: Write directory prepended to search path * radius.c: Temporary user directory added for testing * r_defs.h: Added generic file system error code * r_file.h: Added file wrapper * r_file.c: Initial file wrapper implementation 2009-12-20 deraj@users.sourceforge.net * r_layer.h: Added error handler to layer definition * r_layer.c: Error handler definition and initialization * r_script.c: Errors are now propagated to active layer error handler 2009-12-13 deraj@users.sourceforge.net * r_object_enum.h: Definition of named enumerations * r_object_enum.c: Named enumerations for object fields * r_element.h: Alignment enumerated values * r_element.c: Alignment field read/write 2009-12-11 deraj@users.sourceforge.net * r_script_lib.c: Refactored math functions * r_script_lib.c: Added min/max aggregation functions 2009-12-09 deraj@users.sourceforge.net * r_script_lib.c (l_isType): Re-wrote type-checking functions 2009-12-08 deraj@users.sourceforge.net * r_string.h: String utility function header * r_string.c: String formatting functions * r_log.c: Finalized dump function * r_object_list (r_object_list_clear): Fixed bug in clearing object lists 2009-12-07 deraj@users.sourceforge.net * r_log.h: Formatted logging functions * r_log.c: Added formatted logging functions 2009-12-06 deraj@users.sourceforge.net * r_log.c: Fixed stack management of logging function * r_script_lib.c (l_dump): Initial implementation of more useful dump function 2009-11-30 deraj@users.sourceforge.net * r_object_list.c (r_object_list_remove): Fixed bug where previously-existing references could be erroneously released, leading to duplicates 2009-11-29 deraj@users.sourceforge.net * r_entity.c (r_entity_update): Children are now updated before their parent * r_zlist.c (r_zlist_sort_insert): ZLists are now properly sorted according to the coordinate system * r_script_lib.c (l_debugBreak): Added call stack logging 2009-11-28 deraj@users.sourceforge.net * r_object_list.h: Object list find/remove/clear prototypes * r_object_list.c: Implemented object list find/remove/clear * r_object_ref.c: Added global override option for read functions * All: Objects now use global read value override for returning fixed functions * r_object_list.c: Fixed a bug in object list remove 2009-11-26 deraj@users.sourceforge.net * Data\Main.lua: Initial work on example game 2009-11-24 deraj@users.sourceforge.net * Data\Console.lua: Mostly-functional console 2009-11-21 deraj@users.sourceforge.net * r_element.c: Text element can now specify an underlying string buffer * r_video.c: Text elements can use characters from a string or a string buffer * r_entity_list.c: Entity list objects now have an updated function * r_entity.c: Consolidated entity update function code * r_entity.c: Entities can now have children entities * r_script.c: Added generic "node" type for registering tables/functions * All: Streamlined setup/registration to use nodes * r_script_lib.c: Renamed global logging entry point to "messageLogged" * r_video.c: Color blending/unblending 2009-11-20 deraj@users.sourceforge.net * r_image_cache.c: Added default font loading * r_element.c: Switched around order of parameters * All: Renamed wrappers to objects * All: Rawset/rawget are now used where possible 2009-11-19 deraj@users.sourceforge.net * r_script.c (r_script_verify_arguments): Added generic function for verifying script function arguments * r_string_buffer.c: Added insert and clear functions to string buffers 2009-11-17 deraj@users.sourceforge.net * r_script_lib.c: Moved logging hook into r_script_lib.c * r_script_lib.c: Added execute function * Data\Main.lua: Added ring buffer for output * Data\Main.lua: Implemented more useful text editing capabilities 2009-11-16 deraj@users.sourceforge.net * r_log.h: Log function prototype * r_log.c: Logging functions can now be added * r_script.c: Logging is now exposed to scripts 2009-11-15 deraj@users.sourceforge.net * All: Renamed "register_functions" to "setup" to better reflect purpose * r_wrapper.h: Wrapper header now contains an "extensible" flag * r_wrapper.c: Wrappers can now be extensible and store additional values in their environment table * r_string_buffer.h: String buffer definition * r_string_buffer.c: String buffer implementation 2009-11-14 deraj@users.sourceforge.net * r_wrapper.h: Global references are no longer separated * r_wrapper.c: Writing references to wrappers does not require script type * r_wrapper_ref.h: Separated wrapper reference code from wrappers * r_wrapper_ref.c: Wrapper ref implementation separated from wrappers 2009-11-10 deraj@users.sourceforge.net * r_wrapper.h: Wrappers now carry an ID that links to their value * r_wrapper.c: Wrappers can push values based on an ID 2009-11-08 deraj@users.sourceforge.net * r_wrapper.c: Added wrapper pointer-to-script value table * All: Removed unnecessary plumbing of wrapper index positions 2009-11-07 deraj@users.sourceforge.net * r_layer_stack.c: Fixed active layer push function * r_wrapper.h: Added default initializer to field definition * r_wrapper.c: Wrapper default initialization function * r_event.c: Replaced old event handling code * r_video.c: Layer rendering * All: Removed old "rs_" nomenclature 2009-11-06 deraj@users.sourceforge.net * r_wrapper_list.h: Moved wrapper ref swap function to wrapper list * r_wrapper_list.c: Added pop function for wrapper lists * r_layer_stack.h: Layer stack definition * r_layer_stack.c: Initial layer stack implementation using wrapper lists * r_layer.c: Initial layer implementation 2009-11-05 deraj@users.sourceforge.net * r_wrapper.h: Added wrapper processing functions to wrapper header * r_wrapper.c: An argument processing function can be used to initialize wrappers * r_element_list.c: Element lists can now be initialized with a set of elelments * r_entity.h: Entity definition * r_entity.c: Initial entity implementation * r_entity_list.h: Entity list definition * r_entity_list.c: Entity list implementation * r_wrapper_list.h: Generic wrapper list definition * r_wrapper_list.c: Generic wrapper list implementation * r_zlist.h: ZLists are now wrapper lists * r_zlist.c: ZLists share code with wrapper lists 2009-11-04 deraj@users.sourceforge.net * r_zlist.c (r_zlist_sort_insert): Fixed insertion/sort * r_element_list.c: Completed initial element list implementation 2009-11-03 deraj@users.sourceforge.net * r_wrapper.c: Wrapper references can now use either a host wrapper's environment table or the registry table * r_script_lib.c: Moved script function registration to implementation files * r_wrapper.c (r_wrapper_ref_write_internal): Script type conversion now inferred from script type * r_wrapper.h (r_wrapper_ref_t): Wrapper type no longer included in each ref 2009-11-02 deraj@users.sourceforge.net * r_wrapper.h: Initial wrapper cleanup prototype * r_wrapper.h: Wrapper headers/templates are now shared * r_wrapper.c: Removed wrapper reference template * r_zlist.c: Removed ZList template * r_zlist.c (r_zlist_add): ZLists now write read/write references using the same code as wrapper refs 2009-11-01 deraj@users.sourceforge.net * r_element_list.h: Element list definition * r_element_list.c: Initial element list implementation * r_wrapper.h: Wrapper template struct * r_wrapper.c: Wrappers now initialized with template struct * r_wrapper.c (rs_wrapper_field_read_internal, rs_wrapper_field_write_internal): Consolidated reference type read/write code * r_script.c (r_script_call): Error handler index is no longer supported 2009-10-31 deraj@users.sourceforge.net * r_zlist.c: Implemented insertion sort for ZLists 2009-10-29 deraj@users.sourceforge.net * r_wrapper.c: Implemented function references for wrappers * r_zlist.h: Initial ZList types * r_zlist.c: Initial work on ZList adding 2009-10-27 deraj@users.sourceforge.net * r_wrapper.c: String and wrapper references now use an environment table instead of the global registry table to enable garbage collection 2009-10-22 deraj@users.sourceforge.net * r_video.c (rs_video_draw_element): Cleaned up element rendering * r_element.h: Most element data is now shared 2009-10-21 deraj@users.sourceforge.net * r_video.h: Font coordinate type * r_video_font.c: Font texture coordinate table 2009-10-20 deraj@users.sourceforge.net * r_image_cache.h: Prototypes for image field reading/writing * r_image_cache.c (r_wrapper_field_image_read, r_wrapper_field_image_write): Generic image field reading/writing * r_wrapper.h: Wrapper string (including reference) * r_wrapper.c (rs_wrapper_field_read_internal, rs_wrapper_field_write_internal): String reading/writing for wrappers 2009-10-19 deraj@users.sourceforge.net * r_element.c (r_wrapper_field_image_write): Image field writing * r_image_cache.c (r_image_cache_load_default_images): Default image init * r_video.c (r_video_set_mode): Create default image after setting video mode * r_wrapper.c (l_Wrapper_metatable_newindex): Wrapper field writing *r_wrapper.c (rs_wrapper_field_write_internal): Nil is allowed for wrappers 2009-10-18 deraj@users.sourceforge.net * r_wrapper.c (l_Wrapper_new): Generic wrapper type constructor 2009-10-17 deraj@users.sourceforge.net * r_wrapper.c: Implemented field reader for wrapped structures * r_script.c: Miscellaneous debugging functions 2009-10-16 deraj@users.sourceforge.net * rc.c: Updated console application to conform to the rest of the code * r_wrapper.h: New wrapper type definitions * r_wrapper.c: Implemented userdata wrapper field read/write support 2009-10-14 deraj@users.sourceforge.net * r_video.c (l_drawElement): Initial take on texture coordinates for elements 2009-10-13 deraj@users.sourceforge.net * r_image_cache.c (rs_image_cache_load): Updated image loading to use physfs and libpng to load images 2009-10-05 deraj@users.sourceforge.net * r_image_cache.c: Fixed image cache implementation and added fake checkered image for testing * r_video.c (l_drawElement): Revised element drawing to only use rectangular images 2009-10-04 deraj@users.sourceforge.net * r_image_cache.h: Initial image cache interface * r_image_cache.c: Implemented image cache (except for image loading) 2009-10-03 deraj@users.sourceforge.net * All: Completed main code cleanup work * All: Normalized all typedefs to have "_t" suffix 2009-10-03 deraj@users.sourceforge.net * All: More script isolation 2009-10-02 deraj@users.sourceforge.net * All: Started isolating code that interfaces with scripts 2009-10-01 deraj@users.sourceforge.net * All: Updated most syntax 2008-04-22 deraj@users.sourceforge.net * r_video.c (l_drawElement): Fixed bug where color didn't revert after drawing * r_video.c (l_drawEntity): Fixed bug where rotates were about the wrong axis 2008-04-21 deraj@users.sourceforge.net * radius.c (main): Lua file names are now capitalized correctly * ZList.lua (ZListRemove): Fixed remove function to not loop indefinitely * EntityList.lua: Added new EntityList type for lists of entities * Main.lua: Updated to use new EntityList type and remove entities * r_state_t.c (r_state_new): rand() is initialized with the current time * r_script_lib.c (l_random): Added random number generator function 2008-04-20 deraj@users.sourceforge.net * r_video.c: Entities can now specify their overall color 2008-04-16 deraj@users.sourceforge.net * r_video.c (l_drawElement): More points can be drawn for polygons than just 4 * main.lua: Started work on a proof-of-concept untextured console 2008-04-15 deraj@users.sourceforge.net * r_event.c: Layer update function now pushes the layer as the first argument * r_video.c (l_drawElement): Rotation is applied before scaling (l_drawElement): Element colors are now applied * r_color_lib.h: Added color object interface * r_color_lib.c: Added color object interface * main.lua: Implemented white box test entity using update function 2008-04-14 deraj@users.sourceforge.net * Makefile.am: Added entity script interface * r_entity_lib.h: Added entity script interface * r_entity_lib.c: Implemented dimension retrieval for entities * r_video.c: Entity drawing 2008-04-06 deraj@users.sourceforge.net * color.lua: Color type * size.lua: Size type * point.lua: Point type * polygon.lua: Polygon type * r_event.c: Times are now stored per layer (r_event_main_loop): Frame rates or minimal rates may be specified * r_layer_lib: Times are now stored per layer 2008-04-05 deraj@users.sourceforge.net * r_layer_lib.h: Moved layer interface headers * r_layer_lib.c: Layer interface * r_event.c: Moved some utility functions to r_layer_lib (r_event_get_desired_frame_period_ms): Layer-settable frame period * zlist.lua: Z-sorted list implementation * r_video.c: SDL timer facilities are now initialized 2008-04-04 deraj@users.sourceforge.net * r_matrix.h: Added affine transformation types types/functions * r_matrix.c: Matrix multiply, affine transformations * r_defs.h: Generic definitions header * r_vector.h: Moved real number representation into main header * r_video.c: Added temporary coordinate mapping (r_video_set_mode): Vertical coordinates are now defined for all layers * r_event.c: Added temporary coordinate mapping for mouse events * radius-tmp.c: Test program that should be removed at some point (main) Added small testing program for debugging problems with matrices * Makefile.am: Updated for new modules * layer.lua: Initial layer definition * r_script.h: Added call or log error function * r_script.c (r_script_call): Added call that logs an error on error 2008-04-03 deraj@users.sourceforge.net * r_vector.h: Vector types/functions header * r_vector.c: Homogeneous conversion functions * r_matrix.h: Matrix types/functions header 2008-04-01 deraj@users.sourceforge.net * r_event.c (r_event_handle_mouse_button_event): Mouse button support (r_event_handle_mouse_motion_event): Mouse motion support (r_event_loop): Mouse button event support (r_event_loop): Clicking the window close button now exits * main.lua: Tested mouse button/motion event support * keys.lua: Keyboard event handler setup * mouse.lua: Mouse button event handler setup 2008-03-31 deraj@users.sourceforge.net * r_event.c (r_event_end): Specific event handler registration not needed (r_event_start): Specific event handler registration not needed (r_event_handle_key_event): Generic KeyboardEvent handler is now used instead of many separate hard-coded event handlers * main.lua: Switched to new unified key event handling * Makefile.am: Added r_script_lib.c and r_script_lib.h * r_script_lib.h: Added scripting utility functions header * r_script_lib.c: Added scripting utility functions (check_type): Helper function for verifying types (r_script_register_functions): Register type-checking functions 2008-03-28 deraj@users.sourceforge.net * radius.c (main): Nested init code so that cleanup only appears once 2008-03-24 deraj@users.sourceforge.net * Makefile.am: Added r_event_keys.h and r_event_keys.c * r_event_keys.h: Header for key names * r_event_keys.c: Initialization and retrieval of key names * r_event.h: Noted that main loop should only be called once, added init/deinit * r_event.c: Keys are initialized in r_event_loop (r_event_start): Event initialization (r_event_end): Event deinitialization (r_event_handle_key_event): Call key press/release event handlers * radius.c (main): Initialize events, deinitialize video (main): print out error on failure to run main.lua * main.lua: Example key event handlers 2008-03-23 deraj@users.sourceforge.net * Makefile.am: radius-console doesn't use SDL/OpenGL/libpng (radius): Added graphical application radius * configure.in: Added libpng support * configure.in: Separate variables defined for SDL/OpenGL/libpng use * radius-console.c (main): Replaced free() with r_state_free() as it should be (defines): Increased input buffer size to 1024 characters * r_script.h: R_LUA_ENV_STATE changed to RS_ENV_STATE (r_script_get_state): Renamed l_get_rs to r_script_get_state * r_script.c: R_LUA_ENV_STATE changed to RS_ENV_STATE * r_file_lib.c: Added require() script function for loading required scripts (r_file_reader): Added text block reader function and arguments structure (r_file_load_script): Helper for loading a script * radius.c: Added graphical application * r_video.h: Video module * r_video.c: Video module * r_event.h: Input/event loop module * r_event.c: F12 exits the graphical application 2008-03-20 deraj@users.sourceforge.net * r_script.h: Added rs_script_started * r_script.c (rs_script_started): Added test for scripting started * r_file.c (r_file_start): File module registers function if scripting is on * r_file.c (r_file_start): Automatically load zip files in the root directory * r_file.c (r_file_start): Added root directory parameter * radius-console.c (main): Added R_ROOT_DATA_DIR for data directory root 2008-03-19 deraj@users.sourceforge.net * r_file.h: Header for file system interactions * r_file.c: Added file system start/stop * r_file_lib.h: Header for file system functions available to scripts * r_file_lib.c: Added "ls" function for listing files in the file system * radius-console.c: Added support for the file system module * r_log_lib.c: Logging functions available to scripts * r_log_lib.y: Header for logging functions available to scripts * Makefile.am (radius_console_SOURCES): Moved files around 2008-03-18 deraj@users.sourceforge.net * r_file_system.h: Created file system header * r_file_system.c: Skeleton file system source * Makefile.am (radius_console_SOURCES): Added file system files * configure.in: Added tests for PhysicsFS 2008-03-17 deraj@users.sourceforge.net * r_lua_lib.h: Functions available to Lua scripts * r_lua_lib.c (r_lua_register_functions): Function to register functions in Lua (l_print): Print strings out * r_log.h: Created logging function header file * r_log.c (r_log, r_log_error): Implemented initial logging functions * r_lua.h: Created Lua interactions header file * r_lua.c (l_panic, r_lua_start, r_lua_end): Added basic Lua functions (r_lua_set_error_return_point): Lua panic function * radius.h: Moved constants to more appropriate headers * radius-console.c (main): Modified Lua interpreter to use modular functions, * Makefile.am (radius_console_SOURCES): Added r_lua.c, r_lua.h, r_log.c (radius_console_SOURCES): r_log.h, r_lua_lib.c, r_lua_lib.h (bin_PROGRAMS): Renamed radius-test radius-console 2008-03-16 deraj@users.sourceforge.net * radius.h: Added a bunch of generic constants * radius.h: Added constants for the Lua interpreter * radius-test.c (main): Initial Lua interpreter * configure.in: Added test for Lua header