Page 1 of 2

Galactic Sat Nav

Posted: Tue Oct 28, 2014 12:37 pm
by wyn_sleeman
I have finally taken the plunge and written my first tiny OXP, and along with it this - my first post on "the friendliest board this side of Riedquat"

I have written a Sat Nav oxp.

Choose a destination in the Galactic Chart
Prime the Sat Nav - this sets the destination

Then whenever you enter the local chart, it will tell you (via a console message) which system to go to next for the Shortest and/or Quickest route to the destination.

I would like to get it to automatically set the targetsystem for the next step of the journey, but I think I can only do that while docked, I really want to do it immediately after exiting witchspace.

I have dressed it up as a "Software update for the Navigational Array" - so you need to own that first.

Please help yourselves - All criticisms / advice gratefully received.

https://www.dropbox.com/s/a6dwjsffba9nr ... v.oxz?dl=0

Re: Galactic Sat Nav

Posted: Tue Oct 28, 2014 12:56 pm
by Cody
Welcome aboard, amigo - good first post!

Re: Galactic Sat Nav

Posted: Tue Oct 28, 2014 1:26 pm
by Norby
Welcome here wyn_sleeman!

Nice first work. your code is very clean.

For some automatism you can set the target system in shipDockedWithStation event handler, especially if none is set.

In manifest.plist please insert the url of this topic into information_url until you have not a wiki page. You can left out the file_size line completely, enough if you give it in the oxz admin page (ask a login from cim).

Re: Galactic Sat Nav

Posted: Tue Oct 28, 2014 1:28 pm
by Smivs
Hi, and welcome to the Board.
Nice OXP idea - it sounds really useful :)

Re: Galactic Sat Nav

Posted: Tue Oct 28, 2014 1:35 pm
by wyn_sleeman
Thanks Norby

I have removed the filesize and put the topic URL in.

I will have a think about putting the shipDockedWithStation handler in.

If / when I (we) are happy that it is behaving I will see about putting it up on the wiki etc.

Re: Galactic Sat Nav

Posted: Tue Oct 28, 2014 2:22 pm
by Diziet Sma
Cody wrote:
Welcome aboard, amigo - good first post!
Seconded (or is that fourthed?) on both points.. nice idea for an OXP.

Re: Galactic Sat Nav

Posted: Tue Oct 28, 2014 6:20 pm
by UK_Eliter
Thirded / fifthed!

Re: Galactic Sat Nav

Posted: Tue Oct 28, 2014 10:02 pm
by Smivs
wyn_sleeman wrote:
...I will see about putting it up on the wiki etc.
You will need a wiki account to do this yourself. Send a PM to Maik, and he can sort it out for you.

Re: Galactic Sat Nav

Posted: Wed Oct 29, 2014 12:13 am
by Wildeblood
Have you checked whether this part works properly when missionVariables.tws_satnav_finalDestination == 0 ?

Code: Select all

this.startUp = function()
{
	if(missionVariables.tws_satnav_finalDestination)
	{
		this._finalDestination = missionVariables.tws_satnav_finalDestination;
	}
	else
	{
		this._finalDestination = -1;
	}
}

Re: Galactic Sat Nav

Posted: Wed Oct 29, 2014 12:13 pm
by wyn_sleeman
Good Catch Wildeblood

Looking to see what happens when missionVariables.tws_satnav_finalDestination == 0

Can I test if the missionVariables.tws_satnav_finalDestination exists ?

if I try

if(missionVariables.tws_satnav_finalDestination == null)

or

if(missionVariables.tws_satnav_finalDestination === null)

it doesn't compile.

If not I guess I will either store a boolean to tell me whether or not to load the system ID
Or fudge it and store -2 when I really mean 0

Re: Galactic Sat Nav

Posted: Wed Oct 29, 2014 1:40 pm
by Norby
wyn_sleeman wrote:
if(missionVariables.tws_satnav_finalDestination === null)
it doesn't compile.
It should work, many OXP use this way. Please give the error message what you got.
wyn_sleeman wrote:
I will either store a boolean to tell me whether or not to load the system ID
Booleans must be stored in numeric form (0 or 1) else the "false" string will be stored in missionVariables and if you do a boolean check on the loaded variable then return true.

Alternatively you can store ID+1.

Re: Galactic Sat Nav

Posted: Wed Oct 29, 2014 2:09 pm
by wyn_sleeman
I don't see an error, but if I add that line then when I shift-run the app doesn't start.
Rem the line out and it is fine.

OK - I have found it - my stupidity I'm afraid
these two work :-

if(missionVariables.tws_satnav_finalDestination === null) log("hi","null");

if(missionVariables.tws_satnav_finalDestination === null)
{
log("hi","null");
}

but this one doesn't:-

if(missionVariables.tws_satnav_finalDestination === null)
log("hi","null");

Is that a javascript thing? Or an Oolite javascript thing?

Anyway I am happy again now, and can fix the issue

Re: Galactic Sat Nav

Posted: Wed Oct 29, 2014 2:19 pm
by another_commander
Can you please Shift-start crash it and post the resulting log?

Re: Galactic Sat Nav

Posted: Wed Oct 29, 2014 2:32 pm
by wyn_sleeman
When my script.js contains

Code: Select all

"use strict";
this.startUp = function()
{
	this._finalDestination = -1;
	if(missionVariables.tws_satnav_finalDestination === null)
		log("hi","null");

	if(missionVariables.tws_satnav_finalDestination)
	{
		this._finalDestination = missionVariables.tws_satnav_finalDestination;
	}
}
Logfile:-

Code: Select all

Opening log for Oolite version 1.80 (x86-64) under Windows 6.2.9200  64-bit at 2014-10-29 14:27:46 +0000.
8 processors detected.
Build options: OpenAL, new planets.

Note that the contents of the log file can be adjusted by editing logcontrol.plist.

14:27:46.512 [dataCache.rebuild.explicitFlush]: Cache explicitly flushed with shift key. Rebuilding from scratch.
14:27:46.597 [display.mode.list.native]: Windows native resolution detected: 1366 x 768
14:27:46.670 [joystick.init]: Number of joysticks detected: 0
14:27:46.670 [rendering.opengl.version]: OpenGL renderer version: 4.0.0 ("4.0.0 - Build 10.18.10.3316"). Vendor: "Intel". Renderer: "Intel(R) HD Graphics 4000".
14:27:46.670 [rendering.opengl.extensions]: OpenGL extensions (159):
GL_ARB_framebuffer_sRGB, GL_ARB_transform_feedback_instanced, GL_ARB_depth_texture, GL_ARB_texture_env_add, GL_ARB_internalformat_query2, GL_ARB_draw_instanced, GL_ARB_half_float_vertex, GL_EXT_texture3D, GL_EXT_compiled_vertex_array, GL_ARB_gpu_shader_fp64, GL_EXT_texture_shared_exponent, GL_ARB_framebuffer_object, GL_EXT_separate_specular_color, GL_EXT_shadow_funcs, GL_ARB_gpu_shader5, GL_EXT_rescale_normal, GL_ARB_texture_rgb10_a2ui, GL_ARB_transpose_matrix, GL_ARB_texture_cube_map_array, GL_ARB_texture_compression_rgtc, GL_ARB_multisample, GL_ARB_half_float_pixel, GL_EXT_stencil_two_side, GL_ARB_texture_border_clamp, GL_ARB_texture_non_power_of_two, GL_ATI_separate_stencil, GL_ARB_shading_language_packing, GL_EXT_bgra, GL_ARB_sync, GL_ARB_compatibility, GL_ARB_sampler_objects, GL_SUN_multi_draw_arrays, GL_EXT_clip_volume_hint, GL_ARB_map_buffer_range, GL_ARB_vertex_shader, GL_ARB_shader_objects, GL_NV_texgen_reflection, GL_EXT_multi_draw_arrays, GL_ARB_vertex_program, GL_ARB_get_program_binary, GL_ARB_base_instance, GL_INTEL_performance_queries, GL_ARB_texture_float, GL_ARB_draw_buffers_blend, GL_ARB_texture_compression_bptc, GL_ARB_fragment_coord_conventions, GL_EXT_stencil_wrap, GL_EXT_texture_swizzle, GL_ARB_shader_precision, GL_ARB_uniform_buffer_object, GL_NV_primitive_restart, GL_EXT_framebuffer_blit, GL_ARB_vertex_array_bgra, GL_ARB_texture_gather, GL_ARB_texture_compression, GL_KHR_debug, GL_ARB_vertex_array_object, GL_EXT_blend_color, GL_ARB_texture_query_lod, GL_EXT_blend_minmax, GL_EXT_texture_integer, GL_ARB_texture_swizzle, GL_EXT_gpu_shader4, GL_ARB_sample_shading, GL_ARB_shader_bit_encoding, GL_EXT_transform_feedback, GL_EXT_texture_compression_s3tc, GL_ARB_tessellation_shader, GL_ARB_occlusion_query2, GL_ARB_debug_output, GL_ARB_timer_query, GL_ARB_depth_clamp, GL_ARB_point_sprite, GL_EXT_abgr, GL_ARB_vertex_buffer_object, GL_NV_blend_square, GL_ARB_instanced_arrays, GL_EXT_framebuffer_multisample, GL_NV_conditional_render, GL_ARB_multitexture, GL_ARB_seamless_cube_map, GL_ARB_copy_buffer, GL_EXT_texture_storage, GL_ARB_draw_elements_base_vertex, GL_ARB_geometry_shader4, GL_ARB_transform_feedback2, GL_ARB_multi_draw_indirect, GL_ARB_transform_feedback3, GL_ARB_viewport_array, GL_ARB_shadow, GL_EXT_blend_subtract, GL_ARB_fragment_program_shadow, GL_ARB_internalformat_query, GL_ARB_texture_storage, GL_ARB_window_pos, GL_ARB_texture_multisample, GL_EXT_texture_lod_bias, GL_IBM_texture_mirrored_repeat, GL_EXT_texture_snorm, GL_ARB_texture_env_crossbar, GL_ARB_point_parameters, GL_ARB_depth_buffer_float, GL_EXT_texture_sRGB_decode, GL_ARB_shading_language_420pack, GL_ARB_vertex_type_2_10_10_10_rev, GL_ARB_robustness, GL_ARB_texture_rg, GL_EXT_texture_edge_clamp, GL_EXT_texture_sRGB, GL_ARB_texture_env_combine, GL_WIN_swap_hint, GL_ARB_fragment_program, GL_ARB_explicit_attrib_location, GL_EXT_packed_float, GL_ARB_texture_buffer_object_rgb32, GL_EXT_texture_filter_anisotropic, GL_EXT_draw_range_elements, GL_ARB_pixel_buffer_object, GL_ARB_shader_subroutine, GL_ARB_draw_indirect, GL_EXT_packed_depth_stencil, GL_ARB_texture_rectangle, GL_ARB_separate_shader_objects, GL_EXT_geometry_shader4, GL_EXT_fog_coord, GL_ARB_ES2_compatibility, GL_SGIS_texture_lod, GL_ARB_texture_buffer_range, GL_3DFX_texture_compression_FXT1, GL_EXT_gpu_program_parameters, GL_ARB_fragment_shader, GL_ARB_shader_atomic_counters, GL_ARB_shading_language_100, GL_EXT_secondary_color, GL_ARB_draw_buffers, GL_SGIS_generate_mipmap, GL_EXT_draw_buffers2, GL_EXT_texture_rectangle, GL_ARB_program_interface_query, GL_ARB_blend_func_extended, GL_ARB_arrays_of_arrays, GL_EXT_blend_func_separate, GL_ARB_texture_cube_map, GL_EXT_texture_array, GL_ARB_occlusion_query, GL_INTEL_map_texture, GL_ARB_compressed_texture_pixel_storage, GL_ARB_vertex_attrib_64bit, GL_EXT_framebuffer_object, GL_EXT_packed_pixels, GL_ARB_texture_env_dot3, GL_ARB_map_buffer_alignment, GL_ARB_provoking_vertex, GL_EXT_blend_equation_separate, GL_ARB_color_buffer_float, GL_EXT_texture_env_add, GL_EXT_texture_env_combine, GL_SGIS_texture_edge_clamp, GL_ARB_conservative_depth
14:27:46.722 [rendering.opengl.shader.support]: Shaders are supported.
14:27:46.736 [dataCache.rebuild.explicitFlush]: Cache explicitly flushed with shift key. Rebuilding from scratch.
14:27:46.736 [searchPaths.dumpAll]: Unrestricted mode - resource paths:
    Resources
    C:\Oolite/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns
    ../AddOns
    C:\Oolite/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Norby.Towbar.oxz
    C:\Oolite/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Svengali.BGS.oxz
    C:\Oolite/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Thargoid.CargoShepherd.oxz
    C:\Oolite/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Wildeblood.ai_trading.oxz
    C:\Oolite/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Wildeblood.AI_Trading_Legality.oxz
    C:\Oolite/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Wildeblood.ai_trading_purchase_book.oxz
    ../AddOns/Cabal_Common_Library_1.7.1.oxz
    ../AddOns/tws_satnav.oxp
14:27:46.960 [shipData.load.begin]: Loading ship data.
If script includes

Code: Select all

"use strict";
this.startUp = function()
{
	this._finalDestination = -1;
	if(missionVariables.tws_satnav_finalDestination === null)
	{
		log("hi","null");
	}

	if(missionVariables.tws_satnav_finalDestination)
	{
		this._finalDestination = missionVariables.tws_satnav_finalDestination;
	}
}
Then the log is:-

Code: Select all

Opening log for Oolite version 1.80 (x86-64) under Windows 6.2.9200  64-bit at 2014-10-29 14:31:30 +0000.
8 processors detected.
Build options: OpenAL, new planets.

Note that the contents of the log file can be adjusted by editing logcontrol.plist.

14:31:30.624 [dataCache.rebuild.explicitFlush]: Cache explicitly flushed with shift key. Rebuilding from scratch.
14:31:30.710 [display.mode.list.native]: Windows native resolution detected: 1366 x 768
14:31:30.781 [joystick.init]: Number of joysticks detected: 0
14:31:30.781 [rendering.opengl.version]: OpenGL renderer version: 4.0.0 ("4.0.0 - Build 10.18.10.3316"). Vendor: "Intel". Renderer: "Intel(R) HD Graphics 4000".
14:31:30.781 [rendering.opengl.extensions]: OpenGL extensions (159):
GL_ARB_framebuffer_sRGB, GL_ARB_transform_feedback_instanced, GL_ARB_depth_texture, GL_ARB_texture_env_add, GL_ARB_internalformat_query2, GL_ARB_draw_instanced, GL_ARB_half_float_vertex, GL_EXT_texture3D, GL_EXT_compiled_vertex_array, GL_ARB_gpu_shader_fp64, GL_EXT_texture_shared_exponent, GL_ARB_framebuffer_object, GL_EXT_separate_specular_color, GL_EXT_shadow_funcs, GL_ARB_gpu_shader5, GL_EXT_rescale_normal, GL_ARB_texture_rgb10_a2ui, GL_ARB_transpose_matrix, GL_ARB_texture_cube_map_array, GL_ARB_texture_compression_rgtc, GL_ARB_multisample, GL_ARB_half_float_pixel, GL_EXT_stencil_two_side, GL_ARB_texture_border_clamp, GL_ARB_texture_non_power_of_two, GL_ATI_separate_stencil, GL_ARB_shading_language_packing, GL_EXT_bgra, GL_ARB_sync, GL_ARB_compatibility, GL_ARB_sampler_objects, GL_SUN_multi_draw_arrays, GL_EXT_clip_volume_hint, GL_ARB_map_buffer_range, GL_ARB_vertex_shader, GL_ARB_shader_objects, GL_NV_texgen_reflection, GL_EXT_multi_draw_arrays, GL_ARB_vertex_program, GL_ARB_get_program_binary, GL_ARB_base_instance, GL_INTEL_performance_queries, GL_ARB_texture_float, GL_ARB_draw_buffers_blend, GL_ARB_texture_compression_bptc, GL_ARB_fragment_coord_conventions, GL_EXT_stencil_wrap, GL_EXT_texture_swizzle, GL_ARB_shader_precision, GL_ARB_uniform_buffer_object, GL_NV_primitive_restart, GL_EXT_framebuffer_blit, GL_ARB_vertex_array_bgra, GL_ARB_texture_gather, GL_ARB_texture_compression, GL_KHR_debug, GL_ARB_vertex_array_object, GL_EXT_blend_color, GL_ARB_texture_query_lod, GL_EXT_blend_minmax, GL_EXT_texture_integer, GL_ARB_texture_swizzle, GL_EXT_gpu_shader4, GL_ARB_sample_shading, GL_ARB_shader_bit_encoding, GL_EXT_transform_feedback, GL_EXT_texture_compression_s3tc, GL_ARB_tessellation_shader, GL_ARB_occlusion_query2, GL_ARB_debug_output, GL_ARB_timer_query, GL_ARB_depth_clamp, GL_ARB_point_sprite, GL_EXT_abgr, GL_ARB_vertex_buffer_object, GL_NV_blend_square, GL_ARB_instanced_arrays, GL_EXT_framebuffer_multisample, GL_NV_conditional_render, GL_ARB_multitexture, GL_ARB_seamless_cube_map, GL_ARB_copy_buffer, GL_EXT_texture_storage, GL_ARB_draw_elements_base_vertex, GL_ARB_geometry_shader4, GL_ARB_transform_feedback2, GL_ARB_multi_draw_indirect, GL_ARB_transform_feedback3, GL_ARB_viewport_array, GL_ARB_shadow, GL_EXT_blend_subtract, GL_ARB_fragment_program_shadow, GL_ARB_internalformat_query, GL_ARB_texture_storage, GL_ARB_window_pos, GL_ARB_texture_multisample, GL_EXT_texture_lod_bias, GL_IBM_texture_mirrored_repeat, GL_EXT_texture_snorm, GL_ARB_texture_env_crossbar, GL_ARB_point_parameters, GL_ARB_depth_buffer_float, GL_EXT_texture_sRGB_decode, GL_ARB_shading_language_420pack, GL_ARB_vertex_type_2_10_10_10_rev, GL_ARB_robustness, GL_ARB_texture_rg, GL_EXT_texture_edge_clamp, GL_EXT_texture_sRGB, GL_ARB_texture_env_combine, GL_WIN_swap_hint, GL_ARB_fragment_program, GL_ARB_explicit_attrib_location, GL_EXT_packed_float, GL_ARB_texture_buffer_object_rgb32, GL_EXT_texture_filter_anisotropic, GL_EXT_draw_range_elements, GL_ARB_pixel_buffer_object, GL_ARB_shader_subroutine, GL_ARB_draw_indirect, GL_EXT_packed_depth_stencil, GL_ARB_texture_rectangle, GL_ARB_separate_shader_objects, GL_EXT_geometry_shader4, GL_EXT_fog_coord, GL_ARB_ES2_compatibility, GL_SGIS_texture_lod, GL_ARB_texture_buffer_range, GL_3DFX_texture_compression_FXT1, GL_EXT_gpu_program_parameters, GL_ARB_fragment_shader, GL_ARB_shader_atomic_counters, GL_ARB_shading_language_100, GL_EXT_secondary_color, GL_ARB_draw_buffers, GL_SGIS_generate_mipmap, GL_EXT_draw_buffers2, GL_EXT_texture_rectangle, GL_ARB_program_interface_query, GL_ARB_blend_func_extended, GL_ARB_arrays_of_arrays, GL_EXT_blend_func_separate, GL_ARB_texture_cube_map, GL_EXT_texture_array, GL_ARB_occlusion_query, GL_INTEL_map_texture, GL_ARB_compressed_texture_pixel_storage, GL_ARB_vertex_attrib_64bit, GL_EXT_framebuffer_object, GL_EXT_packed_pixels, GL_ARB_texture_env_dot3, GL_ARB_map_buffer_alignment, GL_ARB_provoking_vertex, GL_EXT_blend_equation_separate, GL_ARB_color_buffer_float, GL_EXT_texture_env_add, GL_EXT_texture_env_combine, GL_SGIS_texture_edge_clamp, GL_ARB_conservative_depth
14:31:30.832 [rendering.opengl.shader.support]: Shaders are supported.
14:31:30.844 [dataCache.rebuild.explicitFlush]: Cache explicitly flushed with shift key. Rebuilding from scratch.
14:31:30.845 [searchPaths.dumpAll]: Unrestricted mode - resource paths:
    Resources
    C:\Oolite/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns
    ../AddOns
    C:\Oolite/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Norby.Towbar.oxz
    C:\Oolite/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Svengali.BGS.oxz
    C:\Oolite/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Thargoid.CargoShepherd.oxz
    C:\Oolite/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Wildeblood.ai_trading.oxz
    C:\Oolite/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Wildeblood.AI_Trading_Legality.oxz
    C:\Oolite/oolite.app/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.Wildeblood.ai_trading_purchase_book.oxz
    ../AddOns/Cabal_Common_Library_1.7.1.oxz
    ../AddOns/tws_satnav.oxp
14:31:31.069 [shipData.load.begin]: Loading ship data.
14:31:32.110 [startup.complete]: ========== Loading complete in 1.45 seconds. ==========
14:31:34.122 [exit.context]: Exiting: Exit Game selected on start screen.
14:31:34.126 [gameController.exitApp]: .GNUstepDefaults synchronized.

Closing log at 2014-10-29 14:31:34 +0000.

Re: Galactic Sat Nav

Posted: Wed Oct 29, 2014 2:52 pm
by Norby
wyn_sleeman wrote:
if(missionVariables.tws_satnav_finalDestination === null)
log("hi","null");

Is that a javascript thing? Or an Oolite javascript thing?
No, adding a simple line break into a good place should not cause anything. I tested your whole script and working well at me in Linux 32bit. Please do another checks in a rebooted windows to make sure the crash is persistent and really caused by just this change.