Monday, October 31, 2011

Gizmo Change Log - 11.5.25 > 11.10.31

Below is a summary of the changes Gizmo has seen in the last few months.
There are additional items that have not been listed here because the finer details are still being worked out.
  • Add gui.setWidgetSize(l,t,w,h)
  • Add gui.getWidgetSize() and gui.getWindowSize()
  • "Adds code to change X-Planes widget behaviours. Attempts to make focus change from mouse clicks feel more evolved."
  • Add OnMouseWheel event support for custom widget regions.
  • Nagware dialog converted to smaller window with no minimum time on screen, endlessly re-shows at random intervals between 0 and 300 seconds.
  • Fixed dox for trig.distanceBetweenWorldPoints() - thanks Theo.
  • Fixed bug with timer.reset( timer_id ) - thanks Tom.
  • Fixed bug with URL-encoded chars being sent to system() calls.
  • Added a second low-priority flight-loop-callback to handle low priority tasks.
  • Adds code to avoid creating datarefs with duplicate names.
  • Adds gui.setFocus() and gui.blur()
  • Mutes xp.newCommand() function from outputing various debug info to the Log.txt
  • Cleaned up gui.apu handler code, better cleaner focus handling.
  • Created "About Gizmo" menu item which calls into Script to display a nice Gizmo-driven GUI for credit call-outs.
  • Created "Developer" menu and buried some dev-tool items inside it.
  • Started adding performance counters so that performance profiling can be done on scripts. (alpha)
  • Adds new dref.api which includes near-full access to the Array-Datarefs SDK functions.
  • Modified the way we use std::vectors, should reduce RAM usage/thrash.
  • Adds gizmo.getBuildDate()
  • Adds code to help pinpoint GUI code erros with custom widgets; draws the name of the broken callback function that Gizmo can't find or can't run.
  • Adds new OnLiveryChanged() event and support functions: acf.getLiveryPath() and acf.getLiveryName() 
  • Adds additional code to various scripting API's to prevent C2D events due to syntax errors.
  • Adds nav.not_found type. Adds full wild-card support to nav.findNavAid()
  • Adds support for guiWindow_OnUpdate() event calls. Allows for clean place to update text box values, etc.
  • Adds code to allow gui.setWidgetValue() and gui.getWidgetValue() to work with radio-buttons and check-boxes.
  • Fixes bug with creating gui.checkboxes and gui.radiobuttons, can now specify the default "checked" value when creating the element.
  • MAJOR rework of the fmc.api. Please review your code.
  • Adds timer-delay to the GUI Haiku Error box, should allow meaningful data capture in cases where we have a clash like that with the "Dream Engine" sound plugin where the box is re-shown very rapidly.

Wednesday, May 25, 2011

Gizmo 11.5.25

  • Fixes nagware dialog not respecting serial numbers.

  • Nagware dialog can now be dismissed again after a delay instead of forcing itself permanently onto the screen.

  • Now using "lowest common denominator" OpenAL example code so will hopefully work on Windows machines that have poor sound drivers.

  • Fixed xp.getDataref() so that it works with sim/weather/ datarefs that have "part number notation"... ( square brackets [ ] ) in the dataref names.

  • Additional physics.api functions are now active, review API docs for more info.
  • NEW: glu.api - GL Utilities.
  • Auto release camera control on reboot. May affect other plugins but better than leaving the camera locked by a dud script.
  • Nagware dialog now always-on-top and always-centered. Can be dismissed after short delay or registration.

Thursday, May 19, 2011

Gizmo 11.5.18

  • Tweaked OpenAL again after re-reading SDK guidelines.
    Please report any clashes, thanks!

  • New: gui.getCustomWidgetMouseXY()
    Returns canvas-relative mouse coords for drawing in Custom Widgets more easily.

  • Fixed: Event: OnMouseWheel( x,y, wheel,clicks )
    This event hook has been documented and tested in sim.
    Custom mouse-wheel functionality is now a few lines of code away.

  • New: gizmo.getActivated()
    Returns: boolean; true if a valid serial number is in use, false if not registered.

  • New:
    • acf.getPositionGL()
    • acf.getPosition()

  • Fixed: Resolved custom mouse cursor bug.

  • Fixed: bug with acf.getSessionTime()

  • Builds on Linux again!

Friday, May 6, 2011

Gizmo 11.5.6 Changes

  1. Modified OpenAL code, hopefully resolves plugin clash. Not tested, but the code change was "OpenAL context sharing" related.

  2. Added: utils.popWebBrowser( url )
    - Can be used to open the default web browser pointed at the specified URL.

  3. Fixed and tested gfx.setMaskingTape( x,y, w,h )

  4. New Event: OnFirstFrame
    A new event was added to allow for a consistent place for authors to perform init of their dataref defaults.
    This event is seperate from OnBoot and runs _AFTER_ the ACF has completed loading.

  5. Fixes acf.getKIAS() - now returns value in knots instead of meters/second.
    (Thanks Lukasz!)

Monday, April 25, 2011

Gizmo 11.4.24 Released

Gizmo 11.4.24 is now available for Mac and Windows - x86 CPU's only.

This is the first release of Gizmo to use the LuaJIT Virtual Machine.

LuaJIT does not support PPC "out of the box".
A PowerPC build of Gizmo 11.4.24 will be made available soon.

The PowerPC version is fully compatible with the LuaJIT enabled version.
Your scripts will still work fine, they just can't run as fast.

I consider this a non issue because PowerPC Macs are a long way behind in terms of performance anyway.

Download your updated plugin here:

Friday, April 22, 2011

Gizmo 11.4 Changes

Changes since Gizmo 11.3.15 that script authors should be aware of:
  1. Fixed bug on Mac where Gizmo can end up loaded twice and crash X-Plane.
  2. Added additional functions to plugins.api
  3. Added matrix.api
  4. Fixed OnAircraftUnload event bug.
  5. Fixed bugs with memcache.api
  6. Added some more protection to check argument counts being passed in from Lua scripts.
  7. Added utils.getStringFromCPointer( pointer_address ) function.
  8. Added ability to reboot Gizmo's script engine using an Inter-Plugin-Message.
  9. Now using LuaJIT Virtual Machine on Intel CPUs.
  10. Fixes custom-command event system, foo_OnStart() should now fire properly.
  11. Fixes camera.setZoom()
  12. Fixes OpenGL tex-units usage. Defaults to portable values.
  13. Added acf.getSessionTime() function to script API.
I consider Gizmo 11.4 to be frozen and an update release should be available in the next couple of days at most.

Sunday, January 30, 2011

Little Black Dress

Saturday, January 29, 2011


minor api change - firmware functions

gizmo.setFirmware() and gizmo.getFirmware() are dead functions as of 11.2

It's unlikely anyone used these.

OpenAL Software Driver

Today I had a user report that their sound card wasn't working with the Creative OpenAL drivers we recommend.

Their card is unable to render sound using hardware.

With a few minutes of Googling I found this via Wikipedia:

Looks like an entirely software based renderer for OpenAL and should hopefully get you out of trouble should you need it.

New firmware loader.

I've just re-worked the Gizmo firmware loader code so that it's basically the same as the rest of the scripting system to work with.

Where yesterday we had one huge fragile monolithic sacrifice-to-the-DRM-gods of a firmware system, we now have a nice clean easy to update modular system that's easy to write new tools for.

No secret altar rituals required.

If you've been looking at how to have your script run "all the time" for all your aircraft, things just got a whole lot easier.

Will ship with 11.2.

Thursday, January 27, 2011


Back in 2008 I ported the NASA "EngineSim" applet to C++ for use in a plugin.

Today I relocated the files I created in 2008 and uploaded them to the Gizmo source tree.

Hopefully we'll be able to get some of the math's from this:

...into some Gizmo scripts.

The C++ port of the EngineSim code is available here:

And some basic harness code to make it do something:

I make no claim to Copyright or I.P. over the EngineSim classes.
All I've done is port them from Java to C++.
Licenses are as stated in the files.

Wednesday, January 26, 2011

Are you there? Who's there?

Started adding basic inter-plugin messaging support. 
Gizmo can now react to messages from other .xpl plugins. 
They can: 
  • Inject lua script as C-strings. 
  • Inject Lua blobs. (well, almost)
  • Send arbitrary commands in to a scripted function handler.
That last one is not real useful at the moment because the data comes across as two numbers.
I need to add another hook so we can just pass string messages into script handlers. Much more useful, easy to use.
The source code is in the unstable branch for now.
Gory details are here...
The idea behind this is to allow for other .XPL's to draw on Gizmos functionality if Gizmo is around. 
The secondary function is to "secure" chunks of script. 
A third party plugin can inspect the Gizmo.plugin and see if it appears to be trust-worthy before uploading payware script data.
This allows for a form of content protection, whether it uses a serial number, activation key or webcam facial recognition to "unlock" the protected content is another matter.

Wednesday, January 19, 2011

Doxygen output

I've invested a lot of time in documentation in the last few days. It's a good task for the summer heat.

I'm working towards a nice friendly Reference Manual - better than the X-Plugins Wiki stuff.

The Wiki works but it's becoming a chore, it's falling behind because it's "work" to keep it up to date.

So, here's some automated output, it's complete and up-to-date - if not very friendly to read.

Git on a Mac

If you're working with Git on a Mac do yourself a favour and check out "Tower".

Very very nice, free beta at the moment.

bug: gfx.drawObject(...)

Found and fixed a bug with the parameters for the function:

bug: gfx.drawObject(...)

Documentation on Wiki says params are: lat,lon,alt,p,r,h
Interncal C code was: lat,lon,alt,p, h, r

If you're trying to use this API and your results are garbage that's why.

Fixed in source, will appear in next public binaries.

Sunday, January 16, 2011

Gizmo 11 now builds on Linux.

Just updated the Makefiles and ran through a few tweaks - Gizmo is now building on Linux.

No public release yet but the Makefile has been updated in the git repo.
You'll have to tweak it a little for your own needs though.

Minor blackout..

Had a minor blackout earlier, lost network for a few hours, not even 3G was working.

Something serious failed somewhere.

Anyway, a few hours behind planned schedule, still put the time to use doing code housework while my battery ran down.

Massive amounts of code reworking been going on to make Gizmo's source code "other programmer" friendly.

Friday, January 14, 2011

Plugin Update: Gizmo 11.1.1 - Mac Universal

DRM free, built from GPLv3 Open Source code available now on Github.

No activations. No enrollments. No hassles.

Just fun.


Plugin Update: Gizmo 11.1.1 - Windows

Hot off the compiler comes the first public version of Gizmo Open Source.

This version has no DRM what-so-ever inside it.

No activations, no enrollments, no registrations, no lockouts.

Go for it.

Thursday, January 13, 2011

Gizmo goes ...Open Source?

Yep. Gizmo is now an Open Source project. GPLv3.

DRM has been removed.
Encryption keys have been censored.

Stand by for more details.

If you're looking at the Ohloh metrics wondering how the heck it came up with that number, here's a bit of insight:

Ohloh has totalled the entire project. All contributed source code.

Some of this is things like GLee.h, a massive auto-generated header file.
Other things like Lua 5.1.4 sources are included in there as well.

It's not just my personal contribution on the Ohloh bars, it's the total value of all the Open Source / Re-Usable software that went into the making of Gizmo.

I plan on doing an Ohloh-scan of the core parts of Gizmo a bit later on...

Product Activations Restored

Product activations for Corvalis and Falco products have been restored.

Gizmo customers stand by.