Merged revisions 2748:2778 from branch 1.6. A few bug fixes (wrong drop/grab, normals handling, rotation animator) and many doc fixes.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2780 dfc29bdd-3216-0410-991c-e03cc46cb475master
parent
24265b1527
commit
7713cddaf8
|
@ -1,3 +1,11 @@
|
||||||
|
Changes in 1.6.1
|
||||||
|
|
||||||
|
- Fix another (OldValue == NewValue) before drop()/grap(), this time in CTextureAttribute::setTexture.
|
||||||
|
|
||||||
|
- Bugfix: CGUIToolBar::addButton does no longer mess up when no image is set and does now actually work with the text.
|
||||||
|
|
||||||
|
- Fix ninja animation range which got messed up a little when b3d animations got fixed (thx gbox for finding)
|
||||||
|
|
||||||
Changes in 1.6 (23.09.2009)
|
Changes in 1.6 (23.09.2009)
|
||||||
|
|
||||||
- Added IFileSystem::createEmptyFileList, exposed IFileList::sort, addItem and added getID
|
- Added IFileSystem::createEmptyFileList, exposed IFileList::sort, addItem and added getID
|
||||||
|
|
|
@ -556,11 +556,9 @@ public:
|
||||||
Most of the hard work is done. We only need to create the Irrlicht Engine
|
Most of the hard work is done. We only need to create the Irrlicht Engine
|
||||||
device and all the buttons, menus and toolbars. We start up the engine as
|
device and all the buttons, menus and toolbars. We start up the engine as
|
||||||
usual, using createDevice(). To make our application catch events, we set our
|
usual, using createDevice(). To make our application catch events, we set our
|
||||||
eventreceiver as parameter. The #ifdef WIN32 preprocessor commands are not
|
eventreceiver as parameter. As you can see, there is also a call to
|
||||||
necessary, but I included them to make the tutorial use DirectX on Windows and
|
IrrlichtDevice::setResizeable(). This makes the render window resizeable, which
|
||||||
OpenGL on all other platforms like Linux. As you can see, there is also a
|
is quite useful for a mesh viewer.
|
||||||
unusual call to IrrlichtDevice::setResizeAble(). This makes the render window
|
|
||||||
resizeable, which is quite useful for a mesh viewer.
|
|
||||||
*/
|
*/
|
||||||
int main(int argc, char* argv[])
|
int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
|
/** Example 020 Managed Lights
|
||||||
|
|
||||||
// Written by Colin MacDonald
|
Written by Colin MacDonald. This tutorial explains the use of the Light Manager
|
||||||
// Copyright (C) 2002-2009 Nikolaus Gebhardt
|
of Irrlicht. It enables the use of more dynamic light sources than the actual
|
||||||
// This file is part of the "Irrlicht Engine".
|
hardware supports. Further applications of the Light Manager, such as per scene
|
||||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
node callbacks, are left out for simplicity of the example.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <irrlicht.h>
|
#include <irrlicht.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
@ -273,7 +275,7 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*
|
||||||
*/
|
*/
|
||||||
int main(int argumentCount, char * argumentValues[])
|
int main(int argumentCount, char * argumentValues[])
|
||||||
{
|
{
|
||||||
|
@ -328,7 +330,9 @@ int main(int argumentCount, char * argumentValues[])
|
||||||
guienv->addStaticText(L"2 - Closest 3 lights", core::rect<s32>(10,30,200,50));
|
guienv->addStaticText(L"2 - Closest 3 lights", core::rect<s32>(10,30,200,50));
|
||||||
guienv->addStaticText(L"3 - Lights in zone", core::rect<s32>(10,50,200,70));
|
guienv->addStaticText(L"3 - Lights in zone", core::rect<s32>(10,50,200,70));
|
||||||
|
|
||||||
// Add several "zones". You could use this technique to light individual rooms, for example.
|
/*
|
||||||
|
Add several "zones". You could use this technique to light individual rooms, for example.
|
||||||
|
*/
|
||||||
for(f32 zoneX = -100.f; zoneX <= 100.f; zoneX += 50.f)
|
for(f32 zoneX = -100.f; zoneX <= 100.f; zoneX += 50.f)
|
||||||
for(f32 zoneY = -60.f; zoneY <= 60.f; zoneY += 60.f)
|
for(f32 zoneY = -60.f; zoneY <= 60.f; zoneY += 60.f)
|
||||||
{
|
{
|
||||||
|
@ -403,3 +407,7 @@ int main(int argumentCount, char * argumentValues[])
|
||||||
device->drop();
|
device->drop();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
**/
|
||||||
|
|
||||||
|
|
|
@ -23,12 +23,17 @@ Copyright 2006-2009 Burningwater, Thomas Alten
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
/*!
|
/*
|
||||||
Game Data is used to hold Data which is needed to drive the game
|
Game Data is used to hold Data which is needed to drive the game
|
||||||
*/
|
*/
|
||||||
struct GameData
|
struct GameData
|
||||||
{
|
{
|
||||||
GameData ( const path &startupDir);
|
GameData ( const path &startupDir) :
|
||||||
|
retVal(0), createExDevice(0), Device(0), StartupDir(startupDir)
|
||||||
|
{
|
||||||
|
setDefault ();
|
||||||
|
}
|
||||||
|
|
||||||
void setDefault ();
|
void setDefault ();
|
||||||
s32 save ( const path &filename );
|
s32 save ( const path &filename );
|
||||||
s32 load ( const path &filename );
|
s32 load ( const path &filename );
|
||||||
|
@ -58,18 +63,7 @@ struct GameData
|
||||||
IrrlichtDevice *Device;
|
IrrlichtDevice *Device;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*
|
||||||
*/
|
|
||||||
GameData::GameData ( const path &startupDir)
|
|
||||||
{
|
|
||||||
retVal = 0;
|
|
||||||
createExDevice = 0;
|
|
||||||
Device = 0;
|
|
||||||
StartupDir = startupDir;
|
|
||||||
setDefault ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
set default settings
|
set default settings
|
||||||
*/
|
*/
|
||||||
void GameData::setDefault ()
|
void GameData::setDefault ()
|
||||||
|
@ -112,19 +106,17 @@ void GameData::setDefault ()
|
||||||
CurrentMapName = "";
|
CurrentMapName = "";
|
||||||
CurrentArchiveList.clear ();
|
CurrentArchiveList.clear ();
|
||||||
|
|
||||||
//! Explorer Media directory
|
// Explorer Media directory
|
||||||
CurrentArchiveList.push_back ( StartupDir + "../../media/" );
|
CurrentArchiveList.push_back ( StartupDir + "../../media/" );
|
||||||
|
|
||||||
//! Add the original quake3 files before you load your custom map
|
// Add the original quake3 files before you load your custom map
|
||||||
//! Most mods are using the original shaders, models&items&weapons
|
// Most mods are using the original shaders, models&items&weapons
|
||||||
CurrentArchiveList.push_back ( "/q/baseq3/" );
|
CurrentArchiveList.push_back("/q/baseq3/");
|
||||||
|
|
||||||
|
|
||||||
CurrentArchiveList.push_back ( StartupDir + "../../media/map-20kdm2.pk3" );
|
|
||||||
|
|
||||||
|
CurrentArchiveList.push_back(StartupDir + "../../media/map-20kdm2.pk3");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*
|
||||||
Load the current game State from a typical quake3 cfg file
|
Load the current game State from a typical quake3 cfg file
|
||||||
*/
|
*/
|
||||||
s32 GameData::load ( const path &filename )
|
s32 GameData::load ( const path &filename )
|
||||||
|
@ -132,7 +124,7 @@ s32 GameData::load ( const path &filename )
|
||||||
if (!Device)
|
if (!Device)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
//! the quake3 mesh loader can also handle *.shader and *.cfg file
|
// the quake3 mesh loader can also handle *.shader and *.cfg file
|
||||||
IQ3LevelMesh* mesh = (IQ3LevelMesh*) Device->getSceneManager()->getMesh ( filename );
|
IQ3LevelMesh* mesh = (IQ3LevelMesh*) Device->getSceneManager()->getMesh ( filename );
|
||||||
if (!mesh)
|
if (!mesh)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -171,7 +163,7 @@ s32 GameData::load ( const path &filename )
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*
|
||||||
Store the current game State in a quake3 configuration file
|
Store the current game State in a quake3 configuration file
|
||||||
*/
|
*/
|
||||||
s32 GameData::save ( const path &filename )
|
s32 GameData::save ( const path &filename )
|
||||||
|
@ -217,7 +209,7 @@ s32 GameData::save ( const path &filename )
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*
|
||||||
Representing a player
|
Representing a player
|
||||||
*/
|
*/
|
||||||
struct Q3Player : public IAnimationEndCallBack
|
struct Q3Player : public IAnimationEndCallBack
|
||||||
|
@ -254,7 +246,7 @@ struct Q3Player : public IAnimationEndCallBack
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/* End player
|
||||||
*/
|
*/
|
||||||
void Q3Player::shutdown ()
|
void Q3Player::shutdown ()
|
||||||
{
|
{
|
||||||
|
@ -274,7 +266,7 @@ void Q3Player::shutdown ()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/* create a new player
|
||||||
*/
|
*/
|
||||||
void Q3Player::create ( IrrlichtDevice *device, IQ3LevelMesh* mesh, ISceneNode *mapNode, IMetaTriangleSelector *meta )
|
void Q3Player::create ( IrrlichtDevice *device, IQ3LevelMesh* mesh, ISceneNode *mapNode, IMetaTriangleSelector *meta )
|
||||||
{
|
{
|
||||||
|
@ -373,7 +365,7 @@ void Q3Player::create ( IrrlichtDevice *device, IQ3LevelMesh* mesh, ISceneNode *
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*
|
||||||
so we need a good starting Position in the level.
|
so we need a good starting Position in the level.
|
||||||
we can ask the Quake3 Loader for all entities with class_name "info_player_deathmatch"
|
we can ask the Quake3 Loader for all entities with class_name "info_player_deathmatch"
|
||||||
*/
|
*/
|
||||||
|
@ -413,7 +405,7 @@ void Q3Player::setpos ( const vector3df &pos, const vector3df &rotation )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/* set the Animation of the player and weapon
|
||||||
*/
|
*/
|
||||||
void Q3Player::setAnim ( const c8 *name )
|
void Q3Player::setAnim ( const c8 *name )
|
||||||
{
|
{
|
||||||
|
@ -437,8 +429,7 @@ void Q3Player::setAnim ( const c8 *name )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
// Callback
|
||||||
*/
|
|
||||||
void Q3Player::OnAnimationEnd(IAnimatedMeshSceneNode* node)
|
void Q3Player::OnAnimationEnd(IAnimatedMeshSceneNode* node)
|
||||||
{
|
{
|
||||||
setAnim ( 0 );
|
setAnim ( 0 );
|
||||||
|
@ -446,7 +437,8 @@ void Q3Player::OnAnimationEnd(IAnimatedMeshSceneNode* node)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//! GUIElements
|
/* GUI Elements
|
||||||
|
*/
|
||||||
struct GUI
|
struct GUI
|
||||||
{
|
{
|
||||||
GUI ()
|
GUI ()
|
||||||
|
@ -489,11 +481,10 @@ struct GUI
|
||||||
IGUIStaticText* StatusLine;
|
IGUIStaticText* StatusLine;
|
||||||
IGUIImage* Logo;
|
IGUIImage* Logo;
|
||||||
IGUIWindow* Window;
|
IGUIWindow* Window;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*
|
||||||
CQuake3EventHandler controls the game
|
CQuake3EventHandler controls the game
|
||||||
*/
|
*/
|
||||||
class CQuake3EventHandler : public IEventReceiver
|
class CQuake3EventHandler : public IEventReceiver
|
||||||
|
@ -553,14 +544,14 @@ private:
|
||||||
void dropMap ();
|
void dropMap ();
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/* Constructor
|
||||||
*/
|
*/
|
||||||
CQuake3EventHandler::CQuake3EventHandler( GameData *game )
|
CQuake3EventHandler::CQuake3EventHandler( GameData *game )
|
||||||
: Game(game), Mesh(0), MapParent(0), ShaderParent(0), ItemParent(0), UnresolvedParent(0),
|
: Game(game), Mesh(0), MapParent(0), ShaderParent(0), ItemParent(0), UnresolvedParent(0),
|
||||||
BulletParent(0), FogParent(0), SkyNode(0), Meta(0)
|
BulletParent(0), FogParent(0), SkyNode(0), Meta(0)
|
||||||
{
|
{
|
||||||
buf[0]=0;
|
buf[0]=0;
|
||||||
//! Also use 16 Bit Textures for 16 Bit RenderDevice
|
// Also use 16 Bit Textures for 16 Bit RenderDevice
|
||||||
if ( Game->deviceParam.Bits == 16 )
|
if ( Game->deviceParam.Bits == 16 )
|
||||||
{
|
{
|
||||||
game->Device->getVideoDriver()->setTextureCreationFlag(ETCF_ALWAYS_16_BIT, true);
|
game->Device->getVideoDriver()->setTextureCreationFlag(ETCF_ALWAYS_16_BIT, true);
|
||||||
|
@ -578,6 +569,7 @@ CQuake3EventHandler::CQuake3EventHandler( GameData *game )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// destructor
|
||||||
CQuake3EventHandler::~CQuake3EventHandler ()
|
CQuake3EventHandler::~CQuake3EventHandler ()
|
||||||
{
|
{
|
||||||
Player[0].shutdown ();
|
Player[0].shutdown ();
|
||||||
|
@ -589,7 +581,7 @@ CQuake3EventHandler::~CQuake3EventHandler ()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//! create runtime textures smog, fog
|
// create runtime textures smog, fog
|
||||||
void CQuake3EventHandler::createTextures ()
|
void CQuake3EventHandler::createTextures ()
|
||||||
{
|
{
|
||||||
IVideoDriver * driver = Game->Device->getVideoDriver();
|
IVideoDriver * driver = Game->Device->getVideoDriver();
|
||||||
|
@ -642,7 +634,7 @@ void CQuake3EventHandler::createTextures ()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*
|
||||||
create the GUI
|
create the GUI
|
||||||
*/
|
*/
|
||||||
void CQuake3EventHandler::CreateGUI()
|
void CQuake3EventHandler::CreateGUI()
|
||||||
|
@ -835,8 +827,7 @@ void CQuake3EventHandler::CreateGUI()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
/*!
|
|
||||||
Add an Archive to the FileSystems und updates the GUI
|
Add an Archive to the FileSystems und updates the GUI
|
||||||
*/
|
*/
|
||||||
void CQuake3EventHandler::AddArchive ( const path& archiveName )
|
void CQuake3EventHandler::AddArchive ( const path& archiveName )
|
||||||
|
@ -922,7 +913,7 @@ void CQuake3EventHandler::AddArchive ( const path& archiveName )
|
||||||
u32 g = 0;
|
u32 g = 0;
|
||||||
core::stringw s;
|
core::stringw s;
|
||||||
|
|
||||||
//! browse the attached file system
|
// browse the attached file system
|
||||||
fs->setFileListSystem ( FILESYSTEM_VIRTUAL );
|
fs->setFileListSystem ( FILESYSTEM_VIRTUAL );
|
||||||
fs->changeWorkingDirectoryTo ( "/maps/" );
|
fs->changeWorkingDirectoryTo ( "/maps/" );
|
||||||
IFileList *fileList = fs->createFileList ();
|
IFileList *fileList = fs->createFileList ();
|
||||||
|
@ -1000,7 +991,7 @@ void CQuake3EventHandler::AddArchive ( const path& archiveName )
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*
|
||||||
clears the Map in Memory
|
clears the Map in Memory
|
||||||
*/
|
*/
|
||||||
void CQuake3EventHandler::dropMap ()
|
void CQuake3EventHandler::dropMap ()
|
||||||
|
@ -1037,7 +1028,7 @@ void CQuake3EventHandler::dropMap ()
|
||||||
Mesh = 0;
|
Mesh = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/* Load new map
|
||||||
*/
|
*/
|
||||||
void CQuake3EventHandler::LoadMap ( const stringw &mapName, s32 collision )
|
void CQuake3EventHandler::LoadMap ( const stringw &mapName, s32 collision )
|
||||||
{
|
{
|
||||||
|
@ -1134,9 +1125,6 @@ void CQuake3EventHandler::LoadMap ( const stringw &mapName, s32 collision )
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
**/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Adds a SceneNode with an icon to the Scene Tree
|
Adds a SceneNode with an icon to the Scene Tree
|
||||||
*/
|
*/
|
||||||
void CQuake3EventHandler::addSceneTreeItem( ISceneNode * parent, IGUITreeViewNode* nodeParent)
|
void CQuake3EventHandler::addSceneTreeItem( ISceneNode * parent, IGUITreeViewNode* nodeParent)
|
||||||
|
@ -1209,13 +1197,13 @@ void CQuake3EventHandler::addSceneTreeItem( ISceneNode * parent, IGUITreeViewNod
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//! Adds life!
|
// Adds life!
|
||||||
void CQuake3EventHandler::CreatePlayers()
|
void CQuake3EventHandler::CreatePlayers()
|
||||||
{
|
{
|
||||||
Player[0].create ( Game->Device, Mesh, MapParent, Meta );
|
Player[0].create ( Game->Device, Mesh, MapParent, Meta );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Adds a skydome to the scene
|
// Adds a skydome to the scene
|
||||||
void CQuake3EventHandler::AddSky( u32 dome, const c8 *texture)
|
void CQuake3EventHandler::AddSky( u32 dome, const c8 *texture)
|
||||||
{
|
{
|
||||||
ISceneManager *smgr = Game->Device->getSceneManager ();
|
ISceneManager *smgr = Game->Device->getSceneManager ();
|
||||||
|
@ -1282,8 +1270,7 @@ void CQuake3EventHandler::AddSky( u32 dome, const c8 *texture)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
// enable GUI elements
|
||||||
*/
|
|
||||||
void CQuake3EventHandler::SetGUIActive( s32 command)
|
void CQuake3EventHandler::SetGUIActive( s32 command)
|
||||||
{
|
{
|
||||||
bool inputState = false;
|
bool inputState = false;
|
||||||
|
@ -1325,7 +1312,7 @@ void CQuake3EventHandler::SetGUIActive( s32 command)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*
|
||||||
Handle game input
|
Handle game input
|
||||||
*/
|
*/
|
||||||
bool CQuake3EventHandler::OnEvent(const SEvent& eve)
|
bool CQuake3EventHandler::OnEvent(const SEvent& eve)
|
||||||
|
@ -1535,7 +1522,7 @@ bool CQuake3EventHandler::OnEvent(const SEvent& eve)
|
||||||
else
|
else
|
||||||
if (eve.KeyInput.Key == KEY_F11)
|
if (eve.KeyInput.Key == KEY_F11)
|
||||||
{
|
{
|
||||||
//! screenshot are taken without gamma!
|
// screenshot are taken without gamma!
|
||||||
IImage* image = Game->Device->getVideoDriver()->createScreenShot();
|
IImage* image = Game->Device->getVideoDriver()->createScreenShot();
|
||||||
if (image)
|
if (image)
|
||||||
{
|
{
|
||||||
|
@ -1834,8 +1821,7 @@ void CQuake3EventHandler::useItem( Q3Player * player)
|
||||||
// play sound
|
// play sound
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
// rendered when bullets hit something
|
||||||
*/
|
|
||||||
void CQuake3EventHandler::createParticleImpacts( u32 now )
|
void CQuake3EventHandler::createParticleImpacts( u32 now )
|
||||||
{
|
{
|
||||||
ISceneManager* sm = Game->Device->getSceneManager();
|
ISceneManager* sm = Game->Device->getSceneManager();
|
||||||
|
@ -2016,7 +2002,7 @@ void CQuake3EventHandler::Animate()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/* The main game states
|
||||||
*/
|
*/
|
||||||
void runGame ( GameData *game )
|
void runGame ( GameData *game )
|
||||||
{
|
{
|
||||||
|
@ -2034,10 +2020,10 @@ void runGame ( GameData *game )
|
||||||
// create an event receiver based on current game data
|
// create an event receiver based on current game data
|
||||||
CQuake3EventHandler *eventHandler = new CQuake3EventHandler( game );
|
CQuake3EventHandler *eventHandler = new CQuake3EventHandler( game );
|
||||||
|
|
||||||
//! load stored config
|
// load stored config
|
||||||
game->load ( "explorer.cfg" );
|
game->load ( "explorer.cfg" );
|
||||||
|
|
||||||
//! add our media directory and archive to the file system
|
// add our media directory and archive to the file system
|
||||||
for ( u32 i = 0; i < game->CurrentArchiveList.size(); ++i )
|
for ( u32 i = 0; i < game->CurrentArchiveList.size(); ++i )
|
||||||
{
|
{
|
||||||
eventHandler->AddArchive ( game->CurrentArchiveList[i] );
|
eventHandler->AddArchive ( game->CurrentArchiveList[i] );
|
||||||
|
@ -2088,7 +2074,7 @@ void runGame ( GameData *game )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/* The main routine, doing all setup
|
||||||
*/
|
*/
|
||||||
int IRRCALLCONV main(int argc, char* argv[])
|
int IRRCALLCONV main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
|
@ -2140,4 +2126,3 @@ int IRRCALLCONV main(int argc, char* argv[])
|
||||||
/*
|
/*
|
||||||
**/
|
**/
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -181,8 +181,11 @@ Global
|
||||||
{FE853A36-E0D1-4AC5-A792-B643E70D2953}.Debug|Win32.ActiveCfg = Debug|Win32
|
{FE853A36-E0D1-4AC5-A792-B643E70D2953}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
{FE853A36-E0D1-4AC5-A792-B643E70D2953}.Debug|Win32.Build.0 = Debug|Win32
|
{FE853A36-E0D1-4AC5-A792-B643E70D2953}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{FE853A36-E0D1-4AC5-A792-B643E70D2953}.Release|Win32.ActiveCfg = Release|Win32
|
{FE853A36-E0D1-4AC5-A792-B643E70D2953}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{FE853A36-E0D1-4AC5-A792-B643E70D2953}.Release|Win32.Build.0 = Release|Win32
|
||||||
{16007FE2-142B-47F8-93E1-519BA3F39E71}.Debug|Win32.ActiveCfg = Debug|Win32
|
{16007FE2-142B-47F8-93E1-519BA3F39E71}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{16007FE2-142B-47F8-93E1-519BA3F39E71}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{16007FE2-142B-47F8-93E1-519BA3F39E71}.Release|Win32.ActiveCfg = Release|Win32
|
{16007FE2-142B-47F8-93E1-519BA3F39E71}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{16007FE2-142B-47F8-93E1-519BA3F39E71}.Release|Win32.Build.0 = Release|Win32
|
||||||
{CDC4AAA9-72E1-4FFA-A04D-7EF59D8B97CD}.Debug|Win32.ActiveCfg = Debug|Win32
|
{CDC4AAA9-72E1-4FFA-A04D-7EF59D8B97CD}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
{CDC4AAA9-72E1-4FFA-A04D-7EF59D8B97CD}.Debug|Win32.Build.0 = Debug|Win32
|
{CDC4AAA9-72E1-4FFA-A04D-7EF59D8B97CD}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{CDC4AAA9-72E1-4FFA-A04D-7EF59D8B97CD}.Release|Win32.ActiveCfg = Release|Win32
|
{CDC4AAA9-72E1-4FFA-A04D-7EF59D8B97CD}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
|
|
@ -313,7 +313,7 @@ struct SEvent
|
||||||
* each connected joystick once per run() of the device. Joystick events will
|
* each connected joystick once per run() of the device. Joystick events will
|
||||||
* not be generated by default. If joystick support is available for the
|
* not be generated by default. If joystick support is available for the
|
||||||
* active device, _IRR_COMPILE_WITH_JOYSTICK_EVENTS_ is defined, and
|
* active device, _IRR_COMPILE_WITH_JOYSTICK_EVENTS_ is defined, and
|
||||||
* @ref IrrlichtDevice::activateJoysticks() has been called, an event of
|
* @ref irr::IrrlichtDevice::activateJoysticks() has been called, an event of
|
||||||
* this type will be generated once per joystick per @ref IrrlichtDevice::run()
|
* this type will be generated once per joystick per @ref IrrlichtDevice::run()
|
||||||
* regardless of whether the state of the joystick has actually changed. */
|
* regardless of whether the state of the joystick has actually changed. */
|
||||||
struct SJoystickEvent
|
struct SJoystickEvent
|
||||||
|
@ -420,7 +420,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//! Information on a joystick, returned from @ref IrrlichtDevice::activateJoysticks()
|
//! Information on a joystick, returned from @ref irr::IrrlichtDevice::activateJoysticks()
|
||||||
struct SJoystickInfo
|
struct SJoystickInfo
|
||||||
{
|
{
|
||||||
//! The ID of the joystick
|
//! The ID of the joystick
|
||||||
|
|
|
@ -70,7 +70,7 @@ namespace scene
|
||||||
virtual void scale(IMeshBuffer* buffer, const core::vector3df& factor) const = 0;
|
virtual void scale(IMeshBuffer* buffer, const core::vector3df& factor) const = 0;
|
||||||
|
|
||||||
//! Scales the actual mesh, not a scene node.
|
//! Scales the actual mesh, not a scene node.
|
||||||
/** \deprecated
|
/** \deprecated Use scale() instead
|
||||||
\param mesh Mesh on which the operation is performed.
|
\param mesh Mesh on which the operation is performed.
|
||||||
\param factor Scale factor for each axis. */
|
\param factor Scale factor for each axis. */
|
||||||
virtual void scaleMesh(IMesh* mesh, const core::vector3df& factor) const {return scale(mesh,factor);}
|
virtual void scaleMesh(IMesh* mesh, const core::vector3df& factor) const {return scale(mesh,factor);}
|
||||||
|
@ -98,7 +98,7 @@ namespace scene
|
||||||
virtual void transform(IMeshBuffer* buffer, const core::matrix4& m) const = 0;
|
virtual void transform(IMeshBuffer* buffer, const core::matrix4& m) const = 0;
|
||||||
|
|
||||||
//! Applies a transformation to a mesh
|
//! Applies a transformation to a mesh
|
||||||
/** \deprecated
|
/** \deprecated Use transform() instead
|
||||||
\param mesh Mesh on which the operation is performed.
|
\param mesh Mesh on which the operation is performed.
|
||||||
\param m transformation matrix. */
|
\param m transformation matrix. */
|
||||||
virtual void transformMesh(IMesh* mesh, const core::matrix4& m) const {return transform(mesh,m);}
|
virtual void transformMesh(IMesh* mesh, const core::matrix4& m) const {return transform(mesh,m);}
|
||||||
|
|
|
@ -209,7 +209,7 @@ namespace scene
|
||||||
* a dummy object in this mode. Meshes included in the
|
* a dummy object in this mode. Meshes included in the
|
||||||
* scene will be added into the scene manager with the
|
* scene will be added into the scene manager with the
|
||||||
* following naming scheme:
|
* following naming scheme:
|
||||||
* path/to/file/file.dea#meshname. The loading of such
|
* "path/to/file/file.dea#meshname". The loading of such
|
||||||
* meshes is logged. Currently, this loader is able to
|
* meshes is logged. Currently, this loader is able to
|
||||||
* create meshes (made of only polygons), lights, and
|
* create meshes (made of only polygons), lights, and
|
||||||
* cameras. Materials and animations are currently not
|
* cameras. Materials and animations are currently not
|
||||||
|
|
|
@ -404,7 +404,7 @@ namespace video
|
||||||
example in picture edit programs. To avoid this problem, you
|
example in picture edit programs. To avoid this problem, you
|
||||||
could use the makeColorKeyTexture method, which takes the
|
could use the makeColorKeyTexture method, which takes the
|
||||||
position of a pixel instead a color value.
|
position of a pixel instead a color value.
|
||||||
\param \deprecated zeroTexels If set to true, then any texels that match
|
\param zeroTexels \deprecated If set to true, then any texels that match
|
||||||
the color key will have their color, as well as their alpha, set to zero
|
the color key will have their color, as well as their alpha, set to zero
|
||||||
(i.e. black). This behaviour matches the legacy (buggy) behaviour prior
|
(i.e. black). This behaviour matches the legacy (buggy) behaviour prior
|
||||||
to release 1.5 and is provided for backwards compatibility only.*/
|
to release 1.5 and is provided for backwards compatibility only.*/
|
||||||
|
@ -420,7 +420,7 @@ namespace video
|
||||||
\param colorKeyPixelPos Position of a pixel with the color key
|
\param colorKeyPixelPos Position of a pixel with the color key
|
||||||
color. Every texel with this color will become fully transparent as
|
color. Every texel with this color will become fully transparent as
|
||||||
described above.
|
described above.
|
||||||
\deprecated \param zeroTexels If set to true, then any texels that match
|
\param zeroTexels \deprecated If set to true, then any texels that match
|
||||||
the color key will have their color, as well as their alpha, set to zero
|
the color key will have their color, as well as their alpha, set to zero
|
||||||
(i.e. black). This behaviour matches the legacy (buggy) behaviour prior
|
(i.e. black). This behaviour matches the legacy (buggy) behaviour prior
|
||||||
to release 1.5 and is provided for backwards compatibility only.*/
|
to release 1.5 and is provided for backwards compatibility only.*/
|
||||||
|
|
|
@ -122,12 +122,15 @@ typedef unsigned short wchar_t;
|
||||||
namespace irr
|
namespace irr
|
||||||
{
|
{
|
||||||
|
|
||||||
//! Should the wide character version of the FileSystem be used
|
//! Type name for character type used by the file system.
|
||||||
|
/** Should the wide character version of the FileSystem be used it is a
|
||||||
|
16 bit character variable. Used for unicode Filesystem and unicode strings.
|
||||||
|
Else it is a 8 bit character variable. Used for ansi Filesystem and non-unicode
|
||||||
|
strings
|
||||||
|
*/
|
||||||
#if defined(_IRR_WCHAR_FILESYSTEM)
|
#if defined(_IRR_WCHAR_FILESYSTEM)
|
||||||
//! 16 bit character variable. Used for unicode Filesystem and unicode strings
|
|
||||||
typedef wchar_t fschar_t;
|
typedef wchar_t fschar_t;
|
||||||
#else
|
#else
|
||||||
//! 8 bit character variable. Used for ansi Filesystem and non-unicode strings
|
|
||||||
typedef char fschar_t;
|
typedef char fschar_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
Here you'll find any information you'll need to develop applications with
|
Here you'll find any information you'll need to develop applications with
|
||||||
irrXML. If you look for a tutorial on how to start, take a look at the \ref irrxmlexample,
|
irrXML. If you look for a tutorial on how to start, take a look at the \ref irrxmlexample,
|
||||||
at the homepage of irrXML at <A HREF="http://www.ambiera.com/irrxml/">www.ambiera.com/irrxml/</A>
|
at the homepage of irrXML at <A HREF="http://www.ambiera.com/irrxml/">www.ambiera.com/irrxml/</A>
|
||||||
or into the SDK in the directory \example.
|
or into the SDK in the directory example.
|
||||||
|
|
||||||
irrXML is intended to be a high speed and easy-to-use XML Parser for C++, and
|
irrXML is intended to be a high speed and easy-to-use XML Parser for C++, and
|
||||||
this documentation is an important part of it. If you have any questions or
|
this documentation is an important part of it. If you have any questions or
|
||||||
|
@ -522,7 +522,7 @@ namespace io
|
||||||
bool deleteCallback = false);
|
bool deleteCallback = false);
|
||||||
|
|
||||||
|
|
||||||
/*! \file irrxml.h
|
/*! \file irrXML.h
|
||||||
\brief Header file of the irrXML, the Irrlicht XML parser.
|
\brief Header file of the irrXML, the Irrlicht XML parser.
|
||||||
|
|
||||||
This file includes everything needed for using irrXML,
|
This file includes everything needed for using irrXML,
|
||||||
|
@ -534,7 +534,7 @@ namespace io
|
||||||
\endcode
|
\endcode
|
||||||
|
|
||||||
It is also common to use the two namespaces in which irrXML is included,
|
It is also common to use the two namespaces in which irrXML is included,
|
||||||
directly after #including irrXML.h:
|
directly after including irrXML.h:
|
||||||
|
|
||||||
\code
|
\code
|
||||||
#include <irrXML.h>
|
#include <irrXML.h>
|
||||||
|
|
|
@ -357,7 +357,7 @@ namespace irr
|
||||||
// THE FOLLOWING IS AN EMPTY LIST OF ALL SUB NAMESPACES
|
// THE FOLLOWING IS AN EMPTY LIST OF ALL SUB NAMESPACES
|
||||||
// EXISTING ONLY FOR THE DOCUMENTATION SOFTWARE DOXYGEN.
|
// EXISTING ONLY FOR THE DOCUMENTATION SOFTWARE DOXYGEN.
|
||||||
|
|
||||||
//! In this namespace can be found basic classes like vectors, planes, arrays, lists and so on.
|
//! Basic classes such as vectors, planes, arrays, lists, and so on can be found in this namespace.
|
||||||
namespace core
|
namespace core
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -367,14 +367,12 @@ namespace irr
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
//! This namespace provides interfaces for input/output: Reading and
|
//! This namespace provides interfaces for input/output: Reading and writing files, accessing zip archives, xml files, ...
|
||||||
//! writing files, accessing zip archives, xml files, ...
|
|
||||||
namespace io
|
namespace io
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
//! All scene management can be found in this namespace: Mesh loading,
|
//! All scene management can be found in this namespace: Mesh loading, special scene nodes like octrees and billboards, ...
|
||||||
//! special scene nodes like octrees and billboards, ...
|
|
||||||
namespace scene
|
namespace scene
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -391,4 +389,3 @@ namespace irr
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,8 @@ namespace irr
|
||||||
namespace io
|
namespace io
|
||||||
{
|
{
|
||||||
|
|
||||||
|
//! Type used for all file system related strings.
|
||||||
|
/** This type will transparently handle different file system encodings. */
|
||||||
typedef core::string<fschar_t> path;
|
typedef core::string<fschar_t> path;
|
||||||
|
|
||||||
} // io
|
} // io
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 24 KiB |
|
@ -21,7 +21,11 @@ rem for /F %%i in ('dir ..\..\..\examples\[01]*\main.cpp') DO ..\sed.exe -f tuto
|
||||||
..\sed.exe -f tutorials.sed ..\..\..\examples\14.Win32Window\main.cpp >>tut.txt
|
..\sed.exe -f tutorials.sed ..\..\..\examples\14.Win32Window\main.cpp >>tut.txt
|
||||||
..\sed.exe -f tutorials.sed ..\..\..\examples\15.LoadIrrFile\main.cpp >>tut.txt
|
..\sed.exe -f tutorials.sed ..\..\..\examples\15.LoadIrrFile\main.cpp >>tut.txt
|
||||||
..\sed.exe -f tutorials.sed ..\..\..\examples\16.Quake3MapShader\main.cpp >>tut.txt
|
..\sed.exe -f tutorials.sed ..\..\..\examples\16.Quake3MapShader\main.cpp >>tut.txt
|
||||||
..\sed.exe -f tutorials.sed ..\..\..\examples\17.SplitScreen\main.cpp >>tut.txt
|
..\sed.exe -f tutorials.sed ..\..\..\examples\17.HelloWorld_Mobile\main.cpp >>tut.txt
|
||||||
|
..\sed.exe -f tutorials.sed ..\..\..\examples\18.SplitScreen\main.cpp >>tut.txt
|
||||||
|
..\sed.exe -f tutorials.sed ..\..\..\examples\19.MouseAndJoystick\main.cpp >>tut.txt
|
||||||
|
..\sed.exe -f tutorials.sed ..\..\..\examples\20.ManagedLights\main.cpp >>tut.txt
|
||||||
|
..\sed.exe -f tutorials.sed ..\..\..\examples\21.Quake3Explorer\main.cpp >>tut.txt
|
||||||
|
|
||||||
..\doxygen.exe doxygen.cfg
|
..\doxygen.exe doxygen.cfg
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
rm tut.txt || true;
|
rm tut.txt || true;
|
||||||
for i in ../../../examples/[01]*/main.cpp; do
|
for i in ../../../examples/[012]*/main.cpp; do
|
||||||
sed -f tutorials.sed $i >>tut.txt;
|
sed -f tutorials.sed $i >>tut.txt;
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
|
@ -1850,6 +1850,9 @@ public:
|
||||||
|
|
||||||
virtual void setTexture(video::ITexture* value)
|
virtual void setTexture(video::ITexture* value)
|
||||||
{
|
{
|
||||||
|
if ( value == Value )
|
||||||
|
return;
|
||||||
|
|
||||||
if (Value)
|
if (Value)
|
||||||
Value->drop();
|
Value->drop();
|
||||||
|
|
||||||
|
|
|
@ -909,9 +909,9 @@ IMesh* CMeshManipulator::createMeshWithTangents(IMesh* mesh, bool recalculateNor
|
||||||
v[idx[i+2]].TCoords);
|
v[idx[i+2]].TCoords);
|
||||||
|
|
||||||
if (recalculateNormals)
|
if (recalculateNormals)
|
||||||
v[idx[i+0]].Tangent += localTangent * weight.X;
|
v[idx[i+0]].Normal += localNormal * weight.X;
|
||||||
|
v[idx[i+0]].Tangent += localTangent * weight.X;
|
||||||
v[idx[i+0]].Binormal += localBinormal * weight.X;
|
v[idx[i+0]].Binormal += localBinormal * weight.X;
|
||||||
v[idx[i+0]].Normal += localNormal * weight.X;
|
|
||||||
|
|
||||||
calculateTangents(
|
calculateTangents(
|
||||||
localNormal,
|
localNormal,
|
||||||
|
@ -925,9 +925,9 @@ IMesh* CMeshManipulator::createMeshWithTangents(IMesh* mesh, bool recalculateNor
|
||||||
v[idx[i+0]].TCoords);
|
v[idx[i+0]].TCoords);
|
||||||
|
|
||||||
if (recalculateNormals)
|
if (recalculateNormals)
|
||||||
v[idx[i+1]].Tangent += localTangent * weight.Y;
|
v[idx[i+1]].Normal += localNormal * weight.Y;
|
||||||
|
v[idx[i+1]].Tangent += localTangent * weight.Y;
|
||||||
v[idx[i+1]].Binormal += localBinormal * weight.Y;
|
v[idx[i+1]].Binormal += localBinormal * weight.Y;
|
||||||
v[idx[i+1]].Normal += localNormal * weight.Y;
|
|
||||||
|
|
||||||
calculateTangents(
|
calculateTangents(
|
||||||
localNormal,
|
localNormal,
|
||||||
|
@ -941,9 +941,9 @@ IMesh* CMeshManipulator::createMeshWithTangents(IMesh* mesh, bool recalculateNor
|
||||||
v[idx[i+1]].TCoords);
|
v[idx[i+1]].TCoords);
|
||||||
|
|
||||||
if (recalculateNormals)
|
if (recalculateNormals)
|
||||||
v[idx[i+2]].Tangent += localTangent * weight.Z;
|
v[idx[i+2]].Normal += localNormal * weight.Z;
|
||||||
|
v[idx[i+2]].Tangent += localTangent * weight.Z;
|
||||||
v[idx[i+2]].Binormal += localBinormal * weight.Z;
|
v[idx[i+2]].Binormal += localBinormal * weight.Z;
|
||||||
v[idx[i+2]].Normal += localNormal * weight.Z;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Normalize the tangents and binormals
|
// Normalize the tangents and binormals
|
||||||
|
@ -1104,7 +1104,6 @@ IMesh* CMeshManipulator::createMeshWith1TCoords(IMesh* mesh) const
|
||||||
|
|
||||||
SMeshBuffer* buffer = new SMeshBuffer();
|
SMeshBuffer* buffer = new SMeshBuffer();
|
||||||
buffer->Material = mesh->getMeshBuffer(b)->getMaterial();
|
buffer->Material = mesh->getMeshBuffer(b)->getMaterial();
|
||||||
buffer->Material.MaterialType = video::EMT_SOLID;
|
|
||||||
|
|
||||||
// copy vertices
|
// copy vertices
|
||||||
|
|
||||||
|
|
|
@ -33,11 +33,11 @@ void CSceneNodeAnimatorRotation::animateNode(ISceneNode* node, u32 timeMs)
|
||||||
// precision problems with huge floats.
|
// precision problems with huge floats.
|
||||||
core::vector3df rot = node->getRotation() + Rotation*(diffTime*0.1f);
|
core::vector3df rot = node->getRotation() + Rotation*(diffTime*0.1f);
|
||||||
if (rot.X>360.f)
|
if (rot.X>360.f)
|
||||||
fmodf(rot.X, 360.f);
|
rot.X=fmodf(rot.X, 360.f);
|
||||||
if (rot.Y>360.f)
|
if (rot.Y>360.f)
|
||||||
fmodf(rot.Y, 360.f);
|
rot.Y=fmodf(rot.Y, 360.f);
|
||||||
if (rot.Z>360.f)
|
if (rot.Z>360.f)
|
||||||
fmodf(rot.Z, 360.f);
|
rot.Z=fmodf(rot.Z, 360.f);
|
||||||
node->setRotation(rot);
|
node->setRotation(rot);
|
||||||
StartTime=timeMs;
|
StartTime=timeMs;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue