Pages: << Previous 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 Next >>
Summary Period: 2000-08-08 to 2000-08-03 (Commits 3145-3194 of 12744)
SetAction returns a bool, true on success
3 lines of code changed in:
Maintenance Update (Cleanup)
-- removed hard library links (-Llibs/zlib, etc.) from Mingw.mak
libpng.a, libjpeg.a and z.a now are only available from
compilers' include directory.
-- Updated system dependent source file variables to accomodate
AndyZs changes.
-- exeentry.cpp, as of this update, is once again enabled for both
static library and dynamic library builds. Before this update,
only the dynamic library build (USE_SHARED_PLUGINS=yes)
was allowed to invoke exeentry.cpp.
6 lines of code changed in:
-- restore library references for Mingw, these are kept in cs/libs
for .png, .jpeg and zlib
3 lines of code changed in:
Removed the delete [] Scan.GlobalCMap from PrepareTextures. It must have been some
debugging junk I'd left in. Sorry Andy :) (it was also deleted in the destructor as originally intended)
0 lines of code changed in:
Oooops, forgot this one
14 lines of code changed in:
define CS_DEBUG when building in debug mode
1 lines of code changed in:
working CS_ASSERT for MSVC
12 lines of code changed in:
removed a warning
1 lines of code changed in:
Made the MSVC port just as broken as the rest of Crystal Space.
(I assume, most of the Windows specific problems are solved now,
but there are still lots of general problems.)
25 lines of code changed in:
Moved python to new script dir
1 lines of code changed in:
New Script Architecture
4284 lines of code changed in:
Changed the "Library" key from [MazeD] section to a more general [CSWS]
5 lines of code changed in:
-*- Enhancements to win32gcc.mak. In fact, win32gcc is a fully working port
with same features found in other programming environments:
- dynamic libraries are supported
- DirectDraw canvas
- DirectDraw 6.1 canvas
- Software renderer
- Direct3D renderer
I have not tried other Windows canvases (e.g. glide and OpenGL) but I
think they will work as well, with minimum changes required.
-*- Fixed makedep to not generate readonly files when they are missing.
This is sometimes caused by uninitialized garbage in st_mode member
of `struct stat'.
-*- I have renamed libs/cssys/win32/printf.cpp into win32printf.cpp because
it conflicts with libs/cssys/general/printf.cpp.
-*- Moved WinMain() from win32.cpp back to exeentry.cpp. The reason why this
is needed (Thomas, hear me!) is that some programs need just the WinMain()
routine and don't need the SysSystemDriver (which is in win32.cpp).
For example scfreg, makedep, gfxtest and other console programs don't use
the SysSystemDriver, thus they don't need to be linked against DirectInput,
DirectDraw, GUI libs and so on. They just become a lot smaller.
This is also the case with DLLs - for some reason DLLs made with MinGW32
needs the WinMain function, thus every plugin gets the full load of
routines in win32.cpp (just because WinMain was there).
-*- Enhanced ddraw driver a lot (the one for software render).
- setting mouse cursor now works (persistent)
- moving window does not cause the image to stay at old position
- moving other window on top of CS window does does not leave
ugly traces (e.g. non-refreshed portions of window).
- the region argument passed to ::Print() is handled properly
- the window now has a titlebar and even a minimize button
- Alt+Enter now toggles fullscreen/windowed mode
- The contents of backbuffer are preserved during fullscreen/
windowed mode toggle.
- Fixed the double buffering. In windowed mode only single-buffering
is allowed, in fullscreen both double-buffering (page flipping)
and single-buffering (blitting from backbuffer) works.
CSWS works a lot faster in single-buffering mode.
Hmm, strange. Just tried and found that even walktest works
A LOT faster with single-buffering. With page flipping it gives
about 20fps, when blitting from system memory it runs at 31fps (!!!)
I will set double buffering to disabled by default...
I have encountered a bug on Windows NT SP3 (with a Matrox Mystique
videocard, don't know if this matters) - if you request an 16bpp
videomode in fullscreen, you will really get just an 15bpp mode.
This leads to strange colors if you started the program in windowed
16bpp mode and then switch with Alt+Enter to fullscreen or vice versa.
On Windows98 this does not happen.
-*- Applied same enhancements to DX61 driver. Tested only with software
renderer though, I hope it will work with D3D renderer as well...
-*- Enhancements to Windows system driver:
- SetMouseCursor() is implemented now in system driver.
From canvas driver you have to call:
System->SystemExtension ("SetMouseCursor", CursorID);
- When mouse is pressed inside CS window, the pointer is captured.
Thus even when you move the cursor outside window the mouse
position is continuously tracked. The mouse coordinates are
send to system driver as signed values (they were unsigned).
- DirectInput keyboard handling is not needed anymore. I have
implemented perfect keyboard handling through normal Windows
window messages. You can use DirectInput if you like buzzwords,
but it won't give you absolutely anything. In fact, DirectInput
handling is worse because it does not support national characters
right now, and WM_CHAR supports it.
In general, CSWS/MazeD works perfectly now with
-*- Fixed history in simple console. It used to crash sometimes due to an
uninitialized variable.
-*- Fixed the Direct3D renderer. Well, my Matrox Mystique lacks alpha blending
so I can't see if lightmaps really works, but without them it works.
-*- Moved getopt.c && getopt1.c into cssys/general. Also I have unified these
two files into one C++ files. Thus we have no plain C anymore anywhere.
2127 lines of code changed in:
fixed internal compiler error for solaris by permutating the code a little.
1 lines of code changed in:
perfstat plugin is now also installed.
2 lines of code changed in:
Liberally added comments and rearranged a little to make it clearer whats going on
59 lines of code changed in:
Added perfstat plugin to plugin list
4 lines of code changed in:
- Added a new plugin called perfstat, and updated walktest so
that it could 'benefit' from its functionality. Perfstat is
basically a nested statistics gatherer which can print out
formatted results to a file. It also prints out system info
as the header. This is meant to be a tool mostly to test the
drivers. The nested bit means it will also gather
seperate statistics for a configurable 'subsection' of the
main section it is gathering statistics for.
Walktest has a max of three nested perfstats with the
recsubperf command (see below).
- Chages to walktest:
- Perfstat now takes care of fps calculations according
to user specifiable resolution. Defaults to 10 frames per
update.
- The demo playing and recording now pauses when you switch
to console
- Suitable commands are now recorded too, like fire missile,
addskel addlight etc. A couple of macros are defined in
walkcmd.cpp as a convenience.
- Modified commands:
loadrec <file> can take an optional name argument to specify a
<file>.rec to use as its demo file, otherwise it
defaults to 'record' as before.
saverec <file> can take an optional name argument to specify
a <file>.rec to save to.
play has optional arguments, otherwise works as before.
play <file> This outputs summary statistics for the demo
played to <file>.rps (Recorded Performance Statistics).
play res, x, <file> The 'res'(olution) option tells perfstat
to record statistics every 'x' frames and output
to <file>.rps
play break, x The break option when compiled in debug mode
will trip off a signal trap on the 'x'th frame.
Useful once you take note of the frame number of
something interesting in a <file>.rps
- New command:
recsubperf <name> Once a recording has begun this command
is used to record the statistics of a subsection
of the demo and is reported as such in the outputted
<file>.rps when played back. To finish the subsection
call the command again without an argument.
Stands for 'rec(ord)sub(section)perf(ormance)'
1152 lines of code changed in:
- m_textured was used uninitialized in meshdrawing
- made some minor optimizations to meshdrawing
30 lines of code changed in:
Added missing engine plugin to CVS.
116 lines of code changed in:
make install, and make uninstall for Linux/unices should work, i.e. copy
files and delete files. The install is not used yet.
Also an extremely portable app 'uninst' is added, that will uninstall.
It will also delete empty directories that held files.
install.mak will install files in several places. In each apps/libs/plugins
.mak file you can add files for installation. I have already modified all
makefiles correspondingly (for all apps, libs, plugins).
Places you can add for installation:
TO_INSTALL.ROOT : files will be added in the $(INSTALL_DIR)/ dir itself.
TO_INSTALL.EXE : files will be put in bin/
TO_INSTALL.DATA : files will be put in data/
TO_INSTALL.CONFIG: files will be put in data/config/
TO_INSTALL.STATIC_LIBS: files will be put in lib/
TO_INSTALL.DYNAMIC_LIBS: files could be put in lib/, but could also end
up in a platform specific location (e.g. System folder).
TO_INSTALL.INCLUDE does not exist, the entire include/ hierarchy is copied
to include/. (max 3 levels deep now)
The INSTALL_DIR is autodetected at 'make <platform>' time, and saved in
config.mak. (It can be overridden, e.g. by make linux INSTALL_DIR=/usr/crystal)
also it can be overridden when make install is called (or make uninstall)
64 lines of code changed in:
now works again
3 lines of code changed in:
install safer for people that do not update config.mak
4 lines of code changed in:
beginnings of a make install option. Xfree86 (fullscreen extension) is detected now for unix
139 lines of code changed in:
added DecRef of VFS in destructor
2 lines of code changed in:
disabled deleting of the csTextureHandle in csMaterial since this is done when the csTextureList is deleted (and crashed when MaterialList was deleted thereafter)
1 lines of code changed in:
corrected the soundrenderer location but left it uncommented
1 lines of code changed in:
simple.cpp: two Nothing events were emitted each frame, now only one
light.cpp : an unitialised data member, caused walktest to crash with 'dellights'
1 lines of code changed in:
Cygwin update
-- allows definition of _argc, _argv for Cygwin builds generated
with OS=WIN32 (not Unix).
10 lines of code changed in:
With cstools in the linker line, linking walktest results in segfault
cstools is empty at this time, which may be why
1 lines of code changed in:
Update.
9 lines of code changed in:
removed compiler warning
1 lines of code changed in:
- added missing PerformExtension () dummies
- replaced QueueContextCloseEvent with the new EventOutlet method
10 lines of code changed in:
refixed command line option processing after andyz BigBadPatch
4 lines of code changed in:
Fixed warnings
3 lines of code changed in:
Fixed a bug in walktest related to Andrew's patch.
2 lines of code changed in:
- Fixed phyztest so that it compiles and runs.
- Fixed cctest so that it compiles and runs.
- Fixed line 3D renderer.
- Fixed null 3D renderer.
- Fixed infinite 3D renderer.
- Fixed perftest so that it compiles and runs.
- Fixed funcon plugin.
- Fixed metaballs plugin.
- Added iTextureManager::RegisterMaterial() which takes a texture
handle instead of an iMaterial. This is for conveniance to make
materials based on a single texture easily.
239 lines of code changed in:
-*- Implemented a new low-level event system architecture. Most programs won't
notice any difference in top-level interface, only low-level interaction
has been changed a little.
Events are generated by iEventPlug objects. Any event plug plugs into an
iEventOutlet which is the "front door" into the system driver event queue
for the respective event source. When you register an iEventPlug object
with the system driver, you get a pointer to the respective iEventOutlet.
The QueueXXXEvent() methods are gone from iSystem. Instead, use the
respective methods from iEventOutlet interface. Also there is an default
system outlet (the 'back door' :-) which may be queried through
GetSystemEventOutlet, use it if you don't consider that your plugin
is worth to have a full-fledged connection with the system driver
event queue.
Note that the new event system allows to write a new generic "record/play"
plugin which will, in record mode, record all events that pass through
the system queue, and on other hand, emit all recorded events back
into the system event queue. Writing one is left as homework for the
reader :-)
-*- New file: include/ievent.h. It defines the interface for any plugin which
desires to generate events into the system event queue. Also it defines
the interface for iEventOutlet objects, which are provided by system
driver.
-*- No more SetSystemDefaults routine in system-dependent drivers.
Any settings must be queried from the respective plugins. For example if
some canvas needs the "-shm/-noshm" option it should query it itself
rather than relying on iUnixSystem driver to do it.
Also most system-dependent interfaces (such as iDosSystem, iUnixSystem,
iOS2System) are gone. I believe there is no need anymore in a private
interface, and if you need just one-two additional system-dependent
functions, you can always implement them through the new SystemExtension
method of iSystem.
-*- Cleaned up the iSystem interface. Lots of methods are gone, several new
have been added.
-*- The canvas-dependent command-line options have been moved to respective
canvas drivers. The respective command-line help have been moved there
as well. From now on: if you want to display any plugin-specific help,
you should implement HandleEvent and handle the cscmdCommandLineHelp
broadcast event. Upon reception of such an event you should display
something like:
Options for X-Windows 2D graphics driver:
-sdepth=<depth> set simulated depth (8, 15, 16, or 32) (default=none)
-shm/noshm SHM extension (default 'shm')
-[no]sysmouse use/don't use system mouse cursor (default=use)
-*- Note that because all QueueXXXEvent methods are gone from iSystem
interface, some canvas drivers may not build. Here is the list of
canvas drivers that I have fixed, use any of the drivers below
for reference when fixing other canvas plugins.
Fixed and tested:
- CSDIVE canvas.
- X-Windows 2D canvas
- X-Windows Line2D canvas
- OS/2 OpenGL canvas
- MGL 2D canvas
- AsciiArt canvas
Fixed but not tested:
- csalleg (cross-platform Allegro) canvas
- unixglide canvas
- svgalib canvas
- gl/x canvas
- ggi driver
Not fixed at all:
- BeOS drivers
- Mac drivers
Sorry, couldn't understand how they work :-)
Some system drivers also can generate events. The following drivers
were converted and tested to use new event architecture:
- DOS/DJGPP
Converted but not tested:
- MacOS
- Win32
- BeOS
Not converted (Objective C :-():
- NeXT
-*- Implemented National Keyboard Support. Every event plug has to provide
two key codes - one is the "raw" keycode (Event.Key.Code) and one is the
"cooked" code (Event.Code.Char). Old programs that use Event.Key.Code will
still work but they will get just low-case characters (e.g. even Shift
and/or Ctrl will be ignored). This also means that hotkeys like "shift+!"
won't work anymore (instead use shift+1). I have fixed autoexec.cfg
for this.
National Keyboard Support should already work with most canvas drivers.
I have tested it with X-Windows driver, OS/2 DIVE driver, MGL driver.
If some driver cannot provide the "cooked" keycode (such as the DOS driver)
it should provide "-1" as the character code, and the system driver will
"cook" it itself.
-*- Fixed X-Windows drivers so that they handle correctly the MappingNotify
event. This enables support for languages that need more than one keymap
(e.g. Cyrillic and others, maybe Japanese).
-*- Removed elapsed_time and current_time arguments from NextFrame. Instead,
I have added a new method called GetElapsedTime (time_t&, time_t&) into
the iSystem interface. Call it if you really need the elapsed time.
You can call it any times per frame you need. The time is updated only
at the start of every frame. The NextFrame() method has no arguments now.
-*- Redesigned the main application loop. The Loop method in system driver
is still there, but it is basically just an:
while (!Shutdown) NextFrame();
If your application does not need the loop, feel free to call NextFrame
without arguments at appropiate times.
Fixed all applications in CVS to use the new NextFrame prototype.
However, for applications not in the repository you will have to fix
this yourself.
-*- Added the new -I or --info switch to gfxtest tool. Using this switch you
can easily see the cause of translucent cubes in blocks: the respective
png files (cubef3 and cubef4) have an alpha channel.
-*- Added -a or --strip-alpha switch to same tool. Note that the blocks data
file in repository has NOT been fixed; somebody still have to do it.
-*- Fixed dependency generation with makedep - instead of $(OUT) prefix it
used the expanded value of $(OUT) - thus when switching compilation mode,
it was needed to rebuild dependencies. Not it is not the case anymore.
-*- Added Z-none counterparts to ALL DrawPFX modes. In this mode the Z-buffer
is ignored at all, thus it is the fastest mode. It can be used to display
non-3D graphics with DrawPFX, for example user interface elements and so
on (and even 3D graphics in depth sorted order).
-*- Added Z-none, Z-fill and Z-use modes to per-pixel alpha routines. Now
you can do:
G3D->SetRenderState (G3DRENDERSTATE_ZBUFFERMODE, CS_ZBUF_ZUSE);
G3D->DrawPolygonFX (...)
The CS_ZBUF_NONE routine has the lesser overhead, of course.
-*- Implemented Z-use and Z-fill modes for alpha-mapped walls (DrawPolygon).
-*- Redesigned the iConsole interface. Basically I have tried to simplify it
as much as possible; having very sophisticated interfaces does not make
easy to write new plugins. Removed the dumb iCursor interface. The cursor
should be provided by the console; if you don't like the cursor, write
your own console. Redesigned the iConsoleInput interface.
-*- Reimplemented cstools/simpcons as a new plugin. cstools library is now
empty; don't know if it is really needed.
-*- Fixed walktest to use the new console plugin. It is not tied anymore to
csSimpleConsole private interface, thus can use any console plugins you
will write in future :-) Also walktest will run now without a console
at all.
-*- Fixed a very seldom happening bug in software 3D driver that leads to
crashes due to division overflow.
-*- When the palette changes in 256-color modes, the texture manager will
emmit an broadcast event so that all interested plugins (including
consoles) can intercept it and query the appropiate drivers for new
information.
-*- Fixed the cscon plugin. The "xstdin" plugin has been removed (use the
one in simpcon instead, it has absolutely same functionality), the
"console.output.standard" and "console.output.funky" consoles works.
You can even enable them in walktest application by uncommenting
the respective lines from cryst.cfg.
-*- Fixed an strange bug in software texture manager - in 8-bit modes the
Scan.GlobalCMap was deleted at the end of PrepareTextures() although
it is extensively used while the program is running ...
-*- Fixed an very old bug in DrawPolygonFX() for software 8-bit modes.
DST was incorrectly missed the screen palette table, thus all modes
that involved DST (fixed-value alpha transparency and blending)
did not worked.
-*- Due to above event system redesign, Crystal Space Windowing System has
been redesigned a little as well. The csApp class is now a plugin from
system driver's point of view and receives events absolutely same way
like any other plugin. Thus the look of the simplest CSWS application
has been changed a little. See cswstest for details.
-*- Crystal Space Windowing System does not implement its own system driver
anymore. Instead, the csApp class is an "almost-normal" plugin now,
except that it is created not via SCF (but rather with `new'). Also
CSWS works with the system driver completely through the iSystem
interface; this means CSWS and system driver don't have to be in
the same module anymore.
-*- Fixed MazeD so that it works with the new CSWS architecture. No other
enhancements though :-(
-*- The list of applications that were fixed after my changes:
blocks
cswstest
demonets (at least compiles)
dnapp (same)
dtsimple
makedep (:-)
map2cs
mazed
mdl2spr (I hope)
metademo
ndrvdemo (compiles)
nstp (not tested, but I believe)
perftest (same)
phyztest (same)
pysimp (hell knows)
scfreg
simple
squawk
walktest (hah)
Still broken:
cctest
shooter and libs/csgame
wscs3d
68 lines of code changed in:
-*- Implemented a new low-level event system architecture. Most programs won't
notice any difference in top-level interface, only low-level interaction
has been changed a little.
Events are generated by iEventPlug objects. Any event plug plugs into an
iEventOutlet which is the "front door" into the system driver event queue
for the respective event source. When you register an iEventPlug object
with the system driver, you get a pointer to the respective iEventOutlet.
The QueueXXXEvent() methods are gone from iSystem. Instead, use the
respective methods from iEventOutlet interface. Also there is an default
system outlet (the 'back door' :-) which may be queried through
GetSystemEventOutlet, use it if you don't consider that your plugin
is worth to have a full-fledged connection with the system driver
event queue.
Note that the new event system allows to write a new generic "record/play"
plugin which will, in record mode, record all events that pass through
the system queue, and on other hand, emit all recorded events back
into the system event queue. Writing one is left as homework for the
reader :-)
-*- New file: include/ievent.h. It defines the interface for any plugin which
desires to generate events into the system event queue. Also it defines
the interface for iEventOutlet objects, which are provided by system
driver.
-*- No more SetSystemDefaults routine in system-dependent drivers.
Any settings must be queried from the respective plugins. For example if
some canvas needs the "-shm/-noshm" option it should query it itself
rather than relying on iUnixSystem driver to do it.
Also most system-dependent interfaces (such as iDosSystem, iUnixSystem,
iOS2System) are gone. I believe there is no need anymore in a private
interface, and if you need just one-two additional system-dependent
functions, you can always implement them through the new SystemExtension
method of iSystem.
-*- Cleaned up the iSystem interface. Lots of methods are gone, several new
have been added.
-*- The canvas-dependent command-line options have been moved to respective
canvas drivers. The respective command-line help have been moved there
as well. From now on: if you want to display any plugin-specific help,
you should implement HandleEvent and handle the cscmdCommandLineHelp
broadcast event. Upon reception of such an event you should display
something like:
Options for X-Windows 2D graphics driver:
-sdepth=<depth> set simulated depth (8, 15, 16, or 32) (default=none)
-shm/noshm SHM extension (default 'shm')
-[no]sysmouse use/don't use system mouse cursor (default=use)
-*- Note that because all QueueXXXEvent methods are gone from iSystem
interface, some canvas drivers may not build. Here is the list of
canvas drivers that I have fixed, use any of the drivers below
for reference when fixing other canvas plugins.
Fixed and tested:
- CSDIVE canvas.
- X-Windows 2D canvas
- X-Windows Line2D canvas
- OS/2 OpenGL canvas
- MGL 2D canvas
- AsciiArt canvas
Fixed but not tested:
- csalleg (cross-platform Allegro) canvas
- unixglide canvas
- svgalib canvas
- gl/x canvas
- ggi driver
Not fixed at all:
- BeOS drivers
- Mac drivers
Sorry, couldn't understand how they work :-)
Some system drivers also can generate events. The following drivers
were converted and tested to use new event architecture:
- DOS/DJGPP
Converted but not tested:
- MacOS
- Win32
- BeOS
Not converted (Objective C :-():
- NeXT
-*- Implemented National Keyboard Support. Every event plug has to provide
two key codes - one is the "raw" keycode (Event.Key.Code) and one is the
"cooked" code (Event.Code.Char). Old programs that use Event.Key.Code will
still work but they will get just low-case characters (e.g. even Shift
and/or Ctrl will be ignored). This also means that hotkeys like "shift+!"
won't work anymore (instead use shift+1). I have fixed autoexec.cfg
for this.
National Keyboard Support should already work with most canvas drivers.
I have tested it with X-Windows driver, OS/2 DIVE driver, MGL driver.
If some driver cannot provide the "cooked" keycode (such as the DOS driver)
it should provide "-1" as the character code, and the system driver will
"cook" it itself.
-*- Fixed X-Windows drivers so that they handle correctly the MappingNotify
event. This enables support for languages that need more than one keymap
(e.g. Cyrillic and others, maybe Japanese).
-*- Removed elapsed_time and current_time arguments from NextFrame. Instead,
I have added a new method called GetElapsedTime (time_t&, time_t&) into
the iSystem interface. Call it if you really need the elapsed time.
You can call it any times per frame you need. The time is updated only
at the start of every frame. The NextFrame() method has no arguments now.
-*- Redesigned the main application loop. The Loop method in system driver
is still there, but it is basically just an:
while (!Shutdown) NextFrame();
If your application does not need the loop, feel free to call NextFrame
without arguments at appropiate times.
Fixed all applications in CVS to use the new NextFrame prototype.
However, for applications not in the repository you will have to fix
this yourself.
-*- Added the new -I or --info switch to gfxtest tool. Using this switch you
can easily see the cause of translucent cubes in blocks: the respective
png files (cubef3 and cubef4) have an alpha channel.
-*- Added -a or --strip-alpha switch to same tool. Note that the blocks data
file in repository has NOT been fixed; somebody still have to do it.
-*- Fixed dependency generation with makedep - instead of $(OUT) prefix it
used the expanded value of $(OUT) - thus when switching compilation mode,
it was needed to rebuild dependencies. Not it is not the case anymore.
-*- Added Z-none counterparts to ALL DrawPFX modes. In this mode the Z-buffer
is ignored at all, thus it is the fastest mode. It can be used to display
non-3D graphics with DrawPFX, for example user interface elements and so
on (and even 3D graphics in depth sorted order).
-*- Added Z-none, Z-fill and Z-use modes to per-pixel alpha routines. Now
you can do:
G3D->SetRenderState (G3DRENDERSTATE_ZBUFFERMODE, CS_ZBUF_ZUSE);
G3D->DrawPolygonFX (...)
The CS_ZBUF_NONE routine has the lesser overhead, of course.
-*- Implemented Z-use and Z-fill modes for alpha-mapped walls (DrawPolygon).
-*- Redesigned the iConsole interface. Basically I have tried to simplify it
as much as possible; having very sophisticated interfaces does not make
easy to write new plugins. Removed the dumb iCursor interface. The cursor
should be provided by the console; if you don't like the cursor, write
your own console. Redesigned the iConsoleInput interface.
-*- Reimplemented cstools/simpcons as a new plugin. cstools library is now
empty; don't know if it is really needed.
-*- Fixed walktest to use the new console plugin. It is not tied anymore to
csSimpleConsole private interface, thus can use any console plugins you
will write in future :-) Also walktest will run now without a console
at all.
-*- Fixed a very seldom happening bug in software 3D driver that leads to
crashes due to division overflow.
-*- When the palette changes in 256-color modes, the texture manager will
emmit an broadcast event so that all interested plugins (including
consoles) can intercept it and query the appropiate drivers for new
information.
-*- Fixed the cscon plugin. The "xstdin" plugin has been removed (use the
one in simpcon instead, it has absolutely same functionality), the
"console.output.standard" and "console.output.funky" consoles works.
You can even enable them in walktest application by uncommenting
the respective lines from cryst.cfg.
-*- Fixed an strange bug in software texture manager - in 8-bit modes the
Scan.GlobalCMap was deleted at the end of PrepareTextures() although
it is extensively used while the program is running ...
-*- Fixed an very old bug in DrawPolygonFX() for software 8-bit modes.
DST was incorrectly missed the screen palette table, thus all modes
that involved DST (fixed-value alpha transparency and blending)
did not worked.
-*- Due to above event system redesign, Crystal Space Windowing System has
been redesigned a little as well. The csApp class is now a plugin from
system driver's point of view and receives events absolutely same way
like any other plugin. Thus the look of the simplest CSWS application
has been changed a little. See cswstest for details.
-*- Crystal Space Windowing System does not implement its own system driver
anymore. Instead, the csApp class is an "almost-normal" plugin now,
except that it is created not via SCF (but rather with `new'). Also
CSWS works with the system driver completely through the iSystem
interface; this means CSWS and system driver don't have to be in
the same module anymore.
-*- Fixed MazeD so that it works with the new CSWS architecture. No other
enhancements though :-(
-*- The list of applications that were fixed after my changes:
blocks
cswstest
demonets (at least compiles)
dnapp (same)
dtsimple
makedep (:-)
map2cs
mazed
mdl2spr (I hope)
metademo
ndrvdemo (compiles)
nstp (not tested, but I believe)
perftest (same)
phyztest (same)
pysimp (hell knows)
scfreg
simple
squawk
walktest (hah)
Still broken:
cctest
shooter and libs/csgame
wscs3d
653 lines of code changed in:
-*- Implemented a new low-level event system architecture. Most programs won't
notice any difference in top-level interface, only low-level interaction
has been changed a little.
Events are generated by iEventPlug objects. Any event plug plugs into an
iEventOutlet which is the "front door" into the system driver event queue
for the respective event source. When you register an iEventPlug object
with the system driver, you get a pointer to the respective iEventOutlet.
The QueueXXXEvent() methods are gone from iSystem. Instead, use the
respective methods from iEventOutlet interface. Also there is an default
system outlet (the 'back door' :-) which may be queried through
GetSystemEventOutlet, use it if you don't consider that your plugin
is worth to have a full-fledged connection with the system driver
event queue.
Note that the new event system allows to write a new generic "record/play"
plugin which will, in record mode, record all events that pass through
the system queue, and on other hand, emit all recorded events back
into the system event queue. Writing one is left as homework for the
reader :-)
-*- New file: include/ievent.h. It defines the interface for any plugin which
desires to generate events into the system event queue. Also it defines
the interface for iEventOutlet objects, which are provided by system
driver.
-*- No more SetSystemDefaults routine in system-dependent drivers.
Any settings must be queried from the respective plugins. For example if
some canvas needs the "-shm/-noshm" option it should query it itself
rather than relying on iUnixSystem driver to do it.
Also most system-dependent interfaces (such as iDosSystem, iUnixSystem,
iOS2System) are gone. I believe there is no need anymore in a private
interface, and if you need just one-two additional system-dependent
functions, you can always implement them through the new SystemExtension
method of iSystem.
-*- Cleaned up the iSystem interface. Lots of methods are gone, several new
have been added.
-*- The canvas-dependent command-line options have been moved to respective
canvas drivers. The respective command-line help have been moved there
as well. From now on: if you want to display any plugin-specific help,
you should implement HandleEvent and handle the cscmdCommandLineHelp
broadcast event. Upon reception of such an event you should display
something like:
Options for X-Windows 2D graphics driver:
-sdepth=<depth> set simulated depth (8, 15, 16, or 32) (default=none)
-shm/noshm SHM extension (default 'shm')
-[no]sysmouse use/don't use system mouse cursor (default=use)
-*- Note that because all QueueXXXEvent methods are gone from iSystem
interface, some canvas drivers may not build. Here is the list of
canvas drivers that I have fixed, use any of the drivers below
for reference when fixing other canvas plugins.
Fixed and tested:
- CSDIVE canvas.
- X-Windows 2D canvas
- X-Windows Line2D canvas
- OS/2 OpenGL canvas
- MGL 2D canvas
- AsciiArt canvas
Fixed but not tested:
- csalleg (cross-platform Allegro) canvas
- unixglide canvas
- svgalib canvas
- gl/x canvas
- ggi driver
Not fixed at all:
- BeOS drivers
- Mac drivers
Sorry, couldn't understand how they work :-)
Some system drivers also can generate events. The following drivers
were converted and tested to use new event architecture:
- DOS/DJGPP
Converted but not tested:
- MacOS
- Win32
- BeOS
Not converted (Objective C :-():
- NeXT
-*- Implemented National Keyboard Support. Every event plug has to provide
two key codes - one is the "raw" keycode (Event.Key.Code) and one is the
"cooked" code (Event.Code.Char). Old programs that use Event.Key.Code will
still work but they will get just low-case characters (e.g. even Shift
and/or Ctrl will be ignored). This also means that hotkeys like "shift+!"
won't work anymore (instead use shift+1). I have fixed autoexec.cfg
for this.
National Keyboard Support should already work with most canvas drivers.
I have tested it with X-Windows driver, OS/2 DIVE driver, MGL driver.
If some driver cannot provide the "cooked" keycode (such as the DOS driver)
it should provide "-1" as the character code, and the system driver will
"cook" it itself.
-*- Fixed X-Windows drivers so that they handle correctly the MappingNotify
event. This enables support for languages that need more than one keymap
(e.g. Cyrillic and others, maybe Japanese).
-*- Removed elapsed_time and current_time arguments from NextFrame. Instead,
I have added a new method called GetElapsedTime (time_t&, time_t&) into
the iSystem interface. Call it if you really need the elapsed time.
You can call it any times per frame you need. The time is updated only
at the start of every frame. The NextFrame() method has no arguments now.
-*- Redesigned the main application loop. The Loop method in system driver
is still there, but it is basically just an:
while (!Shutdown) NextFrame();
If your application does not need the loop, feel free to call NextFrame
without arguments at appropiate times.
Fixed all applications in CVS to use the new NextFrame prototype.
However, for applications not in the repository you will have to fix
this yourself.
-*- Added the new -I or --info switch to gfxtest tool. Using this switch you
can easily see the cause of translucent cubes in blocks: the respective
png files (cubef3 and cubef4) have an alpha channel.
-*- Added -a or --strip-alpha switch to same tool. Note that the blocks data
file in repository has NOT been fixed; somebody still have to do it.
-*- Fixed dependency generation with makedep - instead of $(OUT) prefix it
used the expanded value of $(OUT) - thus when switching compilation mode,
it was needed to rebuild dependencies. Not it is not the case anymore.
-*- Added Z-none counterparts to ALL DrawPFX modes. In this mode the Z-buffer
is ignored at all, thus it is the fastest mode. It can be used to display
non-3D graphics with DrawPFX, for example user interface elements and so
on (and even 3D graphics in depth sorted order).
-*- Added Z-none, Z-fill and Z-use modes to per-pixel alpha routines. Now
you can do:
G3D->SetRenderState (G3DRENDERSTATE_ZBUFFERMODE, CS_ZBUF_ZUSE);
G3D->DrawPolygonFX (...)
The CS_ZBUF_NONE routine has the lesser overhead, of course.
-*- Implemented Z-use and Z-fill modes for alpha-mapped walls (DrawPolygon).
-*- Redesigned the iConsole interface. Basically I have tried to simplify it
as much as possible; having very sophisticated interfaces does not make
easy to write new plugins. Removed the dumb iCursor interface. The cursor
should be provided by the console; if you don't like the cursor, write
your own console. Redesigned the iConsoleInput interface.
-*- Reimplemented cstools/simpcons as a new plugin. cstools library is now
empty; don't know if it is really needed.
-*- Fixed walktest to use the new console plugin. It is not tied anymore to
csSimpleConsole private interface, thus can use any console plugins you
will write in future :-) Also walktest will run now without a console
at all.
-*- Fixed a very seldom happening bug in software 3D driver that leads to
crashes due to division overflow.
-*- When the palette changes in 256-color modes, the texture manager will
emmit an broadcast event so that all interested plugins (including
consoles) can intercept it and query the appropiate drivers for new
information.
-*- Fixed the cscon plugin. The "xstdin" plugin has been removed (use the
one in simpcon instead, it has absolutely same functionality), the
"console.output.standard" and "console.output.funky" consoles works.
You can even enable them in walktest application by uncommenting
the respective lines from cryst.cfg.
-*- Fixed an strange bug in software texture manager - in 8-bit modes the
Scan.GlobalCMap was deleted at the end of PrepareTextures() although
it is extensively used while the program is running ...
-*- Fixed an very old bug in DrawPolygonFX() for software 8-bit modes.
DST was incorrectly missed the screen palette table, thus all modes
that involved DST (fixed-value alpha transparency and blending)
did not worked.
-*- Due to above event system redesign, Crystal Space Windowing System has
been redesigned a little as well. The csApp class is now a plugin from
system driver's point of view and receives events absolutely same way
like any other plugin. Thus the look of the simplest CSWS application
has been changed a little. See cswstest for details.
-*- Crystal Space Windowing System does not implement its own system driver
anymore. Instead, the csApp class is an "almost-normal" plugin now,
except that it is created not via SCF (but rather with `new'). Also
CSWS works with the system driver completely through the iSystem
interface; this means CSWS and system driver don't have to be in
the same module anymore.
-*- Fixed MazeD so that it works with the new CSWS architecture. No other
enhancements though :-(
-*- The list of applications that were fixed after my changes:
blocks
cswstest
demonets (at least compiles)
dnapp (same)
dtsimple
makedep (:-)
map2cs
mazed
mdl2spr (I hope)
metademo
ndrvdemo (compiles)
nstp (not tested, but I believe)
perftest (same)
phyztest (same)
pysimp (hell knows)
scfreg
simple
squawk
walktest (hah)
Still broken:
cctest
shooter and libs/csgame
wscs3d
1564 lines of code changed in:
-*- Implemented a new low-level event system architecture. Most programs won't
notice any difference in top-level interface, only low-level interaction
has been changed a little.
Events are generated by iEventPlug objects. Any event plug plugs into an
iEventOutlet which is the "front door" into the system driver event queue
for the respective event source. When you register an iEventPlug object
with the system driver, you get a pointer to the respective iEventOutlet.
The QueueXXXEvent() methods are gone from iSystem. Instead, use the
respective methods from iEventOutlet interface. Also there is an default
system outlet (the 'back door' :-) which may be queried through
GetSystemEventOutlet, use it if you don't consider that your plugin
is worth to have a full-fledged connection with the system driver
event queue.
Note that the new event system allows to write a new generic "record/play"
plugin which will, in record mode, record all events that pass through
the system queue, and on other hand, emit all recorded events back
into the system event queue. Writing one is left as homework for the
reader :-)
-*- New file: include/ievent.h. It defines the interface for any plugin which
desires to generate events into the system event queue. Also it defines
the interface for iEventOutlet objects, which are provided by system
driver.
-*- No more SetSystemDefaults routine in system-dependent drivers.
Any settings must be queried from the respective plugins. For example if
some canvas needs the "-shm/-noshm" option it should query it itself
rather than relying on iUnixSystem driver to do it.
Also most system-dependent interfaces (such as iDosSystem, iUnixSystem,
iOS2System) are gone. I believe there is no need anymore in a private
interface, and if you need just one-two additional system-dependent
functions, you can always implement them through the new SystemExtension
method of iSystem.
-*- Cleaned up the iSystem interface. Lots of methods are gone, several new
have been added.
-*- The canvas-dependent command-line options have been moved to respective
canvas drivers. The respective command-line help have been moved there
as well. From now on: if you want to display any plugin-specific help,
you should implement HandleEvent and handle the cscmdCommandLineHelp
broadcast event. Upon reception of such an event you should display
something like:
Options for X-Windows 2D graphics driver:
-sdepth=<depth> set simulated depth (8, 15, 16, or 32) (default=none)
-shm/noshm SHM extension (default 'shm')
-[no]sysmouse use/don't use system mouse cursor (default=use)
-*- Note that because all QueueXXXEvent methods are gone from iSystem
interface, some canvas drivers may not build. Here is the list of
canvas drivers that I have fixed, use any of the drivers below
for reference when fixing other canvas plugins.
Fixed and tested:
- CSDIVE canvas.
- X-Windows 2D canvas
- X-Windows Line2D canvas
- OS/2 OpenGL canvas
- MGL 2D canvas
- AsciiArt canvas
Fixed but not tested:
- csalleg (cross-platform Allegro) canvas
- unixglide canvas
- svgalib canvas
- gl/x canvas
- ggi driver
Not fixed at all:
- BeOS drivers
- Mac drivers
Sorry, couldn't understand how they work :-)
Some system drivers also can generate events. The following drivers
were converted and tested to use new event architecture:
- DOS/DJGPP
Converted but not tested:
- MacOS
- Win32
- BeOS
Not converted (Objective C :-():
- NeXT
-*- Implemented National Keyboard Support. Every event plug has to provide
two key codes - one is the "raw" keycode (Event.Key.Code) and one is the
"cooked" code (Event.Code.Char). Old programs that use Event.Key.Code will
still work but they will get just low-case characters (e.g. even Shift
and/or Ctrl will be ignored). This also means that hotkeys like "shift+!"
won't work anymore (instead use shift+1). I have fixed autoexec.cfg
for this.
National Keyboard Support should already work with most canvas drivers.
I have tested it with X-Windows driver, OS/2 DIVE driver, MGL driver.
If some driver cannot provide the "cooked" keycode (such as the DOS driver)
it should provide "-1" as the character code, and the system driver will
"cook" it itself.
-*- Fixed X-Windows drivers so that they handle correctly the MappingNotify
event. This enables support for languages that need more than one keymap
(e.g. Cyrillic and others, maybe Japanese).
-*- Removed elapsed_time and current_time arguments from NextFrame. Instead,
I have added a new method called GetElapsedTime (time_t&, time_t&) into
the iSystem interface. Call it if you really need the elapsed time.
You can call it any times per frame you need. The time is updated only
at the start of every frame. The NextFrame() method has no arguments now.
-*- Redesigned the main application loop. The Loop method in system driver
is still there, but it is basically just an:
while (!Shutdown) NextFrame();
If your application does not need the loop, feel free to call NextFrame
without arguments at appropiate times.
Fixed all applications in CVS to use the new NextFrame prototype.
However, for applications not in the repository you will have to fix
this yourself.
-*- Added the new -I or --info switch to gfxtest tool. Using this switch you
can easily see the cause of translucent cubes in blocks: the respective
png files (cubef3 and cubef4) have an alpha channel.
-*- Added -a or --strip-alpha switch to same tool. Note that the blocks data
file in repository has NOT been fixed; somebody still have to do it.
-*- Fixed dependency generation with makedep - instead of $(OUT) prefix it
used the expanded value of $(OUT) - thus when switching compilation mode,
it was needed to rebuild dependencies. Not it is not the case anymore.
-*- Added Z-none counterparts to ALL DrawPFX modes. In this mode the Z-buffer
is ignored at all, thus it is the fastest mode. It can be used to display
non-3D graphics with DrawPFX, for example user interface elements and so
on (and even 3D graphics in depth sorted order).
-*- Added Z-none, Z-fill and Z-use modes to per-pixel alpha routines. Now
you can do:
G3D->SetRenderState (G3DRENDERSTATE_ZBUFFERMODE, CS_ZBUF_ZUSE);
G3D->DrawPolygonFX (...)
The CS_ZBUF_NONE routine has the lesser overhead, of course.
-*- Implemented Z-use and Z-fill modes for alpha-mapped walls (DrawPolygon).
-*- Redesigned the iConsole interface. Basically I have tried to simplify it
as much as possible; having very sophisticated interfaces does not make
easy to write new plugins. Removed the dumb iCursor interface. The cursor
should be provided by the console; if you don't like the cursor, write
your own console. Redesigned the iConsoleInput interface.
-*- Reimplemented cstools/simpcons as a new plugin. cstools library is now
empty; don't know if it is really needed.
-*- Fixed walktest to use the new console plugin. It is not tied anymore to
csSimpleConsole private interface, thus can use any console plugins you
will write in future :-) Also walktest will run now without a console
at all.
-*- Fixed a very seldom happening bug in software 3D driver that leads to
crashes due to division overflow.
-*- When the palette changes in 256-color modes, the texture manager will
emmit an broadcast event so that all interested plugins (including
consoles) can intercept it and query the appropiate drivers for new
information.
-*- Fixed the cscon plugin. The "xstdin" plugin has been removed (use the
one in simpcon instead, it has absolutely same functionality), the
"console.output.standard" and "console.output.funky" consoles works.
You can even enable them in walktest application by uncommenting
the respective lines from cryst.cfg.
-*- Fixed an strange bug in software texture manager - in 8-bit modes the
Scan.GlobalCMap was deleted at the end of PrepareTextures() although
it is extensively used while the program is running ...
-*- Fixed an very old bug in DrawPolygonFX() for software 8-bit modes.
DST was incorrectly missed the screen palette table, thus all modes
that involved DST (fixed-value alpha transparency and blending)
did not worked.
-*- Due to above event system redesign, Crystal Space Windowing System has
been redesigned a little as well. The csApp class is now a plugin from
system driver's point of view and receives events absolutely same way
like any other plugin. Thus the look of the simplest CSWS application
has been changed a little. See cswstest for details.
-*- Crystal Space Windowing System does not implement its own system driver
anymore. Instead, the csApp class is an "almost-normal" plugin now,
except that it is created not via SCF (but rather with `new'). Also
CSWS works with the system driver completely through the iSystem
interface; this means CSWS and system driver don't have to be in
the same module anymore.
-*- Fixed MazeD so that it works with the new CSWS architecture. No other
enhancements though :-(
-*- The list of applications that were fixed after my changes:
blocks
cswstest
demonets (at least compiles)
dnapp (same)
dtsimple
makedep (:-)
map2cs
mazed
mdl2spr (I hope)
metademo
ndrvdemo (compiles)
nstp (not tested, but I believe)
perftest (same)
phyztest (same)
pysimp (hell knows)
scfreg
simple
squawk
walktest (hah)
Still broken:
cctest
shooter and libs/csgame
wscs3d
1042 lines of code changed in:
- Tried to fix funcon console but failed for now. Will look at
this later.
- Fixed DrawPolygonMesh for procedural textures (OpenGL).
- Fixed Squawk so that it compiles and runs.
- Fixed wscs3d so that it compiles and runs.
- Fixed simple so that it compiles and runs.
- Fixed phyztest so that it compiles and runs.
49 lines of code changed in:
- Continued work on the API for materials. Started replacing
all communication between csengine and g3d with iMaterialHandle
instead of iTextureHandle. This means that txt_handle in
G3DPolygonFX has been replaced with mat_handle for example.
- Replaced SetTexture and SetTextureHandle everywhere with
SetMaterial and SetMaterialHandle. This is a huge change which
will no doubt break ALL apps using CS and textures.
Also replaced most iTextureHandle variables with iMaterialHandle
and most csTextureHandle's with csMaterialHandle.
- Fixed the software renderer to use the new material API.
- Fixed the OpenGL renderer to use the new material API.
(temporarily broke DrawPolygonMesh for procedural textures in
software mode. Will fix this later).
- Fixed WalkTest to work with new materials.
- Fixed Blocks to work with new materials.
397 lines of code changed in:
Fix for gcc 2.96 dependency generation as suggested by Mike Bond
1 lines of code changed in:
Fixed the mysterious usleep warning and linker error for Solaris.
6 lines of code changed in:
Fixed aspect ratio.
2 lines of code changed in:
Fixed terrain visibility rendering.
2 lines of code changed in:
Split csVector in csBasicVector and csVector to have a more
lightweight baseclass, that can be used, where csVector
is to big. (memory footprint)
To make is smaller, csBasicVector has no virtual methods and
defaults to create an empty array.
(csBasicVector will be used in the new csgame CD system
in very large numbers - up to 100000 instaces will not be
impossible!)
116 lines of code changed in:
added clipping code, especially to fontdrawing
132 lines of code changed in:
Made compileable again on MSVC (plus various smaller fixes)
5 lines of code changed in:
Pages: << Previous 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 Next >>
Generated by StatCvs v0.2-dev