Merge revision 4795:4798 from trunk to ogl-es:
- Add examples 30+ to the buildAllExamples script. - Rewrite profiler implementation some more to get around linker troubles. - Remove superfluous if which always resulted in true. Thx @dcb for reporting (Bug #430). git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@4847 dfc29bdd-3216-0410-991c-e03cc46cb475master
parent
c8fe2d4e3b
commit
d6d4221eb0
|
@ -288,9 +288,23 @@ int main()
|
||||||
if (driverType==video::EDT_COUNT)
|
if (driverType==video::EDT_COUNT)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Profiler is independent of the device - so we can time the device setup
|
||||||
|
*/
|
||||||
|
MY_PROFILE(s32 pDev = getProfiler().add(L"createDevice", L"group a");)
|
||||||
|
MY_PROFILE(getProfiler().start(pDev);)
|
||||||
|
|
||||||
IrrlichtDevice * device = createDevice(driverType, core::dimension2d<u32>(640, 480));
|
IrrlichtDevice * device = createDevice(driverType, core::dimension2d<u32>(640, 480));
|
||||||
if (device == 0)
|
if (device == 0)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
When working with start/stop you should add a stop to all exit paths.
|
||||||
|
Although in this case it wouldn't matter as we don't do anything with it when we quit here.
|
||||||
|
*/
|
||||||
|
MY_PROFILE(getProfiler().stop(pDev);)
|
||||||
return 1; // could not create selected driver.
|
return 1; // could not create selected driver.
|
||||||
|
}
|
||||||
|
MY_PROFILE(getProfiler().stop(pDev);)
|
||||||
|
|
||||||
video::IVideoDriver* driver = device->getVideoDriver();
|
video::IVideoDriver* driver = device->getVideoDriver();
|
||||||
IGUIEnvironment* env = device->getGUIEnvironment();
|
IGUIEnvironment* env = device->getGUIEnvironment();
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
<Project filename="24.CursorControl/CursorControl.cbp" />
|
<Project filename="24.CursorControl/CursorControl.cbp" />
|
||||||
<Project filename="25.XmlHandling/XmlHandling.cbp" />
|
<Project filename="25.XmlHandling/XmlHandling.cbp" />
|
||||||
<Project filename="26.OcclusionQuery/OcclusionQuery.cbp" />
|
<Project filename="26.OcclusionQuery/OcclusionQuery.cbp" />
|
||||||
<Project filename="30.Profiling/Profiling.cbp" />
|
<Project filename="30.Profiling/Profiling.cbp" active="1" />
|
||||||
<Project filename="Demo/demo.cbp" />
|
<Project filename="Demo/demo.cbp" />
|
||||||
<Project filename="../tools/GUIEditor/GUIEditor_gcc.cbp" />
|
<Project filename="../tools/GUIEditor/GUIEditor_gcc.cbp" />
|
||||||
<Project filename="../tools/MeshConverter/MeshConverter.cbp" />
|
<Project filename="../tools/MeshConverter/MeshConverter.cbp" />
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#! /bin/bash
|
#! /bin/bash
|
||||||
[ -z $1 ] || TARGET=$1
|
[ -z $1 ] || TARGET=$1
|
||||||
[ -z $TARGET ] && TARGET=all
|
[ -z $TARGET ] && TARGET=all
|
||||||
for i in [012]* Demo; do
|
for i in [0123]* Demo; do
|
||||||
echo "Building $i";
|
echo "Building $i";
|
||||||
pushd $i && make clean $TARGET;
|
pushd $i && make clean $TARGET;
|
||||||
popd;
|
popd;
|
||||||
|
|
|
@ -2,23 +2,34 @@
|
||||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||||
// Written by Michael Zeilfelder
|
// Written by Michael Zeilfelder
|
||||||
|
|
||||||
#ifndef __PROFILER_H_INCLUDED__
|
#ifndef __I_PROFILER_H_INCLUDED__
|
||||||
#define __PROFILER_H_INCLUDED__
|
#define __I_PROFILER_H_INCLUDED__
|
||||||
|
|
||||||
#include "IrrCompileConfig.h"
|
#include "IrrCompileConfig.h"
|
||||||
#include "irrString.h"
|
#include "irrString.h"
|
||||||
#include "irrArray.h"
|
#include "irrArray.h"
|
||||||
#include "ITimer.h"
|
#include "ITimer.h"
|
||||||
|
#include <limits.h> // for INT_MAX (we should have a S32_MAX...)
|
||||||
|
|
||||||
namespace irr
|
namespace irr
|
||||||
{
|
{
|
||||||
|
|
||||||
class ITimer;
|
class ITimer;
|
||||||
|
|
||||||
|
//! For internal engine use:
|
||||||
|
//! Code inside IRR_PROFILE is only executed when _IRR_COMPILE_WITH_PROFILING_ is set
|
||||||
|
//! This allows disabling all profiler code completely by changing that define.
|
||||||
|
//! It's generally useful to wrap profiler-calls in application code with a similar macro.
|
||||||
|
#ifdef _IRR_COMPILE_WITH_PROFILING_
|
||||||
|
#define IRR_PROFILE(X) X
|
||||||
|
#else
|
||||||
|
#define IRR_PROFILE(X)
|
||||||
|
#endif // IRR_PROFILE
|
||||||
|
|
||||||
//! Used to store the profile data (and also used for profile group data).
|
//! Used to store the profile data (and also used for profile group data).
|
||||||
struct SProfileData
|
struct SProfileData
|
||||||
{
|
{
|
||||||
friend class CProfiler;
|
friend class IProfiler;
|
||||||
|
|
||||||
SProfileData()
|
SProfileData()
|
||||||
{
|
{
|
||||||
|
@ -66,16 +77,16 @@ struct SProfileData
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
//! Convert the whole data into a string
|
|
||||||
core::stringw getAsString() const;
|
|
||||||
|
|
||||||
//! Return a string which describes the columns returned by getAsString
|
|
||||||
static core::stringw makeTitleString();
|
|
||||||
|
|
||||||
// just to be used for searching as it does no initialization besides id
|
// just to be used for searching as it does no initialization besides id
|
||||||
SProfileData(u32 id) : Id(id) {}
|
SProfileData(u32 id) : Id(id) {}
|
||||||
|
|
||||||
void reset();
|
void reset()
|
||||||
|
{
|
||||||
|
CountCalls = 0;
|
||||||
|
LongestTime = 0;
|
||||||
|
TimeSum = 0;
|
||||||
|
LastTimeStarted = 0;
|
||||||
|
}
|
||||||
|
|
||||||
s32 Id;
|
s32 Id;
|
||||||
u32 GroupIndex;
|
u32 GroupIndex;
|
||||||
|
@ -95,13 +106,15 @@ private:
|
||||||
// And also why it works with id's instead of strings in the start/stop functions even if it makes using
|
// And also why it works with id's instead of strings in the start/stop functions even if it makes using
|
||||||
// the class slightly harder.
|
// the class slightly harder.
|
||||||
// The class comes without reference-counting because the profiler-instance is never released (TBD).
|
// The class comes without reference-counting because the profiler-instance is never released (TBD).
|
||||||
class IRRLICHT_API CProfiler
|
class IProfiler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//! Constructor. You could use this to create a new profiler, but usually getProfiler() is used to access the global instance.
|
//! Constructor. You could use this to create a new profiler, but usually getProfiler() is used to access the global instance.
|
||||||
CProfiler();
|
IProfiler() : Timer(0), NextAutoId(INT_MAX)
|
||||||
|
{}
|
||||||
|
|
||||||
~CProfiler();
|
virtual ~IProfiler()
|
||||||
|
{}
|
||||||
|
|
||||||
//! Add an id with given name and group which can be used for profiling with start/stop
|
//! Add an id with given name and group which can be used for profiling with start/stop
|
||||||
/** After calling this once you can start/stop profiling for the given id.
|
/** After calling this once you can start/stop profiling for the given id.
|
||||||
|
@ -109,14 +122,14 @@ public:
|
||||||
have been added automatically by the other add function.
|
have been added automatically by the other add function.
|
||||||
\param name: Name for displaying profile data.
|
\param name: Name for displaying profile data.
|
||||||
\param groupName: Each id belongs into a group - this helps on displaying profile data. */
|
\param groupName: Each id belongs into a group - this helps on displaying profile data. */
|
||||||
void add(s32 id, const core::stringw &name, const core::stringw &groupName);
|
inline void add(s32 id, const core::stringw &name, const core::stringw &groupName);
|
||||||
|
|
||||||
//! Add an automatically generated for the given name and group which can be used for profiling with start/stop.
|
//! Add an automatically generated for the given name and group which can be used for profiling with start/stop.
|
||||||
/** After calling this once you can start/stop profiling with the returned id.
|
/** After calling this once you can start/stop profiling with the returned id.
|
||||||
\param name: Name for displaying profile data.
|
\param name: Name for displaying profile data.
|
||||||
\param groupName: Each id belongs into a group - this helps on displaying profile data.
|
\param groupName: Each id belongs into a group - this helps on displaying profile data.
|
||||||
\return Automatic id's start at INT_MAX and count down for each new id. If the name already has an id then that id will be returned. */
|
\return Automatic id's start at INT_MAX and count down for each new id. If the name already has an id then that id will be returned. */
|
||||||
s32 add(const core::stringw &name, const core::stringw &groupName);
|
inline s32 add(const core::stringw &name, const core::stringw &groupName);
|
||||||
|
|
||||||
//! Return the number of profile data blocks. There is one for each id.
|
//! Return the number of profile data blocks. There is one for each id.
|
||||||
u32 getProfileDataCount() const
|
u32 getProfileDataCount() const
|
||||||
|
@ -128,7 +141,7 @@ public:
|
||||||
/** \param result Receives the resulting data index when one was found.
|
/** \param result Receives the resulting data index when one was found.
|
||||||
\param name String with name to search for
|
\param name String with name to search for
|
||||||
\return true when found, false when not found */
|
\return true when found, false when not found */
|
||||||
bool findDataIndex(u32 & result, const core::stringw &name) const;
|
inline bool findDataIndex(u32 & result, const core::stringw &name) const;
|
||||||
|
|
||||||
//! Get the profile data
|
//! Get the profile data
|
||||||
/** \param index A value between 0 and getProfileDataCount()-1. Indices can change when new id's are added.*/
|
/** \param index A value between 0 and getProfileDataCount()-1. Indices can change when new id's are added.*/
|
||||||
|
@ -140,25 +153,18 @@ public:
|
||||||
//! Get the profile data
|
//! Get the profile data
|
||||||
/** \param id Same value as used in ::add
|
/** \param id Same value as used in ::add
|
||||||
\return Profile data for the given id or 0 when it does not exist. */
|
\return Profile data for the given id or 0 when it does not exist. */
|
||||||
const SProfileData* getProfileDataById(u32 id)
|
inline const SProfileData* getProfileDataById(u32 id);
|
||||||
{
|
|
||||||
SProfileData data(id);
|
|
||||||
s32 idx = ProfileDatas.binary_search(data);
|
|
||||||
if ( idx >= 0 )
|
|
||||||
return &ProfileDatas[idx];
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Get the number of profile groups. Will be at least 1.
|
//! Get the number of profile groups. Will be at least 1.
|
||||||
/** NOTE: The first groups is always L"overview" which is an overview for all existing groups */
|
/** NOTE: The first groups is always L"overview" which is an overview for all existing groups */
|
||||||
u32 getGroupCount() const
|
inline u32 getGroupCount() const
|
||||||
{
|
{
|
||||||
return ProfileGroups.size();
|
return ProfileGroups.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get profile data for a group.
|
//! Get profile data for a group.
|
||||||
/** NOTE: The first groups is always L"overview" which is an overview for all existing groups */
|
/** NOTE: The first groups is always L"overview" which is an overview for all existing groups */
|
||||||
const SProfileData& getGroupData(u32 index) const
|
inline const SProfileData& getGroupData(u32 index) const
|
||||||
{
|
{
|
||||||
return ProfileGroups[index];
|
return ProfileGroups[index];
|
||||||
}
|
}
|
||||||
|
@ -167,7 +173,7 @@ public:
|
||||||
/** \param result Receives the resulting group index when one was found.
|
/** \param result Receives the resulting group index when one was found.
|
||||||
\param name String with name to search for
|
\param name String with name to search for
|
||||||
\return true when found, false when not found */
|
\return true when found, false when not found */
|
||||||
bool findGroupIndex(u32 & result, const core::stringw &name) const;
|
inline bool findGroupIndex(u32 & result, const core::stringw &name) const;
|
||||||
|
|
||||||
|
|
||||||
//! Start profile-timing for the given id
|
//! Start profile-timing for the given id
|
||||||
|
@ -179,41 +185,103 @@ public:
|
||||||
inline void stop(s32 id);
|
inline void stop(s32 id);
|
||||||
|
|
||||||
//! Reset profile data for the given id
|
//! Reset profile data for the given id
|
||||||
void resetDataById(s32 id);
|
inline void resetDataById(s32 id);
|
||||||
|
|
||||||
//! Reset profile data for the given index
|
//! Reset profile data for the given index
|
||||||
void resetDataByIndex(u32 index);
|
inline void resetDataByIndex(u32 index);
|
||||||
|
|
||||||
//! Reset profile data for a whole group
|
//! Reset profile data for a whole group
|
||||||
void resetGroup(u32 index);
|
inline void resetGroup(u32 index);
|
||||||
|
|
||||||
//! Reset all profile data
|
//! Reset all profile data
|
||||||
/** NOTE: This is not deleting id's or groups, just resetting all timers to 0. */
|
/** NOTE: This is not deleting id's or groups, just resetting all timers to 0. */
|
||||||
void resetAll();
|
inline void resetAll();
|
||||||
|
|
||||||
//! Write all profile-data into a string
|
//! Write all profile-data into a string
|
||||||
/** \param result Receives the result string.
|
/** \param result Receives the result string.
|
||||||
\param includeOverview When true a group-overview is attached first
|
\param includeOverview When true a group-overview is attached first
|
||||||
\param suppressUncalled When true elements which got never called are not printed */
|
\param suppressUncalled When true elements which got never called are not printed */
|
||||||
void printAll(core::stringw &result, bool includeOverview=false,bool suppressUncalled=true) const;
|
virtual void printAll(core::stringw &result, bool includeOverview=false,bool suppressUncalled=true) const = 0;
|
||||||
|
|
||||||
//! Write the profile data of one group into a string
|
//! Write the profile data of one group into a string
|
||||||
/** \param result Receives the result string.
|
/** \param result Receives the result string.
|
||||||
\param groupIndex_ */
|
\param groupIndex_ */
|
||||||
void printGroup(core::stringw &result, u32 groupIndex, bool suppressUncalled) const;
|
virtual void printGroup(core::stringw &result, u32 groupIndex, bool suppressUncalled) const = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
u32 addGroup(const core::stringw &name);
|
inline u32 addGroup(const core::stringw &name);
|
||||||
|
|
||||||
private:
|
// I would prefer using os::Timer, but os.h is not in the public interface so far.
|
||||||
ITimer * Timer; // I would prefer using os::Timer, but os.h is not in the public interface so far.
|
// Timer must be initialized by the implementation.
|
||||||
s32 NextAutoId; // for giving out id's automatically
|
ITimer * Timer;
|
||||||
core::array<SProfileData> ProfileDatas;
|
core::array<SProfileData> ProfileDatas;
|
||||||
core::array<SProfileData> ProfileGroups;
|
core::array<SProfileData> ProfileGroups;
|
||||||
|
|
||||||
|
private:
|
||||||
|
s32 NextAutoId; // for giving out id's automatically
|
||||||
};
|
};
|
||||||
|
|
||||||
void CProfiler::start(s32 id)
|
//! Access the Irrlicht profiler object.
|
||||||
|
/** Profiler is always accessible, except in destruction of global objects.
|
||||||
|
If you want to get internal profiling information about the engine itself
|
||||||
|
you will have to re-compile the engine with _IRR_COMPILE_WITH_PROFILING_ enabled.
|
||||||
|
But you can use the profiler for profiling your own projects without that. */
|
||||||
|
IRRLICHT_API IProfiler& IRRCALLCONV getProfiler();
|
||||||
|
|
||||||
|
//! Class where the objects profile their own life-time.
|
||||||
|
/** This is a comfort wrapper around the IProfiler start/stop mechanism which is easier to use
|
||||||
|
when you want to profile a scope. You only have to create an object and it will profile it's own lifetime
|
||||||
|
for the given id. */
|
||||||
|
class CProfileScope
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//! Construct with an known id.
|
||||||
|
/** This is the fastest scope constructor, but the id must have been added before.
|
||||||
|
\param id Any id which you did add to the profiler before. */
|
||||||
|
CProfileScope(s32 id)
|
||||||
|
: Id(id), Profiler(getProfiler())
|
||||||
|
{
|
||||||
|
Profiler.start(Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Object will create the given name, groupName combination for the id if it doesn't exist already
|
||||||
|
/** \param id: Should be >= 0 as negative id's are reserved for Irrlicht. Also very large numbers (near INT_MAX) might
|
||||||
|
have been created already by the automatic add function of ::IProfiler.
|
||||||
|
\param name: Name for displaying profile data.
|
||||||
|
\param groupName: Each id belongs into a group - this helps on displaying profile data. */
|
||||||
|
CProfileScope(s32 id, const core::stringw &name, const core::stringw &groupName)
|
||||||
|
: Id(id), Profiler(getProfiler())
|
||||||
|
{
|
||||||
|
Profiler.add(Id, name, groupName);
|
||||||
|
Profiler.start(Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Object will create an id for the given name, groupName combination if they don't exist already
|
||||||
|
/** Slowest scope constructor, but usually still fine unless speed is very critical.
|
||||||
|
\param name: Name for displaying profile data.
|
||||||
|
\param groupName: Each id belongs into a group - this helps on displaying profile data. */
|
||||||
|
CProfileScope(const core::stringw &name, const core::stringw &groupName)
|
||||||
|
: Profiler(getProfiler())
|
||||||
|
{
|
||||||
|
Id = Profiler.add(name, groupName);
|
||||||
|
Profiler.start(Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
~CProfileScope()
|
||||||
|
{
|
||||||
|
Profiler.stop(Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
s32 Id;
|
||||||
|
IProfiler& Profiler;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// IMPLEMENTATION for in-line stuff
|
||||||
|
|
||||||
|
void IProfiler::start(s32 id)
|
||||||
{
|
{
|
||||||
s32 idx = ProfileDatas.binary_search(SProfileData(id));
|
s32 idx = ProfileDatas.binary_search(SProfileData(id));
|
||||||
if ( idx >= 0 && Timer )
|
if ( idx >= 0 && Timer )
|
||||||
|
@ -222,7 +290,7 @@ void CProfiler::start(s32 id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CProfiler::stop(s32 id)
|
void IProfiler::stop(s32 id)
|
||||||
{
|
{
|
||||||
if ( Timer )
|
if ( Timer )
|
||||||
{
|
{
|
||||||
|
@ -253,71 +321,145 @@ void CProfiler::stop(s32 id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Access the Irrlicht profiler object.
|
s32 IProfiler::add(const core::stringw &name, const core::stringw &groupName)
|
||||||
/** Profiler is always accessible, except in destruction of global objects.
|
|
||||||
If you want to get internal profiling information about the engine itself
|
|
||||||
you will have to re-compile the engine with _IRR_COMPILE_WITH_PROFILING_ enabled.
|
|
||||||
But you can use the profiler for profiling your own projects without that. */
|
|
||||||
IRRLICHT_API CProfiler& IRRCALLCONV getProfiler();
|
|
||||||
|
|
||||||
//! Class where the objects profile their own life-time.
|
|
||||||
/** This is a comfort wrapper around the CProfiler start/stop mechanism which is easier to use
|
|
||||||
when you want to profile a scope. You only have to create an object and it will profile it's own lifetime
|
|
||||||
for the given id. */
|
|
||||||
class CProfileScope
|
|
||||||
{
|
{
|
||||||
public:
|
u32 index;
|
||||||
//! Construct with an known id.
|
if ( findDataIndex(index, name) )
|
||||||
/** This is the fastest scope constructor, but the id must have been added before.
|
|
||||||
\param id Any id which you did add to the profiler before. */
|
|
||||||
CProfileScope(s32 id)
|
|
||||||
: Id(id), Profiler(getProfiler())
|
|
||||||
{
|
{
|
||||||
Profiler.start(Id);
|
add( ProfileDatas[index].Id, name, groupName );
|
||||||
|
return ProfileDatas[index].Id;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s32 id = NextAutoId;
|
||||||
|
--NextAutoId;
|
||||||
|
add( id, name, groupName );
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void IProfiler::add(s32 id, const core::stringw &name, const core::stringw &groupName)
|
||||||
|
{
|
||||||
|
u32 groupIdx;
|
||||||
|
if ( !findGroupIndex(groupIdx, groupName) )
|
||||||
|
{
|
||||||
|
groupIdx = addGroup(groupName);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Object will create the given name, groupName combination for the id if it doesn't exist already
|
SProfileData data(id);
|
||||||
/** \param id: Should be >= 0 as negative id's are reserved for Irrlicht. Also very large numbers (near INT_MAX) might
|
s32 idx = ProfileDatas.binary_search(data);
|
||||||
have been created already by the automatic add function of ::CProfiler.
|
if ( idx < 0 )
|
||||||
\param name: Name for displaying profile data.
|
|
||||||
\param groupName: Each id belongs into a group - this helps on displaying profile data. */
|
|
||||||
CProfileScope(s32 id, const core::stringw &name, const core::stringw &groupName)
|
|
||||||
: Id(id), Profiler(getProfiler())
|
|
||||||
{
|
{
|
||||||
Profiler.add(Id, name, groupName);
|
data.reset();
|
||||||
Profiler.start(Id);
|
data.GroupIndex = groupIdx;
|
||||||
|
data.Name = name;
|
||||||
|
|
||||||
|
ProfileDatas.push_back(data);
|
||||||
|
ProfileDatas.sort();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// only reset on group changes, otherwise we want to keep the data or coding CProfileScope would become tricky.
|
||||||
|
if ( groupIdx != ProfileDatas[idx].GroupIndex )
|
||||||
|
{
|
||||||
|
resetDataByIndex((u32)idx);
|
||||||
|
ProfileDatas[idx].GroupIndex = groupIdx;
|
||||||
|
}
|
||||||
|
ProfileDatas[idx].Name = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 IProfiler::addGroup(const core::stringw &name)
|
||||||
|
{
|
||||||
|
SProfileData group;
|
||||||
|
group.Id = -1; // Id for groups doesn't matter so far
|
||||||
|
group.Name = name;
|
||||||
|
ProfileGroups.push_back(group);
|
||||||
|
return ProfileGroups.size()-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IProfiler::findDataIndex(u32 & result, const core::stringw &name) const
|
||||||
|
{
|
||||||
|
for ( u32 i=0; i < ProfileDatas.size(); ++i )
|
||||||
|
{
|
||||||
|
if ( ProfileDatas[i].Name == name )
|
||||||
|
{
|
||||||
|
result = i;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Object will create an id for the given name, groupName combination if they don't exist already
|
return false;
|
||||||
/** Slowest scope constructor, but usually still fine unless speed is very critical.
|
}
|
||||||
\param name: Name for displaying profile data.
|
|
||||||
\param groupName: Each id belongs into a group - this helps on displaying profile data. */
|
const SProfileData* IProfiler::getProfileDataById(u32 id)
|
||||||
CProfileScope(const core::stringw &name, const core::stringw &groupName)
|
{
|
||||||
: Profiler(getProfiler())
|
SProfileData data(id);
|
||||||
|
s32 idx = ProfileDatas.binary_search(data);
|
||||||
|
if ( idx >= 0 )
|
||||||
|
return &ProfileDatas[idx];
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IProfiler::findGroupIndex(u32 & result, const core::stringw &name) const
|
||||||
|
{
|
||||||
|
for ( u32 i=0; i < ProfileGroups.size(); ++i )
|
||||||
{
|
{
|
||||||
Id = Profiler.add(name, groupName);
|
if ( ProfileGroups[i].Name == name )
|
||||||
Profiler.start(Id);
|
{
|
||||||
|
result = i;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
~CProfileScope()
|
return false;
|
||||||
{
|
}
|
||||||
Profiler.stop(Id);
|
|
||||||
}
|
void IProfiler::resetDataById(s32 id)
|
||||||
|
{
|
||||||
|
s32 idx = ProfileDatas.binary_search(SProfileData(id));
|
||||||
|
if ( idx >= 0 )
|
||||||
|
{
|
||||||
|
resetDataByIndex((u32)idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void IProfiler::resetDataByIndex(u32 index)
|
||||||
|
{
|
||||||
|
SProfileData &data = ProfileDatas[index];
|
||||||
|
|
||||||
|
SProfileData & group = ProfileGroups[data.GroupIndex];
|
||||||
|
group.CountCalls -= data.CountCalls;
|
||||||
|
group.TimeSum -= data.TimeSum;
|
||||||
|
|
||||||
|
data.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Reset profile data for a whole group
|
||||||
|
void IProfiler::resetGroup(u32 index)
|
||||||
|
{
|
||||||
|
for ( u32 i=0; i<ProfileDatas.size(); ++i )
|
||||||
|
{
|
||||||
|
if ( ProfileDatas[i].GroupIndex == index )
|
||||||
|
ProfileDatas[i].reset();
|
||||||
|
}
|
||||||
|
if ( index < ProfileGroups.size() )
|
||||||
|
ProfileGroups[index].reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void IProfiler::resetAll()
|
||||||
|
{
|
||||||
|
for ( u32 i=0; i<ProfileDatas.size(); ++i )
|
||||||
|
{
|
||||||
|
ProfileDatas[i].reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( u32 i=0; i<ProfileGroups.size(); ++i )
|
||||||
|
{
|
||||||
|
ProfileGroups[i].reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
|
||||||
s32 Id;
|
|
||||||
CProfiler& Profiler;
|
|
||||||
};
|
|
||||||
} // namespace irr
|
} // namespace irr
|
||||||
|
|
||||||
//! For internal engine use:
|
#endif // __I_PROFILER_H_INCLUDED__
|
||||||
//! Code inside IRR_PROFILE is only executed when _IRR_COMPILE_WITH_PROFILING_ is set
|
|
||||||
//! This allows disabling all profiler code completely by changing that define.
|
|
||||||
//! It's generally useful to wrap profiler-calls in application code with a similar macro.
|
|
||||||
#ifdef _IRR_COMPILE_WITH_PROFILING_
|
|
||||||
#define IRR_PROFILE(X) X
|
|
||||||
#else
|
|
||||||
#define IRR_PROFILE(X)
|
|
||||||
#endif // IRR_PROFILE
|
|
||||||
|
|
||||||
#endif // __PROFILER_H_INCLUDED__
|
|
|
@ -36,7 +36,7 @@
|
||||||
#include "CMeshBuffer.h"
|
#include "CMeshBuffer.h"
|
||||||
#include "coreutil.h"
|
#include "coreutil.h"
|
||||||
#include "CVertexBuffer.h"
|
#include "CVertexBuffer.h"
|
||||||
#include "CProfiler.h"
|
#include "IProfiler.h"
|
||||||
#include "dimension2d.h"
|
#include "dimension2d.h"
|
||||||
#include "ECullingTypes.h"
|
#include "ECullingTypes.h"
|
||||||
#include "EDebugSceneTypes.h"
|
#include "EDebugSceneTypes.h"
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
namespace irr
|
namespace irr
|
||||||
{
|
{
|
||||||
|
|
||||||
class CProfiler;
|
class IProfiler;
|
||||||
struct SProfileData;
|
struct SProfileData;
|
||||||
|
|
||||||
namespace gui
|
namespace gui
|
||||||
|
@ -66,7 +66,7 @@ namespace gui
|
||||||
void fillRow(u32 rowIndex, const SProfileData& data, bool overviewTitle, bool groupTitle);
|
void fillRow(u32 rowIndex, const SProfileData& data, bool overviewTitle, bool groupTitle);
|
||||||
void rebuildColumns();
|
void rebuildColumns();
|
||||||
|
|
||||||
CProfiler * Profiler;
|
IProfiler * Profiler;
|
||||||
irr::gui::IGUITable* DisplayTable;
|
irr::gui::IGUITable* DisplayTable;
|
||||||
irr::u32 CurrentGroupIdx;
|
irr::u32 CurrentGroupIdx;
|
||||||
bool IgnoreUncalled;
|
bool IgnoreUncalled;
|
||||||
|
|
|
@ -272,13 +272,10 @@ void CIrrMeshWriter::writeMeshBuffer(const scene::IMeshBuffer* buffer)
|
||||||
Writer->writeText(str.c_str());
|
Writer->writeText(str.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i % maxIndicesPerLine != maxIndicesPerLine)
|
if (i % maxIndicesPerLine == maxIndicesPerLine-1)
|
||||||
{
|
Writer->writeLineBreak();
|
||||||
if (i % maxIndicesPerLine == maxIndicesPerLine-1)
|
else
|
||||||
Writer->writeLineBreak();
|
Writer->writeText(L" ");
|
||||||
else
|
|
||||||
Writer->writeText(L" ");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((indexCount-1) % maxIndicesPerLine != maxIndicesPerLine-1)
|
if ((indexCount-1) % maxIndicesPerLine != maxIndicesPerLine-1)
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
#include "CShadowVolumeSceneNode.h"
|
#include "CShadowVolumeSceneNode.h"
|
||||||
#include "EProfileIDs.h"
|
#include "EProfileIDs.h"
|
||||||
#include "CProfiler.h"
|
#include "IProfiler.h"
|
||||||
|
|
||||||
namespace irr
|
namespace irr
|
||||||
{
|
{
|
||||||
|
|
|
@ -4,63 +4,16 @@
|
||||||
|
|
||||||
#include "CProfiler.h"
|
#include "CProfiler.h"
|
||||||
#include "CTimer.h"
|
#include "CTimer.h"
|
||||||
#include <limits.h>
|
|
||||||
|
|
||||||
namespace irr
|
namespace irr
|
||||||
{
|
{
|
||||||
IRRLICHT_API CProfiler& IRRCALLCONV getProfiler()
|
IRRLICHT_API IProfiler& IRRCALLCONV getProfiler()
|
||||||
{
|
{
|
||||||
static CProfiler profiler;
|
static CProfiler profiler;
|
||||||
return profiler;
|
return profiler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//! Convert the whole data into a string
|
|
||||||
core::stringw SProfileData::getAsString() const
|
|
||||||
{
|
|
||||||
if ( CountCalls > 0 )
|
|
||||||
{
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#pragma warning(disable:4996) // 'sprintf' was declared deprecated
|
|
||||||
#endif
|
|
||||||
// Can't use swprintf as it fails on some platforms (especially mobile platforms)
|
|
||||||
// Can't use Irrlicht functions because we have no string formatting.
|
|
||||||
char dummy[1023];
|
|
||||||
sprintf(dummy, "%-15.15s%-12u%-12u%-12u%-12u",
|
|
||||||
core::stringc(Name).c_str(), CountCalls, TimeSum,
|
|
||||||
TimeSum / CountCalls, LongestTime);
|
|
||||||
dummy[1022] = 0;
|
|
||||||
|
|
||||||
return core::stringw(dummy);
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#pragma warning(default :4996) // 'sprintf' was declared deprecated
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return Name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Return a string which describes the columns returned by getAsString
|
|
||||||
core::stringw SProfileData::makeTitleString()
|
|
||||||
{
|
|
||||||
return core::stringw("name calls time(sum) time(avg) time(max)");
|
|
||||||
}
|
|
||||||
|
|
||||||
void SProfileData::reset()
|
|
||||||
{
|
|
||||||
CountCalls = 0;
|
|
||||||
LongestTime = 0;
|
|
||||||
TimeSum = 0;
|
|
||||||
LastTimeStarted = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CProfiler::CProfiler()
|
CProfiler::CProfiler()
|
||||||
: Timer(0)
|
|
||||||
, NextAutoId(INT_MAX)
|
|
||||||
{
|
{
|
||||||
Timer = new CTimer(true);
|
Timer = new CTimer(true);
|
||||||
|
|
||||||
|
@ -73,139 +26,9 @@ CProfiler::~CProfiler()
|
||||||
Timer->drop();
|
Timer->drop();
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 CProfiler::add(const core::stringw &name, const core::stringw &groupName)
|
|
||||||
{
|
|
||||||
u32 index;
|
|
||||||
if ( findDataIndex(index, name) )
|
|
||||||
{
|
|
||||||
add( ProfileDatas[index].Id, name, groupName );
|
|
||||||
return ProfileDatas[index].Id;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
s32 id = NextAutoId;
|
|
||||||
--NextAutoId;
|
|
||||||
add( id, name, groupName );
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CProfiler::add(s32 id, const core::stringw &name, const core::stringw &groupName)
|
|
||||||
{
|
|
||||||
u32 groupIdx;
|
|
||||||
if ( !findGroupIndex(groupIdx, groupName) )
|
|
||||||
{
|
|
||||||
groupIdx = addGroup(groupName);
|
|
||||||
}
|
|
||||||
|
|
||||||
SProfileData data(id);
|
|
||||||
s32 idx = ProfileDatas.binary_search(data);
|
|
||||||
if ( idx < 0 )
|
|
||||||
{
|
|
||||||
data.reset();
|
|
||||||
data.GroupIndex = groupIdx;
|
|
||||||
data.Name = name;
|
|
||||||
|
|
||||||
ProfileDatas.push_back(data);
|
|
||||||
ProfileDatas.sort();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// only reset on group changes, otherwise we want to keep the data or coding CProfileScope would become tricky.
|
|
||||||
if ( groupIdx != ProfileDatas[idx].GroupIndex )
|
|
||||||
{
|
|
||||||
resetDataByIndex((u32)idx);
|
|
||||||
ProfileDatas[idx].GroupIndex = groupIdx;
|
|
||||||
}
|
|
||||||
ProfileDatas[idx].Name = name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 CProfiler::addGroup(const core::stringw &name)
|
|
||||||
{
|
|
||||||
SProfileData group;
|
|
||||||
group.Id = -1; // Id for groups doesn't matter so far
|
|
||||||
group.Name = name;
|
|
||||||
ProfileGroups.push_back(group);
|
|
||||||
return ProfileGroups.size()-1;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CProfiler::findDataIndex(u32 & result, const core::stringw &name) const
|
|
||||||
{
|
|
||||||
for ( u32 i=0; i < ProfileDatas.size(); ++i )
|
|
||||||
{
|
|
||||||
if ( ProfileDatas[i].Name == name )
|
|
||||||
{
|
|
||||||
result = i;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CProfiler::findGroupIndex(u32 & result, const core::stringw &name) const
|
|
||||||
{
|
|
||||||
for ( u32 i=0; i < ProfileGroups.size(); ++i )
|
|
||||||
{
|
|
||||||
if ( ProfileGroups[i].Name == name )
|
|
||||||
{
|
|
||||||
result = i;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CProfiler::resetDataById(s32 id)
|
|
||||||
{
|
|
||||||
s32 idx = ProfileDatas.binary_search(SProfileData(id));
|
|
||||||
if ( idx >= 0 )
|
|
||||||
{
|
|
||||||
resetDataByIndex((u32)idx);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CProfiler::resetDataByIndex(u32 index)
|
|
||||||
{
|
|
||||||
SProfileData &data = ProfileDatas[index];
|
|
||||||
|
|
||||||
SProfileData & group = ProfileGroups[data.GroupIndex];
|
|
||||||
group.CountCalls -= data.CountCalls;
|
|
||||||
group.TimeSum -= data.TimeSum;
|
|
||||||
|
|
||||||
data.reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Reset profile data for a whole group
|
|
||||||
void CProfiler::resetGroup(u32 index)
|
|
||||||
{
|
|
||||||
for ( u32 i=0; i<ProfileDatas.size(); ++i )
|
|
||||||
{
|
|
||||||
if ( ProfileDatas[i].GroupIndex == index )
|
|
||||||
ProfileDatas[i].reset();
|
|
||||||
}
|
|
||||||
if ( index < ProfileGroups.size() )
|
|
||||||
ProfileGroups[index].reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CProfiler::resetAll()
|
|
||||||
{
|
|
||||||
for ( u32 i=0; i<ProfileDatas.size(); ++i )
|
|
||||||
{
|
|
||||||
ProfileDatas[i].reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
for ( u32 i=0; i<ProfileGroups.size(); ++i )
|
|
||||||
{
|
|
||||||
ProfileGroups[i].reset();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CProfiler::printAll(core::stringw &ostream, bool includeOverview, bool suppressUncalled) const
|
void CProfiler::printAll(core::stringw &ostream, bool includeOverview, bool suppressUncalled) const
|
||||||
{
|
{
|
||||||
ostream += SProfileData::makeTitleString();
|
ostream += makeTitleString();
|
||||||
ostream += L"\n";
|
ostream += L"\n";
|
||||||
for ( u32 i=includeOverview ?0:1; i<ProfileGroups.size(); ++i )
|
for ( u32 i=includeOverview ?0:1; i<ProfileGroups.size(); ++i )
|
||||||
{
|
{
|
||||||
|
@ -215,7 +38,7 @@ void CProfiler::printAll(core::stringw &ostream, bool includeOverview, bool supp
|
||||||
|
|
||||||
void CProfiler::printGroup(core::stringw &ostream, u32 idxGroup, bool suppressUncalled) const
|
void CProfiler::printGroup(core::stringw &ostream, u32 idxGroup, bool suppressUncalled) const
|
||||||
{
|
{
|
||||||
ostream += ProfileGroups[idxGroup].getAsString();
|
ostream += getAsString(ProfileGroups[idxGroup]);
|
||||||
ostream += L"\n";
|
ostream += L"\n";
|
||||||
|
|
||||||
// print overview for groups
|
// print overview for groups
|
||||||
|
@ -223,9 +46,9 @@ void CProfiler::printGroup(core::stringw &ostream, u32 idxGroup, bool suppressUn
|
||||||
{
|
{
|
||||||
for ( u32 i=0; i<ProfileGroups.size(); ++i )
|
for ( u32 i=0; i<ProfileGroups.size(); ++i )
|
||||||
{
|
{
|
||||||
if ( !suppressUncalled || ProfileGroups[i].CountCalls > 0)
|
if ( !suppressUncalled || ProfileGroups[i].getCallsCounter() > 0)
|
||||||
{
|
{
|
||||||
ostream += ProfileGroups[i].getAsString();
|
ostream += getAsString(ProfileGroups[i]);
|
||||||
ostream += L"\n";
|
ostream += L"\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -235,14 +58,47 @@ void CProfiler::printGroup(core::stringw &ostream, u32 idxGroup, bool suppressUn
|
||||||
{
|
{
|
||||||
for ( u32 i=0; i<ProfileDatas.size(); ++i )
|
for ( u32 i=0; i<ProfileDatas.size(); ++i )
|
||||||
{
|
{
|
||||||
if ( (!suppressUncalled || ProfileDatas[i].CountCalls > 0)
|
if ( (!suppressUncalled || ProfileDatas[i].getCallsCounter() > 0)
|
||||||
&& ProfileDatas[i].GroupIndex == idxGroup )
|
&& ProfileDatas[i].getGroupIndex() == idxGroup )
|
||||||
{
|
{
|
||||||
ostream += ProfileDatas[i].getAsString();
|
ostream += getAsString(ProfileDatas[i]);
|
||||||
ostream += L"\n";
|
ostream += L"\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Convert the whole data into a string
|
||||||
|
core::stringw CProfiler::getAsString(const SProfileData& data) const
|
||||||
|
{
|
||||||
|
if ( data.getCallsCounter() > 0 )
|
||||||
|
{
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma warning(disable:4996) // 'sprintf' was declared deprecated
|
||||||
|
#endif
|
||||||
|
// Can't use swprintf as it fails on some platforms (especially mobile platforms)
|
||||||
|
// Can't use Irrlicht functions because we have no string formatting.
|
||||||
|
char dummy[1023];
|
||||||
|
sprintf(dummy, "%-15.15s%-12u%-12u%-12u%-12u",
|
||||||
|
core::stringc(data.getName()).c_str(), data.getCallsCounter(), data.getTimeSum(),
|
||||||
|
data.getTimeSum() / data.getCallsCounter(), data.getLongestTime());
|
||||||
|
dummy[1022] = 0;
|
||||||
|
|
||||||
|
return core::stringw(dummy);
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma warning(default :4996) // 'sprintf' was declared deprecated
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return data.getName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Return a string which describes the columns returned by getAsString
|
||||||
|
core::stringw CProfiler::makeTitleString() const
|
||||||
|
{
|
||||||
|
return core::stringw("name calls time(sum) time(avg) time(max)");
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace irr
|
} // namespace irr
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
// This file is part of the "Irrlicht Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||||
|
// Written by Michael Zeilfelder
|
||||||
|
|
||||||
|
#ifndef __C_PROFILER_H_INCLUDED__
|
||||||
|
#define __C_PROFILER_H_INCLUDED__
|
||||||
|
|
||||||
|
#include "IrrCompileConfig.h"
|
||||||
|
#include "IProfiler.h"
|
||||||
|
|
||||||
|
namespace irr
|
||||||
|
{
|
||||||
|
class CProfiler : public IProfiler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
CProfiler();
|
||||||
|
virtual ~CProfiler();
|
||||||
|
|
||||||
|
//! Write all profile-data into a string
|
||||||
|
virtual void printAll(core::stringw &result, bool includeOverview,bool suppressUncalled) const _IRR_OVERRIDE_;
|
||||||
|
|
||||||
|
//! Write the profile data of one group into a string
|
||||||
|
virtual void printGroup(core::stringw &result, u32 groupIndex, bool suppressUncalled) const _IRR_OVERRIDE_;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
core::stringw makeTitleString() const;
|
||||||
|
core::stringw getAsString(const SProfileData& data) const;
|
||||||
|
};
|
||||||
|
} // namespace irr
|
||||||
|
|
||||||
|
#endif // __C_PROFILER_H_INCLUDED__
|
|
@ -16,7 +16,7 @@
|
||||||
#include "IWriteFile.h"
|
#include "IWriteFile.h"
|
||||||
#include "ISceneLoader.h"
|
#include "ISceneLoader.h"
|
||||||
#include "EProfileIDs.h"
|
#include "EProfileIDs.h"
|
||||||
#include "CProfiler.h"
|
#include "IProfiler.h"
|
||||||
|
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -838,9 +838,9 @@
|
||||||
<ClInclude Include="..\..\include\IAnimatedMeshMD3.h" />
|
<ClInclude Include="..\..\include\IAnimatedMeshMD3.h" />
|
||||||
<ClInclude Include="..\..\include\IContextManager.h" />
|
<ClInclude Include="..\..\include\IContextManager.h" />
|
||||||
<ClInclude Include="..\..\include\IEventReceiver.h" />
|
<ClInclude Include="..\..\include\IEventReceiver.h" />
|
||||||
<ClInclude Include="..\..\include\CProfiler.h" />
|
|
||||||
<ClInclude Include="..\..\include\ILogger.h" />
|
<ClInclude Include="..\..\include\ILogger.h" />
|
||||||
<ClInclude Include="..\..\include\IOSOperator.h" />
|
<ClInclude Include="..\..\include\IOSOperator.h" />
|
||||||
|
<ClInclude Include="..\..\include\IProfiler.h" />
|
||||||
<ClInclude Include="..\..\include\IRandomizer.h" />
|
<ClInclude Include="..\..\include\IRandomizer.h" />
|
||||||
<ClInclude Include="..\..\include\IReferenceCounted.h" />
|
<ClInclude Include="..\..\include\IReferenceCounted.h" />
|
||||||
<ClInclude Include="..\..\include\IrrCompileConfig.h" />
|
<ClInclude Include="..\..\include\IrrCompileConfig.h" />
|
||||||
|
@ -923,7 +923,7 @@
|
||||||
<ClInclude Include="..\..\include\IMeshLoader.h" />
|
<ClInclude Include="..\..\include\IMeshLoader.h" />
|
||||||
<ClInclude Include="..\..\include\IMeshManipulator.h" />
|
<ClInclude Include="..\..\include\IMeshManipulator.h" />
|
||||||
<ClInclude Include="..\..\include\IMeshSceneNode.h" />
|
<ClInclude Include="..\..\include\IMeshSceneNode.h" />
|
||||||
<ClInclude Include="..\..\include\IMeshTextureLoader.h" />
|
<ClInclude Include="..\..\include\IMeshTextureLoader.h" />
|
||||||
<ClInclude Include="..\..\include\IMeshWriter.h" />
|
<ClInclude Include="..\..\include\IMeshWriter.h" />
|
||||||
<ClInclude Include="..\..\include\IMetaTriangleSelector.h" />
|
<ClInclude Include="..\..\include\IMetaTriangleSelector.h" />
|
||||||
<ClInclude Include="..\..\include\IParticleAffector.h" />
|
<ClInclude Include="..\..\include\IParticleAffector.h" />
|
||||||
|
@ -969,7 +969,7 @@
|
||||||
<ClInclude Include="..\..\include\EGUIAlignment.h" />
|
<ClInclude Include="..\..\include\EGUIAlignment.h" />
|
||||||
<ClInclude Include="..\..\include\EGUIElementTypes.h" />
|
<ClInclude Include="..\..\include\EGUIElementTypes.h" />
|
||||||
<ClInclude Include="..\..\include\EMessageBoxFlags.h" />
|
<ClInclude Include="..\..\include\EMessageBoxFlags.h" />
|
||||||
<ClInclude Include="..\..\include\EFocusFlags.h" />
|
<ClInclude Include="..\..\include\EFocusFlags.h" />
|
||||||
<ClInclude Include="..\..\include\ICursorControl.h" />
|
<ClInclude Include="..\..\include\ICursorControl.h" />
|
||||||
<ClInclude Include="..\..\include\IGUIButton.h" />
|
<ClInclude Include="..\..\include\IGUIButton.h" />
|
||||||
<ClInclude Include="..\..\include\IGUICheckbox.h" />
|
<ClInclude Include="..\..\include\IGUICheckbox.h" />
|
||||||
|
@ -986,7 +986,7 @@
|
||||||
<ClInclude Include="..\..\include\IGUIInOutFader.h" />
|
<ClInclude Include="..\..\include\IGUIInOutFader.h" />
|
||||||
<ClInclude Include="..\..\include\IGUIListBox.h" />
|
<ClInclude Include="..\..\include\IGUIListBox.h" />
|
||||||
<ClInclude Include="..\..\include\IGUIMeshViewer.h" />
|
<ClInclude Include="..\..\include\IGUIMeshViewer.h" />
|
||||||
<ClInclude Include="..\..\include\IGUIProfiler.h" />
|
<ClInclude Include="..\..\include\IGUIProfiler.h" />
|
||||||
<ClInclude Include="..\..\include\IGUIScrollBar.h" />
|
<ClInclude Include="..\..\include\IGUIScrollBar.h" />
|
||||||
<ClInclude Include="..\..\include\IGUISkin.h" />
|
<ClInclude Include="..\..\include\IGUISkin.h" />
|
||||||
<ClInclude Include="..\..\include\IGUISpinBox.h" />
|
<ClInclude Include="..\..\include\IGUISpinBox.h" />
|
||||||
|
@ -1017,6 +1017,7 @@
|
||||||
<ClInclude Include="COGLESExtensionHandler.h" />
|
<ClInclude Include="COGLESExtensionHandler.h" />
|
||||||
<ClInclude Include="COGLESMaterialRenderer.h" />
|
<ClInclude Include="COGLESMaterialRenderer.h" />
|
||||||
<ClInclude Include="COGLESTexture.h" />
|
<ClInclude Include="COGLESTexture.h" />
|
||||||
|
<ClInclude Include="CProfiler.h" />
|
||||||
<ClInclude Include="CSceneManager.h" />
|
<ClInclude Include="CSceneManager.h" />
|
||||||
<ClInclude Include="CWGLManager.h" />
|
<ClInclude Include="CWGLManager.h" />
|
||||||
<ClInclude Include="Octree.h" />
|
<ClInclude Include="Octree.h" />
|
||||||
|
@ -1035,7 +1036,7 @@
|
||||||
<ClInclude Include="CLWOMeshFileLoader.h" />
|
<ClInclude Include="CLWOMeshFileLoader.h" />
|
||||||
<ClInclude Include="CMD2MeshFileLoader.h" />
|
<ClInclude Include="CMD2MeshFileLoader.h" />
|
||||||
<ClInclude Include="CMD3MeshFileLoader.h" />
|
<ClInclude Include="CMD3MeshFileLoader.h" />
|
||||||
<ClInclude Include="CMeshTextureLoader.h" />
|
<ClInclude Include="CMeshTextureLoader.h" />
|
||||||
<ClInclude Include="CMS3DMeshFileLoader.h" />
|
<ClInclude Include="CMS3DMeshFileLoader.h" />
|
||||||
<ClInclude Include="CMY3DHelper.h" />
|
<ClInclude Include="CMY3DHelper.h" />
|
||||||
<ClInclude Include="CMY3DMeshFileLoader.h" />
|
<ClInclude Include="CMY3DMeshFileLoader.h" />
|
||||||
|
@ -1168,7 +1169,7 @@
|
||||||
<ClInclude Include="COSOperator.h" />
|
<ClInclude Include="COSOperator.h" />
|
||||||
<ClInclude Include="CTimer.h" />
|
<ClInclude Include="CTimer.h" />
|
||||||
<ClInclude Include="os.h" />
|
<ClInclude Include="os.h" />
|
||||||
<ClInclude Include="EProfileIDs.h" />
|
<ClInclude Include="EProfileIDs.h" />
|
||||||
<ClInclude Include="lzma\LzmaDec.h" />
|
<ClInclude Include="lzma\LzmaDec.h" />
|
||||||
<ClInclude Include="lzma\Types.h" />
|
<ClInclude Include="lzma\Types.h" />
|
||||||
<ClInclude Include="zlib\crc32.h" />
|
<ClInclude Include="zlib\crc32.h" />
|
||||||
|
@ -1247,7 +1248,7 @@
|
||||||
<ClInclude Include="CGUIMessageBox.h" />
|
<ClInclude Include="CGUIMessageBox.h" />
|
||||||
<ClInclude Include="CGUIModalScreen.h" />
|
<ClInclude Include="CGUIModalScreen.h" />
|
||||||
<ClInclude Include="CGUIProfiler.h" />
|
<ClInclude Include="CGUIProfiler.h" />
|
||||||
<ClInclude Include="CGUIScrollBar.h" />
|
<ClInclude Include="CGUIScrollBar.h" />
|
||||||
<ClInclude Include="CGUISkin.h" />
|
<ClInclude Include="CGUISkin.h" />
|
||||||
<ClInclude Include="CGUISpinBox.h" />
|
<ClInclude Include="CGUISpinBox.h" />
|
||||||
<ClInclude Include="CGUISpriteBank.h" />
|
<ClInclude Include="CGUISpriteBank.h" />
|
||||||
|
@ -1300,7 +1301,7 @@
|
||||||
<ClCompile Include="CLWOMeshFileLoader.cpp" />
|
<ClCompile Include="CLWOMeshFileLoader.cpp" />
|
||||||
<ClCompile Include="CMD2MeshFileLoader.cpp" />
|
<ClCompile Include="CMD2MeshFileLoader.cpp" />
|
||||||
<ClCompile Include="CMD3MeshFileLoader.cpp" />
|
<ClCompile Include="CMD3MeshFileLoader.cpp" />
|
||||||
<ClCompile Include="CMeshTextureLoader.cpp" />
|
<ClCompile Include="CMeshTextureLoader.cpp" />
|
||||||
<ClCompile Include="CMS3DMeshFileLoader.cpp" />
|
<ClCompile Include="CMS3DMeshFileLoader.cpp" />
|
||||||
<ClCompile Include="CMY3DMeshFileLoader.cpp" />
|
<ClCompile Include="CMY3DMeshFileLoader.cpp" />
|
||||||
<ClCompile Include="COBJMeshFileLoader.cpp" />
|
<ClCompile Include="COBJMeshFileLoader.cpp" />
|
||||||
|
@ -1448,7 +1449,7 @@
|
||||||
<ClCompile Include="Irrlicht.cpp" />
|
<ClCompile Include="Irrlicht.cpp" />
|
||||||
<ClCompile Include="leakHunter.cpp" />
|
<ClCompile Include="leakHunter.cpp" />
|
||||||
<ClCompile Include="os.cpp" />
|
<ClCompile Include="os.cpp" />
|
||||||
<ClCompile Include="CProfiler.cpp" />
|
<ClCompile Include="CProfiler.cpp" />
|
||||||
<ClCompile Include="lzma\LzmaDec.c" />
|
<ClCompile Include="lzma\LzmaDec.c" />
|
||||||
<ClCompile Include="zlib\adler32.c" />
|
<ClCompile Include="zlib\adler32.c" />
|
||||||
<ClCompile Include="zlib\compress.c" />
|
<ClCompile Include="zlib\compress.c" />
|
||||||
|
@ -1579,7 +1580,7 @@
|
||||||
<ClCompile Include="CGUIMessageBox.cpp" />
|
<ClCompile Include="CGUIMessageBox.cpp" />
|
||||||
<ClCompile Include="CGUIModalScreen.cpp" />
|
<ClCompile Include="CGUIModalScreen.cpp" />
|
||||||
<ClCompile Include="CGUIProfiler.cpp" />
|
<ClCompile Include="CGUIProfiler.cpp" />
|
||||||
<ClCompile Include="CGUIScrollBar.cpp" />
|
<ClCompile Include="CGUIScrollBar.cpp" />
|
||||||
<ClCompile Include="CGUISkin.cpp" />
|
<ClCompile Include="CGUISkin.cpp" />
|
||||||
<ClCompile Include="CGUISpinBox.cpp" />
|
<ClCompile Include="CGUISpinBox.cpp" />
|
||||||
<ClCompile Include="CGUISpriteBank.cpp" />
|
<ClCompile Include="CGUISpriteBank.cpp" />
|
||||||
|
|
|
@ -111,10 +111,7 @@
|
||||||
</Filter>
|
</Filter>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\include\IEventReceiver.h">
|
<ClInclude Include="..\..\include\IEventReceiver.h">
|
||||||
<Filter>include</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\include\CProfiler.h">
|
|
||||||
<Filter>include</Filter>
|
<Filter>include</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\include\ILogger.h">
|
<ClInclude Include="..\..\include\ILogger.h">
|
||||||
|
@ -363,7 +360,7 @@
|
||||||
<ClInclude Include="..\..\include\IMeshSceneNode.h">
|
<ClInclude Include="..\..\include\IMeshSceneNode.h">
|
||||||
<Filter>include\scene</Filter>
|
<Filter>include\scene</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\include\IMeshTextureLoader.h">
|
<ClInclude Include="..\..\include\IMeshTextureLoader.h">
|
||||||
<Filter>include\scene</Filter>
|
<Filter>include\scene</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\include\IMeshWriter.h">
|
<ClInclude Include="..\..\include\IMeshWriter.h">
|
||||||
|
@ -498,7 +495,7 @@
|
||||||
<ClInclude Include="..\..\include\EMessageBoxFlags.h">
|
<ClInclude Include="..\..\include\EMessageBoxFlags.h">
|
||||||
<Filter>include\gui</Filter>
|
<Filter>include\gui</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\include\EFocusFlags.h">
|
<ClInclude Include="..\..\include\EFocusFlags.h">
|
||||||
<Filter>include\gui</Filter>
|
<Filter>include\gui</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\include\ICursorControl.h">
|
<ClInclude Include="..\..\include\ICursorControl.h">
|
||||||
|
@ -549,7 +546,7 @@
|
||||||
<ClInclude Include="..\..\include\IGUIMeshViewer.h">
|
<ClInclude Include="..\..\include\IGUIMeshViewer.h">
|
||||||
<Filter>include\gui</Filter>
|
<Filter>include\gui</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\include\IGUIProfiler.h">
|
<ClInclude Include="..\..\include\IGUIProfiler.h">
|
||||||
<Filter>include\gui</Filter>
|
<Filter>include\gui</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\include\IGUIScrollBar.h">
|
<ClInclude Include="..\..\include\IGUIScrollBar.h">
|
||||||
|
@ -642,7 +639,7 @@
|
||||||
<ClInclude Include="CMD3MeshFileLoader.h">
|
<ClInclude Include="CMD3MeshFileLoader.h">
|
||||||
<Filter>Irrlicht\scene\loaders</Filter>
|
<Filter>Irrlicht\scene\loaders</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="CMeshTextureLoader.h">
|
<ClInclude Include="CMeshTextureLoader.h">
|
||||||
<Filter>Irrlicht\scene\loaders</Filter>
|
<Filter>Irrlicht\scene\loaders</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="CMS3DMeshFileLoader.h">
|
<ClInclude Include="CMS3DMeshFileLoader.h">
|
||||||
|
@ -1035,7 +1032,7 @@
|
||||||
<ClInclude Include="os.h">
|
<ClInclude Include="os.h">
|
||||||
<Filter>Irrlicht\irr</Filter>
|
<Filter>Irrlicht\irr</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="EProfileIDs.h">
|
<ClInclude Include="EProfileIDs.h">
|
||||||
<Filter>Irrlicht\irr</Filter>
|
<Filter>Irrlicht\irr</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="lzma\LzmaDec.h">
|
<ClInclude Include="lzma\LzmaDec.h">
|
||||||
|
@ -1272,7 +1269,7 @@
|
||||||
<ClInclude Include="CGUIProfiler.h">
|
<ClInclude Include="CGUIProfiler.h">
|
||||||
<Filter>Irrlicht\gui</Filter>
|
<Filter>Irrlicht\gui</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="CGUIScrollBar.h">
|
<ClInclude Include="CGUIScrollBar.h">
|
||||||
<Filter>Irrlicht\gui</Filter>
|
<Filter>Irrlicht\gui</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="CGUISkin.h">
|
<ClInclude Include="CGUISkin.h">
|
||||||
|
@ -1384,6 +1381,12 @@
|
||||||
<ClInclude Include="..\..\include\IContextManager.h">
|
<ClInclude Include="..\..\include\IContextManager.h">
|
||||||
<Filter>include\video</Filter>
|
<Filter>include\video</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\include\IProfiler.h">
|
||||||
|
<Filter>include</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="CProfiler.h">
|
||||||
|
<Filter>Irrlicht\irr</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\..\changes.txt">
|
<None Include="..\..\changes.txt">
|
||||||
|
@ -1454,7 +1457,7 @@
|
||||||
<ClCompile Include="CMD3MeshFileLoader.cpp">
|
<ClCompile Include="CMD3MeshFileLoader.cpp">
|
||||||
<Filter>Irrlicht\scene\loaders</Filter>
|
<Filter>Irrlicht\scene\loaders</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="CMeshTextureLoader.cpp">
|
<ClCompile Include="CMeshTextureLoader.cpp">
|
||||||
<Filter>Irrlicht\scene\loaders</Filter>
|
<Filter>Irrlicht\scene\loaders</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="CMS3DMeshFileLoader.cpp">
|
<ClCompile Include="CMS3DMeshFileLoader.cpp">
|
||||||
|
@ -1889,7 +1892,7 @@
|
||||||
<ClCompile Include="os.cpp">
|
<ClCompile Include="os.cpp">
|
||||||
<Filter>Irrlicht\irr</Filter>
|
<Filter>Irrlicht\irr</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="CProfiler.cpp">
|
<ClCompile Include="CProfiler.cpp">
|
||||||
<Filter>Irrlicht\irr</Filter>
|
<Filter>Irrlicht\irr</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="lzma\LzmaDec.c">
|
<ClCompile Include="lzma\LzmaDec.c">
|
||||||
|
@ -2282,7 +2285,7 @@
|
||||||
<ClCompile Include="CGUIProfiler.cpp">
|
<ClCompile Include="CGUIProfiler.cpp">
|
||||||
<Filter>Irrlicht\gui</Filter>
|
<Filter>Irrlicht\gui</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="CGUIScrollBar.cpp">
|
<ClCompile Include="CGUIScrollBar.cpp">
|
||||||
<Filter>Irrlicht\gui</Filter>
|
<Filter>Irrlicht\gui</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="CGUISkin.cpp">
|
<ClCompile Include="CGUISkin.cpp">
|
||||||
|
|
|
@ -842,7 +842,7 @@
|
||||||
<ClInclude Include="..\..\include\EMaterialFlags.h" />
|
<ClInclude Include="..\..\include\EMaterialFlags.h" />
|
||||||
<ClInclude Include="..\..\include\IAnimatedMeshMD3.h" />
|
<ClInclude Include="..\..\include\IAnimatedMeshMD3.h" />
|
||||||
<ClInclude Include="..\..\include\IEventReceiver.h" />
|
<ClInclude Include="..\..\include\IEventReceiver.h" />
|
||||||
<ClInclude Include="..\..\include\CProfiler.h" />
|
<ClInclude Include="..\..\include\IProfiler.h" />
|
||||||
<ClInclude Include="..\..\include\ILogger.h" />
|
<ClInclude Include="..\..\include\ILogger.h" />
|
||||||
<ClInclude Include="..\..\include\IOSOperator.h" />
|
<ClInclude Include="..\..\include\IOSOperator.h" />
|
||||||
<ClInclude Include="..\..\include\IRandomizer.h" />
|
<ClInclude Include="..\..\include\IRandomizer.h" />
|
||||||
|
@ -1173,6 +1173,7 @@
|
||||||
<ClInclude Include="COSOperator.h" />
|
<ClInclude Include="COSOperator.h" />
|
||||||
<ClInclude Include="CTimer.h" />
|
<ClInclude Include="CTimer.h" />
|
||||||
<ClInclude Include="os.h" />
|
<ClInclude Include="os.h" />
|
||||||
|
<ClInclude Include="CProfiler.h" />
|
||||||
<ClInclude Include="EProfileIDs.h" />
|
<ClInclude Include="EProfileIDs.h" />
|
||||||
<ClInclude Include="lzma\LzmaDec.h" />
|
<ClInclude Include="lzma\LzmaDec.h" />
|
||||||
<ClInclude Include="lzma\Types.h" />
|
<ClInclude Include="lzma\Types.h" />
|
||||||
|
|
|
@ -114,7 +114,7 @@
|
||||||
<ClInclude Include="..\..\include\IEventReceiver.h">
|
<ClInclude Include="..\..\include\IEventReceiver.h">
|
||||||
<Filter>include</Filter>
|
<Filter>include</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\include\CProfiler.h">
|
<ClInclude Include="..\..\include\IProfiler.h">
|
||||||
<Filter>include</Filter>
|
<Filter>include</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\include\ILogger.h">
|
<ClInclude Include="..\..\include\ILogger.h">
|
||||||
|
@ -1037,6 +1037,9 @@
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="os.h">
|
<ClInclude Include="os.h">
|
||||||
<Filter>Irrlicht\irr</Filter>
|
<Filter>Irrlicht\irr</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="CProfiler.h">
|
||||||
|
<Filter>Irrlicht\irr</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="EProfileIDs.h">
|
<ClInclude Include="EProfileIDs.h">
|
||||||
<Filter>Irrlicht\irr</Filter>
|
<Filter>Irrlicht\irr</Filter>
|
||||||
|
|
|
@ -587,7 +587,7 @@
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\..\..\include\CProfiler.h"
|
RelativePath=".\..\..\include\IProfiler.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
|
@ -3037,6 +3037,10 @@
|
||||||
RelativePath="CProfiler.cpp"
|
RelativePath="CProfiler.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="CProfiler.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="EProfileIDs.h"
|
RelativePath="EProfileIDs.h"
|
||||||
>
|
>
|
||||||
|
|
|
@ -686,7 +686,7 @@
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\include\CProfiler.h"
|
RelativePath="..\..\include\IProfiler.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
|
@ -2876,6 +2876,10 @@
|
||||||
RelativePath="CProfiler.cpp"
|
RelativePath="CProfiler.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="CProfiler.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="EProfileIDs.h"
|
RelativePath="EProfileIDs.h"
|
||||||
>
|
>
|
||||||
|
|
|
@ -330,7 +330,7 @@
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\include\CProfiler.h"
|
RelativePath="..\..\include\IProfiler.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
|
@ -2594,6 +2594,10 @@
|
||||||
RelativePath="CProfiler.cpp"
|
RelativePath="CProfiler.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="CProfiler.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="EProfileIDs.h"
|
RelativePath="EProfileIDs.h"
|
||||||
>
|
>
|
||||||
|
|
|
@ -310,7 +310,7 @@
|
||||||
RelativePath="..\..\include\IEventReceiver.h">
|
RelativePath="..\..\include\IEventReceiver.h">
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\include\CProfiler.h">
|
RelativePath="..\..\include\IProfiler.h">
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\include\IFileArchive.h">
|
RelativePath="..\..\include\IFileArchive.h">
|
||||||
|
@ -1443,6 +1443,9 @@
|
||||||
<File
|
<File
|
||||||
RelativePath=".\CProfiler.cpp">
|
RelativePath=".\CProfiler.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\CProfiler.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\EProfileIDs.h">
|
RelativePath=".\EProfileIDs.h">
|
||||||
</File>
|
</File>
|
||||||
|
|
|
@ -376,7 +376,7 @@ if "osx" in env["platform"] :
|
||||||
|
|
||||||
|
|
||||||
# sources of the examples
|
# sources of the examples
|
||||||
srcexamples = ["01.HelloWorld", "02.Quake3Map", "03.CustomSceneNode", "04.Movement", "05.UserInterface", "06.2DGraphics", "07.Collision", "08.SpecialFX", "09.Meshviewer", "10.Shaders", "11.PerPixelLighting", "12.TerrainRendering", "13.RenderToTexture", "15.LoadIrrFile", "16.Quake3MapShader", "17.HelloWorld_Mobile", "18.SplitScreen", "19.MouseAndJoystick", "20.ManagedLights", "22.MaterialViewer", "23.SMeshHandling", "24.CursorControl", "25.XmlHandling", "26.OcclusionQuery"]
|
srcexamples = ["01.HelloWorld", "02.Quake3Map", "03.CustomSceneNode", "04.Movement", "05.UserInterface", "06.2DGraphics", "07.Collision", "08.SpecialFX", "09.Meshviewer", "10.Shaders", "11.PerPixelLighting", "12.TerrainRendering", "13.RenderToTexture", "15.LoadIrrFile", "16.Quake3MapShader", "17.HelloWorld_Mobile", "18.SplitScreen", "19.MouseAndJoystick", "20.ManagedLights", "22.MaterialViewer", "23.SMeshHandling", "24.CursorControl", "25.XmlHandling", "26.OcclusionQuery", "30.Profiling"]
|
||||||
if "win" in env["platform"] :
|
if "win" in env["platform"] :
|
||||||
srcexamples.append("14.Win32Window")
|
srcexamples.append("14.Win32Window")
|
||||||
# ===================================================================================================================
|
# ===================================================================================================================
|
||||||
|
|
Loading…
Reference in New Issue