1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2024-11-25 17:53:47 +00:00
Commit graph

373 commits

Author SHA1 Message Date
fgenesis
d1778a97b8 wip, temp commit 2016-07-03 18:07:13 +02:00
fgenesis
4e37abd0f5 whoops forgot a file 2016-07-03 18:06:35 +02:00
fgenesis
34a1bcb70f Really use scancode names + little more cleanup 2016-07-03 15:48:40 +02:00
fgenesis
9414be864a Huge Game.cpp refactor and various other things
Started working on a tiny input/ActionMapper refactor,
then everything fell apart and i ended up doing this.
I'm sorry.

Pretty much untested because input mapping is broken right now,
will fix that next.
2016-06-30 02:58:55 +02:00
fgenesis
e2e7753226 Remove some more unused cruft 2016-06-26 00:39:48 +02:00
fgenesis
7494529bd0 Remove old pre-SDL2 rumble code for Linux
SDL2 is now ubiquitous on linux, and there is no reason to keep this around
2016-06-26 00:03:10 +02:00
fgenesis
a7c2d054a2 Begin joystick code refactor; some related cleanups and unused code removal 2016-06-25 23:59:34 +02:00
fgenesis
4534b68fc5 Remove instant quit on Ctrl+Alt+Q, allow Alt+Enter for fullscreen switch on OSX 2016-06-25 19:43:20 +02:00
fgenesis
548da72632 Merge branch 'master' into experimental
Conflicts:
	BBGE/SoundManager.cpp
	BBGE/SoundManager.h
2016-06-20 02:05:42 +02:00
fgenesis
84366ad533 hopefully fix build on gcc6, tiny cleanup
... in fact i forgot that much more cleanup was already done
on the experimental branch. whatever.
2016-06-20 01:56:27 +02:00
fgenesis
96206dd82a Fix yet another oopsie RenderObject::setTexture()
Didn't apply empty ("") texture when another texture was already set.
2016-06-19 00:42:13 +02:00
fgenesis
15c7776763 Remove TimeUpdateType enum and related code. Dynamic timestep was used all the time anyway. 2016-05-14 17:23:48 +02:00
fgenesis
9bb4226626 Remove RenderObjectLayer::sort() and related 2016-05-14 17:20:13 +02:00
fgenesis
65179870a9 Fix possible crash when loading applying a skeletal twice in one frame.
Possibly a regression from 300f326777.
2016-05-12 00:25:00 +02:00
fgenesis
d6dc3a8a09 Merge branch 'experimental' into moreclean
Conflicts:
	Aquaria/Avatar.cpp
	Aquaria/BoxElement.cpp
	Aquaria/BubbleRender.cpp
	Aquaria/FFTNotes.cpp
	Aquaria/StarRenderer.cpp
	Aquaria/WaterFont.cpp
	Aquaria/resource.h
	BBGE/AnimatedSprite.cpp
	BBGE/AnimatedSprite.h
	BBGE/BloomEffect.cpp
	BBGE/CShim.cpp
	BBGE/Collision.cpp
	BBGE/Collision.h
	BBGE/Core.cpp
	BBGE/Core.h
	BBGE/Cube.cpp
	BBGE/Cutscene.cpp
	BBGE/DFSprite.cpp
	BBGE/DFSprite.h
	BBGE/Datafile.cpp
	BBGE/Datafile.h
	BBGE/Flags.h
	BBGE/Interpolator.cpp
	BBGE/Light.cpp
	BBGE/Light.h
	BBGE/LightCone.cpp
	BBGE/Model.cpp
	BBGE/Model.h
	BBGE/OggStream.cpp
	BBGE/PackRead.cpp
	BBGE/PointSprites.cpp
	BBGE/RenderObject.cpp
	BBGE/SkeletalSprite.cpp
2016-05-10 18:40:01 +02:00
False.Genesis
0ced7c1d50 Merge pull request #27 from nbraud/unifdef
More cleanups
2016-05-10 10:20:36 +02:00
fgenesis
2f0940f1df Fix yet another oopsie RenderObject::setTexture()
Didn't apply empty ("") texture when another texture was already set.
2016-05-09 08:15:41 +02:00
fgenesis
e7791c5ddc Remove RenderObject::collisionRects.
Another vector that was always empty, optionally filled when specified
by a skeletal file, but none actually did this. Should be safe to remove.

Also small related optimization in Game::collideSkeletalVsCircle().
2016-05-07 01:00:16 +02:00
fgenesis
35a3888c94 Remove RenderObject::collidePosition and related code
This was always (0, 0) and optionally used for bones if defined in skeletal files.
None of the official skeletal files used this, so this should be safe to remove.
2016-05-07 00:47:45 +02:00
Nicolas Braud-Santoni
fb8732e97d
Eradicate remnents of BBGE_BUILD_GFLW & SDL 2016-05-05 20:24:42 +02:00
Nicolas Braud-Santoni
bb50895595
Removing Z2D_J2K texture option
Given that j2k-codec/ is nowhere to be found,
  this cannot possibly build.
2016-05-05 20:15:11 +02:00
fgenesis
51baa76816 Remove unused files 2016-05-05 20:09:39 +02:00
Nicolas Braud-Santoni
eb128e65a4 Remove commented-out code 2016-05-05 19:57:50 +02:00
Nicolas Braud-Santoni
0f39b825e1
Remove BBGE_BUILD_FMODEX option (always defined) 2016-05-05 15:45:31 +02:00
Nicolas Braud-Santoni
91c493344d
Removing obsolete build options
The game cannot work with those anyhow...

```c
 #undef BBGE_BUILD_IRRKLANG
 #undef BBGE_BUILD_OPENALOGG
 #undef BBGE_BUILD_XINPUT
 #undef BBGE_BUILD_DELAYXINPUT
```
2016-05-05 15:37:25 +02:00
Nicolas Braud-Santoni
9617bde3ec
Cleaning up RLT_* macros
```c
 #define RLT_FIXED 1
 #undef  RLT_DYNAMIC
 #undef  RLT_MAP
```
2016-05-05 15:21:44 +02:00
Nicolas Braud-Santoni
921e4ba101
Removing more commented-out, #if cruft 2016-05-05 04:52:51 +02:00
Nicolas Braud-Santoni
6bcee6a034
More cleanups.
```c
 #undef BBGE_BUILD_X360
 #undef BBGE_BUILD_GLFW
 #undef BBGE_BUILD_SDLMIXER
 #undef BBGE_BUILD_BASS20
```
2016-05-05 04:45:42 +02:00
Nicolas Braud-Santoni
276265be1d Eliminating obsolete #ifdefs and friends (#26)
The following options have been applied globally, using unifdef(1):
```c
 #undef BBGE_BUILD_DIRECTX

 #define BBGE_BUILD_OPENGL 1
 #define GL_GLEXT_LEGACY   1
 #define HAVE_PUTENV       1
 #define TIXML_USE_STL     1
 #define BBGE_BUILD_SDL    1
```
2016-05-05 03:49:41 +02:00
fgenesis
6c56bc94a9 Add selectable flag for bones.
Setting sel="0" in an anim's XML file prevents accidental modification
in the anim editor.
2016-04-18 22:08:36 +02:00
fgenesis
65ab23536e Fix AnimLayer not applying bug introduced in 339490e3e9. 2016-04-18 21:07:46 +02:00
fgenesis
b4c1b811ce Make BoneCommand::parse() a bit more resilient and bail out when something is wrong 2016-04-17 15:16:55 +02:00
fgenesis
339490e3e9 Implemnt AC_SET_PASS and AC_RESET_PASS bone commands 2016-04-17 14:33:23 +02:00
fgenesis
361915947b Tiny vector cleanup 2016-03-21 03:41:22 +01:00
fgenesis
36f33da9a8 Remove some old, unused code 2016-03-20 19:14:48 +01:00
fgenesis
e661743775 Be less spammy when loading textures
Oonly print "FROM DISK" when it was really from disk, and not retrieved from cache
2016-03-15 03:38:01 +01:00
fgenesis
62c949f640 Fix rare texture loading problems introduced in 8bd40be8aa and f0d580d873. 2016-03-13 01:37:43 +01:00
fgenesis
d8da8576e8 Fix moveToBack/moveToFront when used on objects that have a parent 2015-11-28 23:42:39 +01:00
fgenesis
ed089f38f7 Add two more font/text related Lua functions, and some more:
+ entity_getBoneByInternalId()
+ entity_getNumBones()
+ text_getLineHeight()
+ text_getNumLines()
2015-11-16 03:59:47 +01:00
fgenesis
4cc21619d4 Little int->float conversion 2015-11-11 23:28:10 +01:00
fgenesis
26549f84b7 Fix font bounds calculation
BitmapFont::getActualWidth() is still a bit less than getStringWidth(),
but won't fix that now since it shouldn't cause any issues... hopefully.
2015-11-11 23:27:32 +01:00
False.Genesis
b1e3cfbcba Merge pull request #19 from jbeich/glm095
Unbreak build with glm-0.9.5
2015-09-30 23:24:16 +02:00
Jan Beich
5e64e66714 build: add option to use system FTGL 2015-09-18 07:17:17 +03:00
Jan Beich
b0a144c858 BBGE: use vector glm functions
glm-0.9.5 removed scalar rotate() and translate()
2015-09-17 21:43:31 +00:00
fgenesis
b320739684 Avoid sending an action multiple times in a row 2015-08-16 02:24:14 +02:00
fgenesis
e8dc99b30d Add script functions:
+ createArialTextBig()
+ createArialTextSmall()
+ quad_getTexOffset()
+ quad_setTexOffset()
2015-08-15 21:15:42 +02:00
fgenesis
20ee050c7b Fix build with SDL1.2 that i accidentally broke 2015-08-03 20:32:41 +02:00
fgenesis
9faa503f32 Use glm for matrix math instead of the OpenGL stack
Should cause less GL pipeline stalling / driver spinlocking if enabled.
Disable AQUARIA_USE_GLM (default: true) in CMake to use the old GL pipeline version.

Based on the implementation by Matt Bierner:
https://bitbucket.org/mattbierner/ios-aquaria
2015-07-12 22:16:55 +02:00
fgenesis
21545e1a24 Show refresh rate in resolution selector 2015-07-12 20:25:46 +02:00
fgenesis
af1b831c85 attempt to fix sounds from zip files not loading properly 2015-07-07 01:16:59 +02:00
fgenesis
8bd40be8aa Fix oversight in texture loading that could cause the cape to appear as white blorb. Thx Daxar. 2015-06-10 01:49:12 +02:00
fgenesis
236096683a Clear animLayers properly 2015-06-03 04:04:19 +02:00
fgenesis
778a275ce2 RenderObject::updateCull is now float, some Lua additions
- add obj_getUpdateCull()
- add obs parameter to getWallNormal(x, y, dist, obs) to control which obs to consider
- add getPerformanceCounter(), getPerformanceFreq()
2015-06-03 04:04:03 +02:00
fgenesis
f0d580d873 Refactor texture loading code; should fix a crash that started appearing recently. 2015-03-24 00:06:51 +01:00
fgenesis
9973afbac6 Allow custom capes in mods 2015-03-09 04:55:03 +01:00
fgenesis
b70de7f94b Add Lua function text_getStringWidth() 2015-03-08 20:44:14 +01:00
fgenesis
dee156cf7a Remove some unnecessary code from StateMachine 2015-03-08 20:44:14 +01:00
fgenesis
ba9c37f704 Make RenderObject::moveTo[Front|Back]() work for things that have a parent. 2015-01-14 21:42:54 +01:00
fgenesis
15379db4b8 Fix possible crash when saving animation to non-existing file + loading malformed XML from skin file.
Also fix skeletal cache memory leak.
2014-09-16 00:29:57 +02:00
fgenesis
26dc8560b7 Fix gcc compile (broke in 300f326777) 2014-09-15 20:59:21 +02:00
fgenesis
70e175c8d6 Merge branch 'experimental' of github.com:AquariaOSE/Aquaria into experimental 2014-07-21 22:22:30 +02:00
fgenesis
300f326777 Use std::vector instead of std::list for RenderObject children 2014-07-21 22:21:22 +02:00
C.W. Betts
bc260fa581 OS X: Fix a memory overrelease.
CoreFoundation functions that have "Get" in their names usually don't need to be released.
2014-06-27 14:48:24 -06:00
fgenesis
817d4beb1c Fix tinyXML2 misuse; simplify scene saving code a little 2014-06-10 02:18:55 +02:00
fgenesis
065def0674 Fixes to prev commit - restore ttvfs functionality when reading XML files, and minor other things 2014-06-09 23:39:33 +02:00
fgenesis
4bafcb3e18 Merge branch 'tinyxml2' into experimental. Thanks to James Le Cuirot for this.
Conflicts:
	Aquaria/UserSettings.cpp
	CMakeLists.txt
2014-06-09 22:31:39 +02:00
James Le Cuirot
43d41feeb8 Migrate from TinyXML v1 to v2. Not bundled (yet). 2014-06-08 21:11:23 +01:00
fgenesis
b98e2532ed Fix crash when AnimationLayer is missing 2014-05-16 00:04:56 +02:00
fgenesis
46b070eb00 Not sure if this really fixes a crash, but worth a try. Thx Daxar for reporting. 2014-04-23 02:31:37 +02:00
fgenesis
0486643455 Merge branch 'master' into experimental 2014-04-23 00:21:22 +02:00
MaddTheSane
991d7de27d Update Cocoa.mm
An update broke compilation on versions of Mac OS X that didn't have/can't have Xcode 4 or later, including PowerPC versions.
2014-04-22 16:11:17 -06:00
fgenesis
4df08dc19f Fix oversight because of copying files around + make sure this won't happen again. 2014-04-15 19:58:10 +02:00
fgenesis
f69d88b656 ttvfs related cleanups 2014-04-15 19:48:06 +02:00
C.W. Betts
87bc46abf6 Merge branch 'master' into experimental 2014-04-06 23:26:38 -06:00
C.W. Betts
45185dee33 Fix a security warning on OS X. 2014-04-06 22:16:01 -06:00
fgenesis
6d4b9502cb Fix build + use win32 message boxes if on windows (they are nicer for dealing with Lua errors) 2014-04-07 04:19:54 +02:00
C.W. Betts
5d9f7c2c18 Use SDL2's MessageBox API. 2014-04-06 19:28:56 -06:00
fgenesis
6203bc7ce4 Update Aquaria/BBGE/External sources to comply with the new ttvfs API 2014-04-07 02:10:05 +02:00
fgenesis
65e457423c Add option for particles to inherit alpha/color from their ParticleEffect 2014-03-10 17:28:41 +01:00
fgenesis
af463e63b2 Make mouse constraint circle scriptable. New Lua functions:
- setMouseConstraintCircle()
- setMouseConstraint()
2014-03-10 02:26:01 +01:00
fgenesis
2cec85fd05 Improve camera zooming behavior + camera related cleanups
- Now, the camera will now no longer be pulled towards the upper left
  or lower rigtht corner.
- cameraPos was never used as an interpolating vector, cleaned up related code.
- Core::invGlobalScale is now updated whenever Core::globalScale is changed
  (Not a nice solution but it does work)
- Increase cull radius by 10%, should prevent tiles from disappearing when
  zoomed in a lot.
2014-03-07 17:59:36 +01:00
fgenesis
a9712944ed Fix animation editor problems: Undo buffer memory hoarding, add warning if saving failed.
Thanks to Peri for finally making me fix this.
2013-12-28 04:42:02 +01:00
fgenesis
201b3a76bc Add Lua functions (+ related text class changes):
- text_getHeight()
- getUserInputString()
2013-12-12 23:14:17 +01:00
dodumosu
f3fe225270 Update Core.cpp 2013-12-12 10:34:15 +00:00
fgenesis
82ab3fa60c Fix OSX build with SDL1.2 (nasty, nasty) 2013-12-11 03:06:59 +01:00
fgenesis
47b8c75dcb Fix linux/osx build 2013-12-11 03:06:38 +01:00
fgenesis
204152a783 Little optimization for molestPath() 2013-12-10 03:48:40 +01:00
C.W. Betts
5ca82aea1c Indenting 2013-11-15 18:45:53 -07:00
C.W. Betts
b9ed32049f Use more modern Objective-C syntax. 2013-11-15 18:45:13 -07:00
fgenesis
373ccff7e4 Fix build on linux 2013-11-14 20:37:50 +01:00
fgenesis
ab752e1156 replace CreateDirA() and mkdir() scattered everywhere by createDir() with some more error checking. 2013-11-14 20:07:39 +01:00
fgenesis
7de589e275 Add custom upper<->lowercase translation tables for better localization support.
Translation tables by Henrik Holst.
2013-11-14 17:58:33 +01:00
fgenesis
cccd42227f Merge branch 'experimental' 2013-11-05 16:51:26 +01:00
fgenesis
1701c9a67d More Lua functions:
- entity_hasSkeletal()
- entity_getNumAnimLayers()
- filterNearestEntities() to fill an internal filter buffer
- getNextFilteredEntity() to iterate over the filter buffer
2013-11-02 15:22:55 +01:00
fgenesis
3fe9ffc2cd Fix setGemPosition(), add more Lua functions:
- isShader()
- isParticleEffect()
- pe_start()
- pe_stop()
- pe_isRunning()
- isMiniMapCursorOkay()
2013-10-25 01:47:24 +02:00
fgenesis
69e25640fb Reload shaders on resolution change. 2013-10-25 01:44:34 +02:00
C.W. Betts
e306347577 The released version of SDL2 (According to the OS X framework) replaced KMOD_META with KMOD_GUI. 2013-09-23 01:12:36 -06:00
C.W. Betts
2465c87844 Fix overreleasing in Cocoa code 2013-09-23 01:12:36 -06:00
fgenesis
396f091c85 Add Lua functions:
- quad_isRenderBeforeParent()
- quad_setRenderBorder()
- quad_isRenderBorder()
- quad_setRenderCenter()
- quad_isRenderCenter()
- quad_borderAlpha()
- quad_getBorderAlpha()
- node_getShape()
- text_setAlign()

Constants: ALIGN_CENTER, ALIGN_LEFT, PATHSHAPE_RECT, PATHSHAPE_CIRCLE
2013-08-31 16:14:05 +02:00
fgenesis
d4038c1ad9 Fix build on Linux/OSX 2013-08-26 22:25:36 +02:00
fgenesis
69890093bd Add special memory allocator for Lua that should take some memory stress away from heavy scripting. 2013-08-26 21:02:46 +02:00
fgenesis
c857722213 Minor things. Most importantly: Game receives ACTION_SWIMLEFT and ACTION_SWIMLEFT now, for use in nodes' action() callback. 2013-08-26 20:57:38 +02:00
fgenesis
41929955d3 Fix ScriptInterface developer mode settings not applying.
Minor changes:
- clean out some Lua functions registered twice
- Correct bool cast in quad_setSegs()
- Show nested mains in debug console
- One less //HACK comment
2013-08-03 22:37:10 +02:00
fgenesis
f825ad9fb7 Fix crash on minimize + reactivate 2013-07-26 02:15:40 +02:00
fgenesis
cf6556b94d Implement stereo to mono mixing for proper L/R separation even for stereo samples.
This mixes only those sounds that are supposed to be played positional.
All centered (default) sounds are played in stereo, as usual.
2013-07-24 19:57:13 +02:00
fgenesis
66802e1935 Change AL distance model to AL_NONE, and implement a custom distance attenuation model.
This avoid the problems with AL_INVERSE_DISTANCE_CLAMPED (doesn't reach 0),
and sounds way better than AL_LINEAR_DISTANCE_CLAMPED, which has an
all-too-sudden decay when a sound goes out of audible range.
2013-07-24 04:36:36 +02:00
fgenesis
6e8cc8cecd Remove FMOD::Channel::setPan(), which is now defunct. 2013-07-22 13:35:45 +02:00
fgenesis
55bc002cc5 Leftover win32 junk 2013-07-22 05:36:01 +02:00
fgenesis
f5da61fe78 Horrible hack to attenuate stereo sources properly.
OpenAL refuses to pan stereo sources, so apparently
it needs to be done this way.
2013-07-22 05:35:50 +02:00
fgenesis
e6680da428 Implemenet proper positional audio, one issue still.
With this patch, entities can serve as a sound source whose position
updates relative to the listener. This implements the last missing
feature of my previous positional audio patch, which is moving sound sources.
Previously, all sounds were relative to the listener with the listener
centered at (0, 0, 0), and once a sound started playing, the position could
not be changed. Volume was set as an estimation of the distance to the listener.

These restrictions are now gone; OpenAL will handle the volume & panning
based on the distance.

The remaining problem is that stereo sounds are not attenuated, at all.

Lua additions:
- playSfx() takes an additional parameter now.
- entity_setStopSoundsOnDeath()
2013-07-22 03:29:57 +02:00
fgenesis
c2506d5bb2 Make some ints floats. 2013-07-20 20:17:57 +02:00
fgenesis
7fb9204e97 Minor changes & simplifications to Lua interface. 5 new functions.
This changes all typical vector interpolation functions that get
value, time, loopType, pingPong, ease as args from the Lua state;
use unified functions for all value type occurances.
This fixes the slightly annoying problem that it was not possible to
pass a boolean true to pingPong or ease, because lua_tonumber() would
always return 0 in that case.

Also changed:
- obj_getWorldPosition() now takes optional x,y-vector

New:
- obj_getWorldPositionAndRotation() is a more efficient shortcut,
	as often both position and rotation are retrieved together,
	and the underlying matrix chain operation is rather expensive.
- entity_getEmitter()
- entity_getNumEmitters()
- setSceneColor2()
- getSceneColor2()
2013-07-20 17:44:27 +02:00
fgenesis
d0623c2e8f Fix crash on shutdown with active SDL_gamecontroller + work around rumble effect not stopping
Tested on WinXP with wired XBox360 controller.
2013-07-19 13:43:26 +02:00
fgenesis
03f99058c3 Apply SDL2 patch by ryan, with some adjustments to apply properly.
The fix as suggested by Jonas Kulla on the mailing list is also in.
There hasn't been any extensive testing, and it may not yet compile
on platforms other than win32.
2013-07-18 23:29:55 +02:00
fgenesis
93c59fdb28 Minor extensions to script interface:
- quad_setRepeatTexture()
- quad_setRepeatScale()
- quad_isRepeatTexture()

(bone, entity, ... as well)

- getOldDT() - return unmodified dt
- getDT() - as passed to update(), for complicated edge cases
            where dt is unavailable but required.
2013-07-15 03:22:41 +02:00
fgenesis
0431932b2b More extensions to script interface:
- obj_fadeAlphaWithLife()
- obj_setOverrideRenderPass()
- setLayerRenderPass()
- debugBreak()
- saveMenu()
- setGemPosition()
- removeGem()
2013-07-11 15:06:38 +02:00
fgenesis
c2689bb71c Fix build on OSX 2013-06-26 15:15:19 +02:00
fgenesis
1897329071 Allow downloading data while the game is minimized.
With this change, downloads should no longer abort when the game is
minimized for more than a few seconds.
2013-06-24 03:39:48 +02:00
fgenesis
93abd03c27 Merge branch 'experimental'
Conflicts:
	BBGE/Shader.cpp
2013-06-24 02:48:17 +02:00
fgenesis
26d056d924 Slightly more sensible error/msgbox handling 2013-06-23 18:50:10 +02:00
fgenesis
8da8b5462b Remove unnecessary exception handling. Hopefully fixes build on linux. 2013-06-21 20:35:24 +02:00
fgenesis
0d98efadc4 Seems this line was lost... 2013-06-19 18:45:19 +02:00
fgenesis
4e1c2746ef Add support for "override" data directory (as suggested by smls).
Now it loads in this order:

AQUARIA_DEFAULT_DATA_DIR
AQUARIA_DEFAULT_DATA_DIR/override
AQUARIA_EXTRA_DATA_DIR
2013-06-19 18:44:24 +02:00
fgenesis
13eca9785f Intial support for package paths (as suggested by smls).
This commit is mainly intended to ease packaging for linux.
Unless environment variable AQUARIA_DATA_PATH is set, there are two
directories which are checked by the game:
If AQUARIA_DEFAULT_DATA_DIR is defined, it will chdir there for main
operation. If it's not defined, it chdirs into the directory where
the executable is located.
Then, if AQUARIA_EXTRA_DATA_DIR is defined, it will mount this directory
and all contents into the working path, so that the files present there
will override those from the working directory when accessed by the game.

Setting the environment variable AQUARIA_DATA_PATH will disable this
behavior altogether and use *only* AQUARIA_DATA_PATH as working dir.
2013-06-19 02:08:24 +02:00
fgenesis
6962a3e3ab Improvements to shader API; use handles instead of raw pointers. 2013-06-15 04:11:11 +02:00
fgenesis
486e8f92ad Make the dark layer affected by postprocessing shaders.
This has the side effect that elements on the dark layer will now properly
wiggle when affected by water ripples.
Before this patch, the dark layer was always drawn above the postprocessed
screen content, unaffected.
2013-06-15 03:00:20 +02:00
fgenesis
836de14093 Implement multi-pass postprocessing shader.
This allows attaching multiple shader programs, processing the entire
screen as texture. Chaining shaders works, each shader will use
the output of the previous shader as input.
2013-06-15 02:38:49 +02:00
fgenesis
3485199bec temp commit - work on shaders 2013-06-15 00:58:32 +02:00
fgenesis
0611568d3e Add precacher for mods 2013-05-24 03:34:10 +02:00
fgenesis
cfd9b0ca5b Fix bug in shader uniform assignment 2013-05-15 01:56:50 +02:00
fgenesis
8c80cf6318 Add shader interface API to Lua API 2013-05-12 00:06:26 +02:00
fgenesis
2ac3ad9fb1 Fixes & enhancements to shader interface code 2013-05-12 00:05:57 +02:00
fgenesis
c62d9f2370 Re-introduce AfterEffect shader functonality, part 1.
This repairs pixel/vertex shader code that was seemingly
experimented with during testing, but it was never used and no
shaders ever made it to the data files.
2013-05-10 22:22:35 +02:00
fgenesis
12ea97f051 Disable all glEnable/glDisable() calls for GL_CULL_FACE, except one glDisable() during renderer init.
GL_CULL_FACE is effectively always disabled, except for quad strip
rendering, and keeping GL_CULL_FACE disabled there does not seem
to cause any visual artifacts.
Instead, it enhances skeletal animation possibilities
(e.g. flipping bone strips over without it disappearing)
2013-05-02 04:31:07 +02:00
fgenesis
55ead19076 Remove spirit form dependency on WorldType, and add related Lua interfaces.
This commit introduces a second pause mode:
Full game pause (as in menu), and world pause (as in spirit form).
All related checks are no longer done against WT_* constants,
but against the new world pause which is functionally equivalent,
but more flexible. Continuity::worldType is now only used to toggle
world pause correctly, and to apply some related graphical effects.
The world pause can also be controlled via script without actually
switching forms.
Added Lua functions:
+ node_setSpiritFreeze()
+ quad_setPauseLevel()
+ isWorldPaused()
+ setWorldPaused()
2013-04-25 02:51:54 +02:00
fgenesis
cba3535487 Keep track of total number of GL render calls 2013-04-22 23:36:31 +02:00
fgenesis
0c768a711d Cause less memory stress in InterpolatedVector assignment 2013-04-21 18:47:51 +02:00
fgenesis
23e0707c5b Add Lua func entity_getSkeletalName() and do not abort when a skin file is not found. Also warn on missing skeletal file. 2013-02-27 01:54:38 +01:00
fgenesis
76c31f8147 minor fixups (Entity::revive() and some skeletal stuff) 2013-02-03 16:13:07 +01:00
fgenesis
9eb5b9828a clean out some dead code and some old commented out code 2012-12-19 06:23:51 +01:00
fgenesis
1705b091aa Fix influenced particles not positioned correctly if SpawnLocal = 1 2012-12-13 18:33:58 +01:00
fgenesis
6f05249fdc Fix crash in RenderObjectLayer::moveToBack() 2012-10-09 00:57:34 +02:00
fgenesis
66d3b90473 Fix two sound looping bugs.
The first one caused the music to stop randomly on scene changes,
reproducible by changing maps with different music while holding 'G'
button to speed up time.
For some reason this caused the music to stop playing during the crossfade.
Wasn't able to find the root cause, so I added a little hack to kick the
music back on track if it stops unexpectedly.

The second one was a simple string case issue; mostly noticable because of
map background sounds not playing in loop mode.
(this is possibly a regression from an earlier patch, not sure)
2012-10-07 00:05:17 +02:00
fgenesis
31930051d5 More compile fixes for gcc 2.95 2012-09-23 05:30:47 +02:00
fgenesis
1fdae0c128 Replace #pragma once with #ifndef/#define pairs (to avoid warnings on gcc 2.95) 2012-09-23 04:51:13 +02:00
fgenesis
9e4fe3809e Fix crash added with last commit, thx KS-10 for pointing 2012-07-23 05:06:01 +02:00
fgenesis
00bb390019 Use locale "-" to turn off locales 2012-07-14 19:50:01 +02:00
fgenesis
927928167b Move key config strings into stringbank.txt 2012-07-14 16:54:28 +02:00
fgenesis
636c069403 _mods/x/locales/y/* now works 2012-07-14 15:00:37 +02:00
fgenesis
e8872b09e5 Localise sounds, voice, and send current locale to webserver when asking for mod list 2012-07-14 14:34:46 +02:00
fgenesis
82000b14ca Little annoyances that ease debugging with MSVC 2012-07-13 21:09:30 +02:00
fgenesis
319b9d09ed Fix regression that prevented few textures from loading (Labyrinth mod icon, for example) 2012-07-12 03:46:18 +00:00
fgenesis
345ff6063b Fix locale related oversights 2012-07-11 04:50:19 +02:00
fgenesis
7b2fa39428 Move localisation code to BBGE, and allow textures to be localised. 2012-07-10 22:16:48 +02:00
fgenesis
7e1c32a99c gcc 4.7 again... thx Red Skull 2012-06-27 22:15:55 +02:00
fgenesis
38501dca35 Some fixes to make the ever-complaining gcc 4.7 happy (hopefully) 2012-06-27 21:51:54 +02:00
fgenesis
283fc0086e Minor changes; based on russian opensource patch. 2012-06-19 02:29:14 +02:00
fgenesis
5329a9e6e3 Moar linux build fixing 2012-06-17 03:41:53 +02:00
fgenesis
d526b6c193 Fix build with gcc 4.7, thx vincent/mirandir 2012-06-17 03:37:37 +02:00
fgenesis
b719b8fd60 Removed textureMemoryMultiplier again; a bit more debug output for differing texture sizes 2012-06-15 17:58:18 +02:00
fgenesis
0ea9ba0770 oops, very stupid thing i made there. 2012-06-15 04:23:22 +02:00
fgenesis
a5b5da6f4b gcc complaining... 2012-06-15 04:19:03 +02:00
fgenesis
063b1c0dfc Moved most uses of glGetTexImage() into a single function with better error checking.
Also small config addition to optionally increase memory allocation size
for temporary texture pixel data; the nouveau drivers seem notoriously
awkward and keep writing over the buffer.
2012-06-15 04:12:20 +02:00
fgenesis
5b7757530f More linux file name case issues... 2012-06-14 19:06:06 +02:00
fgenesis
8f2279e28a Fix problems with loading saves after saving over them.
This was caused by the VFS caching file sizes,
and not noticing that the file size had changed,
which confused zlib because the data stream ended too early.
2012-06-14 17:54:40 +02:00
fgenesis
6d92cd24c8 Fixed more weirdness in functions using glGetTexImage(), add proper bounds checking 2012-06-14 17:40:01 +02:00
fgenesis
6dc1c1e8d1 [vfs, #3] All file reading code goes through the VFS now, new mod downloader & mod selector in place. Also a bunch of other stuff. (...)
- HTTP networking support, mods can be downloaded via the builtin downloader.
  All network activity runs in a seperate thread, which is started
  as soon as any network activity is requested.
- The master server is hard-coded to fg.wzff.de/aqmods/ if not specified otherwise;
  this setting can be overridden in the config file.
- The mod selector screen is now a grid-view for much better navigation;
  also works with joystick.
- VFS code is functionally similar to the old molebox-packed release
  for win32. The game could also have its data shipped in a Zip file
  or any other kind of archive.
- It is still possible to build without VFS support, but then the mod
  downloader and soft-patching will not be available.

The full commit history can be found here:
https://github.com/fgenesis/Aquaria_clean/compare/master...vfs

The most important commit messages follow:
[...]
    This replaces all std::ifstream with InStream, and fopen(), ... with vfopen(), ...
    Some code is #ifdef'd for better performance and less memory-copying.
    VFILE is defined to whatever type of file is in use:
    - FILE if BBGE_BUILD_VFS is not defined
    - tttvfs::VFSFile if it is.

    Other changes:
    - [un]packFile() is now unused and obsolete. That code has not been adjusted to use VFILE.
    - glpng can now load from a memory buffer.
    - TinyXML uses the VFS for reading operations now.
    - The rather clunky binary stream loading of glfont2 got replaced with ByteBuffer,
      which gets its data in one block (necessary to use the VFS without implementing
      a somewhat STL-compliant std::ifstream replacement.)
-------------
Implement loading mods from zip files.
-------------
Implement soft-patching game data files. (Replacing textures/audio/... on the fly)
-------------
Misc bits:
- Extended GUI focus handling a bit
- Fixed weirdness in texture loading... not sure but this seems more correct to me.
  Actually, considering that the texture will have its native size after restarting the game,
  the lines removed with this commit seem pretty useless.
2012-06-01 17:52:19 +02:00
fgenesis
1709503344 [vfs, #2] Move around some files (cleanup only) 2012-06-01 17:26:13 +02:00
fgenesis
c02ea1ce83 Re-implement (optionally) pre-decoding audio to reduce disk seek/decoding time.
This was removed in HG changeset 7ec478d993b7, and is now implemented
in a way that is better than before: voice overs and music
no longer cause decoding lag, as they are always decoded on-the-fly.
The additional memory use (~40 MB) should be no problem for anyone.
The default is still to decode everything on the fly.
2012-05-27 04:46:36 +02:00
fgenesis
fdce574cc5 More filename case fixes for linux (skeletal + skin) 2012-05-25 18:23:30 +02:00
fgenesis
f953f2b5ab Do all sound decoding in *one* background thread, instead of one thread per decoder. 2012-05-25 17:38:59 +02:00
fgenesis
0fbd5d81ae Don't use internal zlib headers.
Thanks Henrik Holst for pointing.
2012-05-21 03:43:15 +02:00
fgenesis
1350876b3d Restore & correct collision radius rendering. Enabled toggling the debug console on Mac.
Collision rendering is now mapped to Ctrl+Shift+Return instead of capslock.
Also fixed one float->int truncation in script interface,
and removed useless debug message when particle effect "" was supposed
to be spawned (but does never exist).
2012-05-05 17:00:46 +02:00
fgenesis
1a20ff5d59 Compile fix for win32/MSVC that creeped up for some reason 2012-04-06 20:57:26 +02:00
fgenesis
fc7fa440da Fix currents not displaying correctly after resolution change. 2012-04-01 21:24:31 +02:00
fgenesis
273b608214 Misc fixes and cleanups; fixed variadic Lua calls to self.
Script interface:
- entity_msg() will no longer corrupt the Lua stack if sending messages to itself.
- added more info to non-critical Lua errors ("attempt to call a nil value", etc)
- replaced many lua_tostring() with getString(), which does never return NULL.
  This prevents possible crashes when a non-string parameter is passed to functions
  expecting a string.

Misc:
- Removed classes BoxElement, DFSprite, Datafile, and related references.
  They were essentially unused.
- Removed unused Element class member variables.
- Show more lines in the in-game console.
2012-03-14 00:58:59 +01:00
fgenesis
bd9648aa60 Fix particle & shot loading on linux (fix file name case) 2012-03-12 03:13:34 +01:00
fgenesis
9b63b400d5 Misc code cleanups, little SkeletalSprite loading improvement.
- Removed some unused member variables.

- The BBGE_BUILD_WIDESCREEN define is now gone.

- Added an TiXMLDocument cache to prevent parsing the same file
once for each entity on the map with the same skeletal.

- Removed Lua func entity_warpToPathStart, which was essentially a no-op
because Entity::followingPath was always NULL. Removed related code.

- Set texture wrap only when required.

(Some changes taken from https://bitbucket.org/mattbierner/ios-aquaria,
special thanks for changeset 72d6460d9e60)
2012-02-19 04:57:04 +01:00
fgenesis
0cd0971671 Revert "Add a thread pool for background job processing, and use it for OggDecoder."
This reverts commit 010f44d264.

Conflicts:

	BBGE/MT.cpp
	BBGE/MT.h
2012-02-12 03:27:54 +00:00
fgenesis
c06e66d3b7 Missing include on linux 2012-02-12 02:31:40 +00:00
fgenesis
9b2c18ecaa Build fixes for clang; little CMake config update 2012-02-10 20:28:35 +01:00
fgenesis
75e7b137d6 Drop use of tempfiles when loading compressed files.
Also simplified .zga texture and .aqs savegame loading.
Dropped support for "crunched" .sav files (those were never used),
and the corresponding crunch functions.

To be done: Temp files are still used when compressing files,
will address this in a later commit.
2012-02-10 00:10:50 +01:00
fgenesis
321a65a9fb sync with icculus repo 2012-02-09 17:40:35 +01:00
fgenesis
010f44d264 Add a thread pool for background job processing, and use it for OggDecoder.
The pool adjusts to the amount of required threads.
The implementation is as simple as possible, but should be enough
for future extensions.

This brings down decoder thread creation/destruction even more.

Also fix OpenALSystem::release() to close channels properly on shutdown,
otherwise it would deadlock with the pool, because it waits until all
threads have died off, which did not necessarily happen.
2012-02-09 16:08:35 +01:00
fgenesis
9e675be651 Fix obstruction grid edge rendering.
This patch adds the functionality of the removed hack added in 07bc370c1680,
but without the runtime performance impact.
OT_* obstruction types are now a bitmask; as a side effect,
Game::baseGrid is no longer needed, which reduces memory usage by
4 MB.
2012-02-07 22:25:17 +01:00
fgenesis
1d12576322 Fix 2 minor typos from the script update patch, and one in SoundManager
The latter one caused sounds in mods not being properly cached (and not
played), if the internal mod path started with "./", which is the case
on windows since an earlier commit.
2012-02-06 17:36:07 +01:00
fgenesis
ac822ec91d Fix missed logic bugs in reordering of RenderObjects within a layer.
Because of wrongly set firstFreeIdx some pointers were NULL, where they
shouldn't be, which caused hard to track down crashes.
This is an addition to af04d0c37698.
2012-02-05 20:31:17 +01:00
fgenesis
99375127e1 Fixed a shader related crash that occured if the following conditions were met:
- BBGE_BUILD_SHADERS defined
- Blur enabled in config
- Entering a "warplocalnode"-Node while taking damage

These conditions caused it to enable shader related code while taking the
screenshot for the warp transition, that caused a crash because the shader-
related gl*() function pointers were not initialzed, because the current
code never loads any shaders.
2012-02-05 20:26:23 +01:00
fgenesis
7ff0caaed8 Script interface improvements & extensions.
- Pointer typechecks are now enabled by default.

- enabled all script warnings for non-FULL or DEMO builds by default

- Added generic obj_* functions that operate on any type of RenderObject.
  These give quite low-level control about the renderer, and are quite
  dangerous too.
  Subsequently, many functions sharing the same code (*_setPosition, for example)
  could be removed, and simply call the generic functions after a type check.

- Added interface function deathNotify(). The original logic of death
  notifiers was never used, so i thought i'd make use of it.
  This is useful in scripts to safely drop dangling pointers.

- removed sendEntityMessage, entity_setCollideWithAvatar, entity_setTouchDamage,
  which were essentially no-ops.

- Replaced all unnecessary luaReturnNum(0) and luaReturnInt(0),
  now it does only push a return value on the stack if the function
  is actually supposed to have a retun value.

- Allow variadic calling of entity_msg(). Now any parameters can be passed
  to the function, and the target entity will receive all of them.
  Any values returned from the entity's msg() callback will be returned
  by entity_msg() to the original caller. This allows nice RPC-like
  entity communication.

- fixed possible crash in debugLog, bone_update, entity_debugText

- added an override function for loadfile() that is case-insensitive like dofile()

- entity_createEntity returns the created entity now

- spawnParticleEffect returns the associated RenderObject

- Added some text rendering functions

- Added beam_setFirer()

- removed the underflow check in avatar_decrLeaches() I added earlier

- added a panic function for Lua.

- added the Lua debug library

- fixed a stupid typo in ScriptObject::isType() that made the type checks a lot less accurate

- misc stuff I forgot
2012-02-05 20:22:54 +01:00
fgenesis
f2d112b693 Minor debug improvements + misc
- Spend less time starting up when not compiled with AQUARIA_FULL/DEMO
- removed entity_setTouchDamage and bone_setTouchDamage, the used variable was never read
- repositioned debug overlay texts, that they are not in the way on wide resolutions
- show used Lua memory in debug text
- very slow slowmo on Shift+F devkey
- fixed RenderObject::isfhr()/isfvr() to be really recursive
  (they were never used until the animation editor fixes - this rotates
   bones on one or more h.flipped parents in the same direction as
   never h.flipped ones)
- removed some unused stuff
2012-01-31 19:25:13 +01:00
fgenesis
eeaa723cd7 Animation editor enhancements
Bone positioning now takes into account its parent's absolute rotation,
and compensates it. That means bones with rotated parents follow exactly
the mouse when dragged, instead of going anywhere except where they should.

Repaired selecting bones with the mouse, and made that the default
(can be switched to keyboard with M key).

The timeline grid size and timestep unit size are now variable,
and can be changed with the U, I, O, P keys or the added UI buttons.

Bone borders and joint points can be displayed with B key.

Removed the ignorebone0 button and related functionality.

Minor cosmetical things.
2012-01-31 18:02:18 +01:00
fgenesis
1ab32b585f Fixes for Linux
- fixed warning about PlaySfx::handle
- fixed displaying subtitles - if the path was not full lowercase it didn't find its txt files.
- CMake: removed SDLMAIN_FOUND, which is seemingly only defined on windows and does more harm than good.
- glpng: always use new libpng API (fixes windows build)
2012-01-10 19:34:31 +01:00
fgenesis
39f4f3c856 Fix 2 little bugs
- set default freq/pan for voice playback
- spinycrab script: fix pointer tpe mismatch
2012-01-08 20:22:56 +01:00
fgenesis
ef8d13c3e4 Fixed an oversight where a channel's pitch or pan could be applied to background music 2012-01-03 04:49:47 +01:00
fgenesis
4320b8296b Add a safe pointer model to ScriptInterface, additional bug/crash fixes.
This commit introduces pointer checks to various functions;
so that entity_* will no longer crash or produce weird results
if passed a Node pointer, etc.
The checks are disabled by default, but can be enabled in
ScriptInterface.cpp.

Fixed possible crashes in a few more functions due to missing NULL-checks.

There was a "feature" in the single Lua state that it would keep globals
intact until the game was quit. That made any globals from mods "leak"
into the game or other mods. Now it resets the Lua state when a mod
is loaded or closed.
2012-01-03 04:38:28 +01:00
fgenesis
becd31770c Fix some small performance bottlenecks:
- Vector interpolation. Also removed unused interpolation trigger events.
- GridRender::onRender() (removed Andrew's hack, use fixed map file!)
- make use of glVertex3i() & memchr() in GridRender
- very minor misc things
2012-01-02 21:34:29 +01:00
fgenesis
16ae453431 Revert "Fix some small performance bottlenecks:"
This reverts commit 2d7eeb4781.
2012-01-02 16:02:32 +01:00
fgenesis
2d7eeb4781 Fix some small performance bottlenecks:
- Vector interpolation. Also removed unused interpolation trigger events.
- Game::collideCircleWithGrid()
- GridRender::onRender() (removed Andrew's hack, use fixed map file!)
- make use of glVertex3i() & memchr() in GridRender
2011-12-13 21:43:27 +01:00
fgenesis
ac2091fb69 Fixed positional audio & pitch shift.
Apparently this was half implemented but not fully finished.
Mono samples work fine, for stereo, L/R panning does not work (due to OpenAL's limitation)
Also fixed: entity sounds should not play if a cutscene is currently skipped.
2011-11-26 21:00:24 +01:00
fgenesis
e6e33f2f9d Little path correction for win32, this repairs screenshot and frame dumping functions. 2011-11-20 23:47:24 +01:00