Browse Source

Merge branch 'hotfix/issue-199'

David Wimsey 11 years ago
parent
commit
89ba166c8f
3 changed files with 10 additions and 76 deletions
  1. 0 1
      Build/cmake/FileList.cmake
  2. 10 10
      Include/Rocket/Core/Vector2.inl
  3. 0 65
      Source/Core/Vector2.cpp

+ 0 - 1
Build/cmake/FileList.cmake

@@ -293,7 +293,6 @@ set(Core_SRC_FILES
     ${PROJECT_SOURCE_DIR}/Source/Core/UnicodeRange.cpp
     ${PROJECT_SOURCE_DIR}/Source/Core/URL.cpp
     ${PROJECT_SOURCE_DIR}/Source/Core/Variant.cpp
-    ${PROJECT_SOURCE_DIR}/Source/Core/Vector2.cpp
     ${PROJECT_SOURCE_DIR}/Source/Core/WidgetSlider.cpp
     ${PROJECT_SOURCE_DIR}/Source/Core/WidgetSliderScroll.cpp
     ${PROJECT_SOURCE_DIR}/Source/Core/WString.cpp

+ 10 - 10
Include/Rocket/Core/Vector2.inl

@@ -62,12 +62,12 @@ Type Vector2< Type >::SquaredMagnitude() const
 template < typename Type >
 Vector2< Type > Vector2< Type >::Normalise() const
 {
-	ROCKET_STATIC_ASSERT(sizeof(Type) == 0, Invalid_Operation);
-	return *this;
-}
+	float magnitude = Magnitude();
+	if (Math::IsZero(magnitude))
+		return *this;
 
-template <>
-ROCKETCORE_API Vector2< float > Vector2< float >::Normalise() const;
+	return *this / magnitude;
+}
 
 // Computes the dot-product between this vector and another.
 template < typename Type >
@@ -81,12 +81,12 @@ Type Vector2< Type >::DotProduct(const Vector2< Type >& rhs) const
 template < typename Type >
 Vector2< Type > Vector2< Type >::Rotate(float theta) const
 {
-	ROCKET_STATIC_ASSERT(sizeof(Type) == 0, Invalid_Operation);
-	return *this;
-}
+	float cos_theta = Math::Cos(theta);
+	float sin_theta = Math::Sin(theta);
 
-template <>
-ROCKETCORE_API Vector2< float > Vector2< float >::Rotate(float) const;
+	return Vector2< Type >(((Type)(cos_theta * x - sin_theta * y)),
+							((Type)(sin_theta * x + cos_theta * y)));
+}
 
 // Returns the negation of this vector.
 template < typename Type >

+ 0 - 65
Source/Core/Vector2.cpp

@@ -1,65 +0,0 @@
-/*
- * This source file is part of libRocket, the HTML/CSS Interface Middleware
- *
- * For the latest information, see http://www.librocket.com
- *
- * Copyright (c) 2008-2010 CodePoint Ltd, Shift Technology 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 "precompiled.h"
-#include "../../Include/Rocket/Core/Types.h"
-
-namespace Rocket {
-namespace Core {
-
-Vector2i operator*(int lhs, const Vector2i& rhs)
-{
-	return Vector2i(lhs * rhs.x, lhs * rhs.y);
-}
-
-Vector2f operator*(float lhs, const Vector2f& rhs)
-{
-	return Vector2f(lhs * rhs.x, lhs * rhs.y);
-}
-
-template <>
-Vector2< float > Vector2< float >::Normalise() const
-{
-	float magnitude = Magnitude();
-	if (Math::IsZero(magnitude))
-		return *this;
-
-	return *this / magnitude;
-}
-
-template <>
-Vector2< float > Vector2< float >::Rotate(float theta) const
-{
-	float cos_theta = Math::Cos(theta);
-	float sin_theta = Math::Sin(theta);
-
-	return Vector2< float >(cos_theta * x - sin_theta * y,
-							sin_theta * x + cos_theta * y);
-}
-
-}
-}