Mercurial > projects > mde
view doc/jobs @ 10:4c3575400769
DefaultData largely rewritten with unittest, SDL input event handling completed with unittest, changes to Init threading.
Init threads now catch own exceptions.
Doc: assigned some inputID devisions.
Added support for remaining SDL events.
Input axes' output is now stored with a short instead of a real.
Input unittest written (for SDL event handling).
Rewrote most of mde.mergetag.defaultdata using generic programming to generate read & write rules for all types. As a direct result, defaultdata can now write properly.
DefaultData unittest written (also provides testing for mergetag read/write).
Moved mde.text.parse/format to tango.scrapple.text.convert.parseTo/parseFrom with many changes.
committer: Diggory Hardy <diggory.hardy@gmail.com>
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Mon, 18 Feb 2008 11:54:56 +0000 |
parents | 1885a9080f2a |
children | b940f267419e |
line wrap: on
line source
In progress: To do: * Write Input unittests; remove untested notes * Why doesn't input.config filtering via headers "Configs" work? * add options support; in particular for whether or not to use threads (and adjust Init to use this). * OutOfMemoryException is not currently checked for − it should be at least in critical places (use high-level catching of all errors?). * Sensitivity adjustments. From es_a_out: /+ FIXME: revise. + I can't see any point using HALF_RANGE here, since it should really be used dependant on + the device attached, not the axis. Also what about adjusted range like X3's throttle? + + Sensitivity: is this the right place to adjust it? For things like throttle where the + ends of the interval must remain fixed, multiplying cannot be used to adjust and adjusting + the curve via a power function doesn't seem to be what we want. For things where the + end points needn't remain fixed, multiplying seems the right thing to do, but cannot be + done here since we don't know the end points can be changed. real y = x; uint conf = s.pop(); enum : uint { HALF_RANGE = 0x8000_0000u, SENSITIVITY = 0x0080_0000u, } // Convert ranges into standard intervals (with or without reverse values) if (conf & HALF_RANGE) y = (y + 32767.0) * 1.5259254737998596e-05; // range 0.0 - 1.0 else y *= 3.0518509475997192e-05; // range -1.0 - 1.0 real a; if (conf & SENSITIVITY) a = s.pop(); /+ When a global sensitivity is available (possibly only use if it's enabled)... else a = axis.sensitivity; y = sign(y) * pow(abs(y), a); // sensitivity adjustment by a +/ myThis.axis[cast(inputID) s.pop()] = y; +/ Done (for git log message): * Init threads now catch own exceptions. * Assigned some inputID devisions. * add remaining SDL event support * Rewrote most of mde.mergetag.defaultdata using generic programming to generate read & write rules for all types. As a result, defaultdata can now write properly. * Axis output now stored with short instead of real. * Input unittest * Moved mde/text to scrapple * DefaultData unittest. Then commit.