57 Commits

Author SHA1 Message Date
Jens Ayton
a655c81d87 Work on JavaScript API update: updated all property callbacks.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3850 127b21dd-08f5-0310-b4b7-95ae10353056
2010-12-12 20:13:39 +00:00
Jens Ayton
75381a4f59 Work on JavaScript API update; all use of JSExtendedClass/JSEqualityOp removed. ==/!= no longer works for distinct Oolite-defined objects. This primarily affects Vector3D and Quaternion.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3849 127b21dd-08f5-0310-b4b7-95ae10353056
2010-12-12 19:10:23 +00:00
Jens Ayton
07c6aa06c9 Work on JavaScript API update.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3848 127b21dd-08f5-0310-b4b7-95ae10353056
2010-12-12 18:58:07 +00:00
Jens Ayton
1242dfdd67 Work on JavaScript API update.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3845 127b21dd-08f5-0310-b4b7-95ae10353056
2010-12-12 16:22:26 +00:00
Marc
954abef139 * escape pods changes:
- while inside the escape pod, stopped js from accessing Ship & PlayerShip properties of player.ship (while in the pod, we still had access to all the equiment inside the original player.ship, etc...)
- new js function: player.setEscapePodDestination() - takes 1 argument to override the standard destination (main station, or none if in witchspace). Accepts either null/false, a specific station inside the current system, or the string 'NEARBY_SYSTEM' to send the rescued capsule to a nearby system's main station - can only be used while inside the pod, via one of the 2 pod triggered events (or the debug console!).
- collision when docking: removed second AI collision message, to prevent carriers from moving about in reaction to a bad docking.
- some cleanup & minor code optimisation...


git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3815 127b21dd-08f5-0310-b4b7-95ae10353056
2010-11-14 22:19:28 +00:00
Jens Ayton
b775065f76 Profiling everywhere.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3634 127b21dd-08f5-0310-b4b7-95ae10353056
2010-06-27 19:35:22 +00:00
Jens Ayton
4d3849a609 Fixed a fix for Mac OS X. Where does that leave Linux?
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3627 127b21dd-08f5-0310-b4b7-95ae10353056
2010-06-27 15:33:12 +00:00
Nikos Barkas
2918deeccc Fixed compile error under Windows.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3625 127b21dd-08f5-0310-b4b7-95ae10353056
2010-06-27 14:14:03 +00:00
Jens Ayton
18bebd07c7 Started deploying profiling and thread-safety macros - even if they don't work in Windows, they're useful elsewhere. Profiling is now used on all Vector3D and Quaternion methods, all System methods, and the hot path for System.addShips(). Disabled aggressive JS GC testing in Mac TestRelease builds, so that profiling results are vaguely useful.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3623 127b21dd-08f5-0310-b4b7-95ae10353056
2010-06-27 13:25:08 +00:00
Jens Ayton
5ea3215c1c Cleaned up JS exception wrapper stuff.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3588 127b21dd-08f5-0310-b4b7-95ae10353056
2010-06-22 18:08:10 +00:00
Jens Ayton
6f9f338732 Fixed a bunch of syntax errors flagged by Apple-Clang 1.5. Switched default compiler for 64-bit Mac OS X build to LLVM-GCC (because using Clang causes a linker crash). To build under Leopard, it will be necessary to change back; see src/Cocoa/oolite-targets.xcconfig.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3587 127b21dd-08f5-0310-b4b7-95ae10353056
2010-06-21 23:08:06 +00:00
Jens Ayton
32e1884e05 Groovy yet horrible macros to automate conversion of ObjC macros to JavaScript macros, and also profile individual native callbacks. More info in the Top Secret Mailing List Treehouse.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3586 127b21dd-08f5-0310-b4b7-95ae10353056
2010-06-21 18:07:47 +00:00
Jens Ayton
2d7a435327 Include full path in stack trace for files named script.js/. Extended time limit for script loading and startUp().
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3550 127b21dd-08f5-0310-b4b7-95ae10353056
2010-06-15 22:36:48 +00:00
Jens Ayton
00ffca2f26 Implemented rudimentary stack backtrace for JavaScript.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3548 127b21dd-08f5-0310-b4b7-95ae10353056
2010-06-15 20:28:22 +00:00
Jens Ayton
844b875396 Added basic profiling facility for JavaScript. Examples of use:
console.profile(function(){  console.shaderMode = "SHADERS_OFF";  });
or
    :profile console.shaderMode = "SHADERS_OFF"
either of which print a string like:
    0.94239 seconds (2.00559e-05 seconds JavaScript, 0.94237 seconds extension
    time)


git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3543 127b21dd-08f5-0310-b4b7-95ae10353056
2010-06-15 16:28:42 +00:00
Jens Ayton
0e9ee84562 Added some documentation for JS script limiter in OOJavaScriptEngine.h. Pause limiter while spawning ships or planets, and while searching entities.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3529 127b21dd-08f5-0310-b4b7-95ae10353056
2010-06-13 19:13:09 +00:00
Jens Ayton
528abd2ac6 Implemented time limiter for JavaScript scripts. Set to be extremely aggressive for testing.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3528 127b21dd-08f5-0310-b4b7-95ae10353056
2010-06-13 18:51:07 +00:00
Jens Ayton
b2220bf4f8 Fixed crash with repeated transient uses of JS EquipmentTypes - triggered by Cataclysm and almost certainly lots of others.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3496 127b21dd-08f5-0310-b4b7-95ae10353056
2010-06-11 10:36:08 +00:00
Jens Ayton
dcd183bae9 Fixed bad GC roots in OOJSFunction. Avoid extra allocation in JS Timer constructor.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3472 127b21dd-08f5-0310-b4b7-95ae10353056
2010-06-06 12:31:51 +00:00
Jens Ayton
073b32262e Don't use named JS GC roots in release builds.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3290 127b21dd-08f5-0310-b4b7-95ae10353056
2010-05-05 17:11:11 +00:00
Marc
f7affbc01a MissionScreen RFC part II:
* missionScreenOpportunity now fires up after loading a savegame & at startup, as well as after docking.
* fixed a mission callback related crash.
* fixed clash with fines and mission screens.
* name change for new mission.runScreen parameter shipModel: is now showModel.
* the foreground & background images now display correctly in relation to the spinning demo ship.

- code cleanup
- added missing keys to the shipdata entry schema


git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@2758 127b21dd-08f5-0310-b4b7-95ae10353056
2009-11-17 18:27:11 +00:00
Marc
7bb627586f * New mission.setInstructions to go with mission.setInstructionsKey, analogous to the mission.addText / mission.addTextKey pair.
* mission RFC part I. Initial implementation of the changes proposed in the forum. Will need tweaking.
* added new parameters to mission: title & foregroundImage (identical to backgroundImage atm)
* assorted code tidying up.


git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@2750 127b21dd-08f5-0310-b4b7-95ae10353056
2009-11-15 00:24:23 +00:00
Marc
89df01f9bb * fix: js timers should now stop and be garbage collected when the script they're attached to goes out of scope.
* fix: timer related windows DEP crashes should now be a thing of the past. Tested with timer-crash-test oxp & windows XP Data Execution Prevention turned on.

Both fixes seem fine, but we'll need to test them thoroughly.

git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@2724 127b21dd-08f5-0310-b4b7-95ae10353056
2009-11-06 03:14:32 +00:00
Jens Ayton
fd530bd5c6 Workaround for a nasty little SpiderMonkey bug/misfeature (supposedly fixed in 1.8): converting a JSObject or jsval to a JSFunction discards its context information, so effectively callbacks implemented using JS_CallFunction() were not closures. The workaround is to use jsvalues and JS_CallFunctionValue() instead.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@2404 127b21dd-08f5-0310-b4b7-95ae10353056
2009-09-05 20:21:45 +00:00
Jens Ayton
6aaf7a1e75 Committed unspeakable necromancy on the graveyard of the repository.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@2331 127b21dd-08f5-0310-b4b7-95ae10353056
2009-08-29 23:09:22 +00:00
Jens Ayton
999fe7e969 Trying to convince svn that this deleted directory is really deleted.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@2330 127b21dd-08f5-0310-b4b7-95ae10353056
2009-08-29 22:50:59 +00:00
Marc
021e398a64 * procedural texturing for planets reset to OFF by default.
* bugfix: JS system.info.xx & system.infoForSystem([present galaxy],[system number]).xx are readable, as originally intended. infoForSystem now returns null - and a warning - if trying to access any info outside the present galaxy.
* bugfixed the 'nil' javascript delayed crash described in http://aegidian.org/bb/viewtopic.php?p=8271182711 - required extensive code replace.

git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@2282 127b21dd-08f5-0310-b4b7-95ae10353056
2009-08-12 23:51:16 +00:00
Jens Ayton
8d22e3c41c Work on cleaning up Clang Static Analyzer diagnostics. In particular, moved away from redundant and broken JSFooGetFoo functions.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1850 127b21dd-08f5-0310-b4b7-95ae10353056
2008-11-10 23:41:00 +00:00
Jens Ayton
b148cfd85d More work on JavaScript error checking. More rigourous! More informative! More not buggy! And, conversely, probably also more buggy. I've almost certainly broken something silly. Also moved JS nova-related functionality into Sun.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1648 127b21dd-08f5-0310-b4b7-95ae10353056
2008-05-23 07:51:00 +00:00
Jens Ayton
3c82f379e0 Fix for incorrect error handling in OOJSVector and OOJSQuaternion. Only 20 pseudo-classes left to handle! Also fixed Quaternion.rotate(), this time for real.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1646 127b21dd-08f5-0310-b4b7-95ae10353056
2008-05-20 17:15:41 +00:00
Jens Ayton
0bda7466a6 Changes to pave the way for JavaScript 1.8 upgrade.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1642 127b21dd-08f5-0310-b4b7-95ae10353056
2008-05-18 16:22:00 +00:00
Jens Ayton
6521c91b02 Added swathes of pointless and annoying type casts to placate buggy gnu-gcc ObjC front end. Also fixed JS player.alertEnergy and player.alertHostiles under GNUstep.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1603 127b21dd-08f5-0310-b4b7-95ae10353056
2008-05-01 01:02:57 +00:00
Jens Ayton
fe418babea Tested under a stricter compiler and fixed some warnings. Removed -[OOSound stop] under OS X, OOSound's an OOMusic's pause/resume and related methods, which have done nothing under OS X since pre-1.65; all call sites have been #if 0-ed out, and need to be replaced with use of OOSoundSource. -[OOSound stop] is still there in the SDL implementation, but is for the use of OOBasicSoundSource only. May have broken build for SDL by fiddling with prototypes. Removed all uses of deprecated-in-OS-X methods -[NSString cString] and -[NSString lossyCString].
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1464 127b21dd-08f5-0310-b4b7-95ae10353056
2008-03-07 20:09:56 +00:00
Jens Ayton
a420a4dbe6 Global JavaScript methods (which aren't constructors) now have names starting with lowercase letters, in accordance with JavaScript norms. There are compatibility aliases for the old forms. Log() and LogWithClass() merged into single log(). All JavaScript compatibility aliases for deprecated forms are now implemented in JavaScript, in the new oolite-global-prefix.js script. Changed all copyright notices regarding the project as a whole from 2004-2007 to 2004-2008.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1414 127b21dd-08f5-0310-b4b7-95ae10353056
2008-02-24 21:07:20 +00:00
Jens Ayton
f11b6fae14 Implemented JS sound interface. Moved some more generic JS ObjC wrapper stuff into OOJavaScriptEngine.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1340 127b21dd-08f5-0310-b4b7-95ae10353056
2008-02-03 02:16:23 +00:00
Jens Ayton
3fbc24887d * All ships now have a JavaScript script attached, allowing JS scripts to
add behaviours to any ship.
* Legacy script_actions, setup_actions, launch_actions and death_actions
  handled through default JavaScript script.
* In order to implement the above, JS Ship now has a runLegacyScriptActions
  method. This is not to be exposed as an "official" method, though, since
  we might want to change the mechanism -- for instance, to "compile"
  legacy scripts into JS. Handling dynamically-generated legacy scripts in
  that case would be a significant complication.
* Updates for Mac OS X 10.5 "Leopard".
  - Errors on reading/writing plist will not cause a crash if building
    against the Leopard SDK. (I have no intention of requiring Leopard any
    time soon, but future-proofing is good.)
  - OOWeakReference is now more efficient when running under Leopard, by
    implementing the new "fast forwarding" mechanism.
  - Threads now have names set under Leopard, which may provide debugging
    advantages.
  - Fixed some new build warnings for new version of apple-gcc.
  - Updated type declarations to identify Oolite saved games as property
    lists.
* Cleaned up PlayerEntityControls.m somewhat. Moved method declarations
  into files, fixed indentation, broke up monster giant method of doom.
* Script-generated asteroids now behave like system populator-generated
  asteroids (As Seen on BB[TM]).
* Minor optimizations and simplifications of legacy script engine.
* JS System.filteredEntities() now has sensible behaviour if predicate
  throws an exception: the predicate is not called again, and null is
  returned. The exception is reported and not rethrown.


git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1240 127b21dd-08f5-0310-b4b7-95ae10353056
2007-11-23 15:04:14 +00:00
Jens Ayton
c69733ac93 Changed to using a pool of JavaScript contexts instead of a single one, so that JS -> ObjC -> JS call chains work. I'm not sure I fully trust this, but it appears to work. Need to think up some serious stress tests.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1207 127b21dd-08f5-0310-b4b7-95ae10353056
2007-10-09 18:02:18 +00:00
Jens Ayton
d675db1622 JS entity-searching functions now return results sorted by proximity to reference entity, if specified. Cleaned up implementation, too.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1200 127b21dd-08f5-0310-b4b7-95ae10353056
2007-10-08 12:06:39 +00:00
Jens Ayton
160cd8b94d Implemented JS class Planet. Added JS System attributes mainPlanet, sun, planets and allShips, and methods shipsWithPrimaryRole(), shipsWithRole(), entitiesWithScanClass() and filteredEntities() (the latter disabled due to an architectural flaw -- we need more than one JSContext). In support of this, added/exposed generic predicate-based entity counters and getters to Universe.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1198 127b21dd-08f5-0310-b4b7-95ae10353056
2007-10-07 21:41:18 +00:00
Jens Ayton
9994475a5a Fixed Mac debug console. Added auto-generated stripped-down debug.oxp to trigger TCP console support.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1192 127b21dd-08f5-0310-b4b7-95ae10353056
2007-10-06 13:25:59 +00:00
Jens Ayton
3c16a7cdaf Added clearMissionScreen scripting method (legacy and JS). Scripting tweaks. Ported trumble mission to JavaScript. Attempted to address JS Ship.escorts bug but couldn't reproduce it.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1187 127b21dd-08f5-0310-b4b7-95ae10353056
2007-09-29 12:27:31 +00:00
Jens Ayton
fca7042527 More consistent use of JS-friendly description mechanism. Cleaned out redundant and unused particle types, and improved encapsulation of ParticleEntity.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1178 127b21dd-08f5-0310-b4b7-95ae10353056
2007-09-16 11:58:13 +00:00
Jens Ayton
0da77044e5 Implemented JS Timer object. Updated priority queue test case.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1173 127b21dd-08f5-0310-b4b7-95ae10353056
2007-09-15 13:53:30 +00:00
Jens Ayton
a265c06344 * Work on generic-ish JavaScript object bridging.
* Fixed potential crashing bug in JS memory management (OOJSScript was not releasing its JS GC root).
* Fixed bug with several shipdata.plist settings being ignored in StationEntitys (bug #11684).
* Added JS Oolite object for app and JS version number checking; may add other facilities.
* Require latest version of SpiderMonkey (Gecko 1.8/FireFox 2 version) with JavaScript 1.7 support, built with JS_C_STRINGS_ARE_UTF8. 
*Made SpiderMonkey build as a subproject in Xcode for ease of debugging.
* Further fiddling with Mac debug console.
* Added has_npc_traffic attribute to StationEntity.


git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1157 127b21dd-08f5-0310-b4b7-95ae10353056
2007-09-04 23:04:09 +00:00
Jens Ayton
b455b2b8fd Interactive JS console working, with some bugs (failure to convert certain types to string, bugs in Oolite NSArray <-> JS array bridge). Basic macro system (implemented in JavaScript) works. A few debugging functions.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1146 127b21dd-08f5-0310-b4b7-95ae10353056
2007-08-25 18:15:41 +00:00
Jens Ayton
a1451d4a3e Dicking around with Mac-specific debug stuff instead of doing real work. Added JavaScript console window (intended to be interactive, but isn't yet; shows errors, warnings and JS-generated log messages a bit more prettily than the standard log). Added F-Script support (F-Script is not yet another OXP scripting language, it's an interactive language integrated with the ObjC runtime, making a useful debug tool for poking around).
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1141 127b21dd-08f5-0310-b4b7-95ae10353056
2007-08-25 01:15:40 +00:00
Jens Ayton
0ffb248771 For the past two weeks I've been procrastinating from fixing a double-free bug in the JS accessor for Ship.escorts (or, more precisely, in the code constructing a JS array). The bug was in r1129, so not checking stuff in doesn't really make much sense.
Fixes in that time:
* Clean, integrated model for JS ship scripts and world scripts.
* Player ships support JS ship scripts (but not ones synthesized from legacy actions).
* Subentity shader uniform bindings bind to owning ship as intended.
* Fixed like_ship recursion limiter in -[Universe getDictionaryForShip:].
* Fixed a bug in material configuration parsing.
* Fixed a material bug where a shader material with textures, followed by a shader material with no textures, followed by a basic material with no textures would leave a texture bound.
* Cleaned up NSArray -> JS array conversion, without fixing aforementioned bug.
* Made JS Ship property "target" read/write, and made property setting work.
* Added JS Quaternion.random() static method.


git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1136 127b21dd-08f5-0310-b4b7-95ae10353056
2007-08-19 23:05:48 +00:00
Jens Ayton
892c271501 Split JS system into separate file. Started on support for ship scripts (incomplete).
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1129 127b21dd-08f5-0310-b4b7-95ae10353056
2007-08-05 11:47:09 +00:00
Jens Ayton
5c6e674fa2 Made OOJavaScriptConversion an informal protocol with a default implementation (returning JSVAL_NULL) for NSObject. Work on rewriting JS player proxy, moving properties up into Ship and Entity as appropriate. Reimplemented player.call(), allowing it to return values, and applying to entities in general. Ensured correct and consistent type conversion in JavaScript property getters/setters. Fixed bug where script-awarded missiles/mines would use two slots. Made blowUpStation actually blow up the station.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1119 127b21dd-08f5-0310-b4b7-95ae10353056
2007-08-02 16:41:55 +00:00
Jens Ayton
15255d19c0 JavaScript: entity class hierarchy now reflected in JS object prototype relationships (player is a Player is a Ship is an Entity). Fix for enery units being unbuyable; moved some hardcoded equipment requirements into equipment.plist; made -[PlayerEntity hasExtraEquipment:] accept arrays and sets of strings as well as individual strings.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1118 127b21dd-08f5-0310-b4b7-95ae10353056
2007-08-02 00:31:44 +00:00