Przeglądaj źródła

Remaining files after adding OIS and timers

Marko Pintera 13 lat temu
rodzic
commit
5f93eb1683

+ 0 - 1
CamelotRenderer/TODO.txt

@@ -15,7 +15,6 @@ High-level TODO:
  - DX11 render system
 
 HIGH PRIORITY TODO:
- - OIS doesn't initialize properly!
  - GetRenderOperation doesn't consider sub-meshes
  - HLSL & Cg don't handle include files yet
 

+ 79 - 0
CamelotUtility/Include/GLX/CmTimerImp.h

@@ -0,0 +1,79 @@
+/*
+-----------------------------------------------------------------------------
+This source file is part of OGRE
+(Object-oriented Graphics Rendering Engine)
+For the latest info, see http://www.ogre3d.org/
+
+Copyright (c) 2000-2011 Torus Knot Software Ltd
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+-----------------------------------------------------------------------------
+*/
+
+#ifndef __GLXTimer_H__
+#define __GLXTimer_H__
+
+#include "../CmPrerequisitesUtil.h"
+
+namespace CamelotEngine
+{
+	/** Timer class */
+	class CM_UTILITY_EXPORT Timer
+	{
+	private:
+		struct timeval start;
+		clock_t zeroClock;
+	public:
+		Timer();
+		~Timer();
+
+		/** Method for setting a specific option of the Timer. These options are usually
+            specific for a certain implementation of the Timer class, and may (and probably
+            will) not exist across different implementations.  reset() must be called after
+			all setOption() calls.
+            @param
+                strKey The name of the option to set
+            @param
+                pValue A pointer to the value - the size should be calculated by the timer
+                based on the key
+            @return
+                On success, true is returned.
+            @par
+                On failure, false is returned.
+        */
+        bool setOption( const String& strKey, const void* pValue )
+        { (void)strKey; (void)pValue; return false; }
+
+		/** Resets timer */
+		void reset();
+
+		/** Returns milliseconds since initialisation or last reset */
+		unsigned long getMilliseconds();
+
+		/** Returns microseconds since initialisation or last reset */
+		unsigned long getMicroseconds();
+
+		/** Returns milliseconds since initialisation or last reset, only CPU time measured */	
+		unsigned long getMillisecondsCPU();
+
+		/** Returns microseconds since initialisation or last reset, only CPU time measured */	
+		unsigned long getMicrosecondsCPU();
+	};
+}
+#endif

+ 78 - 0
CamelotUtility/Include/OSX/CmTimerImp.h

@@ -0,0 +1,78 @@
+/*
+-----------------------------------------------------------------------------
+This source file is part of OGRE
+(Object-oriented Graphics Rendering Engine)
+For the latest info, see http://www.ogre3d.org/
+
+Copyright (c) 2000-2011 Torus Knot Software Ltd
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+-----------------------------------------------------------------------------
+*/
+
+#ifndef __OSXTimer_H__
+#define __OSXTimer_H__
+
+#include "../CmPrerequisitesUtil.h"
+
+namespace CamelotEngine
+{
+	/** Timer class */
+	class CM_UTILITY_EXPORT Timer
+	{
+	private:
+		struct timeval start;
+		clock_t zeroClock;
+	public:
+		Timer();
+		~Timer();
+
+		/** Method for setting a specific option of the Timer. These options are usually
+            specific for a certain implementation of the Timer class, and may (and probably
+            will) not exist across different implementations.  reset() must be called after
+			all setOption() calls.
+            @param
+                strKey The name of the option to set
+            @param
+                pValue A pointer to the value - the size should be calculated by the timer
+                based on the key
+            @return
+                On success, true is returned.
+            @par
+                On failure, false is returned.
+        */
+        bool setOption( const String& strKey, const void* pValue ) { return false; }
+
+		/** Resets timer */
+		void reset();
+
+		/** Returns milliseconds since initialisation or last reset */
+		unsigned long getMilliseconds();
+
+		/** Returns microseconds since initialisation or last reset */
+		unsigned long getMicroseconds();
+
+		/** Returns milliseconds since initialisation or last reset, only CPU time measured */	
+		unsigned long getMillisecondsCPU();
+
+		/** Returns microseconds since initialisation or last reset, only CPU time measured */	
+		unsigned long getMicrosecondsCPU();
+	};
+}
+#endif

+ 106 - 0
CamelotUtility/Include/Win32/CmTimerImp.h

@@ -0,0 +1,106 @@
+/*
+-----------------------------------------------------------------------------
+This source file is part of OGRE
+    (Object-oriented Graphics Rendering Engine)
+For the latest info, see http://www.ogre3d.org/
+
+Copyright (c) 2000-2011 Torus Knot Software Ltd
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+-----------------------------------------------------------------------------
+*/
+#ifndef __Win32Timer_H__
+#define __Win32Timer_H__
+
+#include "../CmPrerequisitesUtil.h"
+
+#ifndef WIN32_LEAN_AND_MEAN
+#	define WIN32_LEAN_AND_MEAN
+#endif
+#if !defined(NOMINMAX) && defined(_MSC_VER)
+#	define NOMINMAX // required to stop windows.h messing up std::min
+#endif
+#include "windows.h"
+
+namespace CamelotEngine
+{
+	/** \addtogroup Core
+	*  @{
+	*/
+	/** \addtogroup General
+	*  @{
+	*/
+
+	class CM_UTILITY_EXPORT Timer
+    {
+    private:
+		clock_t mZeroClock;
+
+        DWORD mStartTick;
+		LONGLONG mLastTime;
+        LARGE_INTEGER mStartTime;
+        LARGE_INTEGER mFrequency;
+
+		DWORD_PTR mTimerMask;
+    public:
+		/** Timer constructor.  MUST be called on same thread that calls getMilliseconds() */
+		Timer();
+		~Timer();
+
+		/** Method for setting a specific option of the Timer. These options are usually
+            specific for a certain implementation of the Timer class, and may (and probably
+            will) not exist across different implementations.  reset() must be called after
+			all setOption() calls.
+			@par
+			Current options supported are:
+			<ul><li>"QueryAffinityMask" (DWORD): Set the thread affinity mask to be used
+			to check the timer. If 'reset' has been called already this mask should
+			overlap with the process mask that was in force at that point, and should
+			be a power of two (a single core).</li></ul>
+            @param
+                strKey The name of the option to set
+            @param
+                pValue A pointer to the value - the size should be calculated by the timer
+                based on the key
+            @return
+                On success, true is returned.
+            @par
+                On failure, false is returned.
+        */
+        bool setOption( const String& strKey, const void* pValue );
+
+		/** Resets timer */
+		void reset();
+
+		/** Returns milliseconds since initialisation or last reset */
+		unsigned long getMilliseconds();
+
+		/** Returns microseconds since initialisation or last reset */
+		unsigned long getMicroseconds();
+
+		/** Returns milliseconds since initialisation or last reset, only CPU time measured */
+		unsigned long getMillisecondsCPU();
+
+		/** Returns microseconds since initialisation or last reset, only CPU time measured */
+		unsigned long getMicrosecondsCPU();
+    };
+	/** @} */
+	/** @} */
+}
+#endif

+ 79 - 0
CamelotUtility/Source/GLX/CmTimer.cpp

@@ -0,0 +1,79 @@
+/*
+-----------------------------------------------------------------------------
+This source file is part of OGRE
+(Object-oriented Graphics Rendering Engine)
+For the latest info, see http://www.ogre3d.org/
+
+Copyright (c) 2000-2011 Torus Knot Software Ltd
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+-----------------------------------------------------------------------------
+*/
+#include "CmTimer.h"
+#include <sys/time.h>
+
+using namespace CamelotEngine;
+
+//--------------------------------------------------------------------------------//
+Timer::Timer()
+{
+	reset();
+}
+
+//--------------------------------------------------------------------------------//
+Timer::~Timer()
+{
+}
+
+//--------------------------------------------------------------------------------//
+void Timer::reset()
+{
+	zeroClock = clock();
+	gettimeofday(&start, NULL);
+}
+
+//--------------------------------------------------------------------------------//
+unsigned long Timer::getMilliseconds()
+{
+	struct timeval now;
+	gettimeofday(&now, NULL);
+	return (now.tv_sec-start.tv_sec)*1000+(now.tv_usec-start.tv_usec)/1000;
+}
+
+//--------------------------------------------------------------------------------//
+unsigned long Timer::getMicroseconds()
+{
+	struct timeval now;
+	gettimeofday(&now, NULL);
+	return (now.tv_sec-start.tv_sec)*1000000+(now.tv_usec-start.tv_usec);
+}
+
+//-- Common Across All Timers ----------------------------------------------------//
+unsigned long Timer::getMillisecondsCPU()
+{
+	clock_t newClock = clock();
+	return (unsigned long)((float)(newClock-zeroClock) / ((float)CLOCKS_PER_SEC/1000.0)) ;
+}
+
+//-- Common Across All Timers ----------------------------------------------------//
+unsigned long Timer::getMicrosecondsCPU()
+{
+	clock_t newClock = clock();
+	return (unsigned long)((float)(newClock-zeroClock) / ((float)CLOCKS_PER_SEC/1000000.0)) ;
+}

+ 79 - 0
CamelotUtility/Source/OSX/CmTimer.cpp

@@ -0,0 +1,79 @@
+/*
+-----------------------------------------------------------------------------
+This source file is part of OGRE
+(Object-oriented Graphics Rendering Engine)
+For the latest info, see http://www.ogre3d.org/
+
+Copyright (c) 2000-2011 Torus Knot Software Ltd
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+-----------------------------------------------------------------------------
+*/
+#include "CmTimer.h"
+#include <sys/time.h>
+
+using namespace CamelotEngine;
+
+//--------------------------------------------------------------------------------//
+Timer::Timer()
+{
+	reset();
+}
+
+//--------------------------------------------------------------------------------//
+Timer::~Timer()
+{
+}
+
+//--------------------------------------------------------------------------------//
+void Timer::reset()
+{
+	zeroClock = clock();
+	gettimeofday(&start, NULL);
+}
+
+//--------------------------------------------------------------------------------//
+unsigned long Timer::getMilliseconds()
+{
+	struct timeval now;
+	gettimeofday(&now, NULL);
+	return (now.tv_sec-start.tv_sec)*1000+(now.tv_usec-start.tv_usec)/1000;
+}
+
+//--------------------------------------------------------------------------------//
+unsigned long Timer::getMicroseconds()
+{
+	struct timeval now;
+	gettimeofday(&now, NULL);
+	return (now.tv_sec-start.tv_sec)*1000000+(now.tv_usec-start.tv_usec);
+}
+
+//-- Common Across All Timers ----------------------------------------------------//
+unsigned long Timer::getMillisecondsCPU()
+{
+	clock_t newClock = clock();
+	return (unsigned long)((float)(newClock-zeroClock) / ((float)CLOCKS_PER_SEC/1000.0)) ;
+}
+
+//-- Common Across All Timers ----------------------------------------------------//
+unsigned long Timer::getMicrosecondsCPU()
+{
+	clock_t newClock = clock();
+	return (unsigned long)((float)(newClock-zeroClock) / ((float)CLOCKS_PER_SEC/1000000.0)) ;
+}