Vector.cpp
上传用户:gb3593
上传日期:2022-01-07
资源大小:3028k
文件大小:2k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. #pragma once
  2. #include "Stdafx.h"
  3. namespace Box2D
  4. {
  5. namespace Net
  6. {
  7. public ref class Vector
  8. {
  9. internal:
  10. b2Vec2 getVec2()
  11. {
  12. return b2Vec2(X, Y);
  13. }
  14. public:
  15. //TODO: this needs to be read only outside the class,
  16. //because if you have a vector as a get property, and
  17. //try to set the X,Y components, it won't take to the
  18. //original vector:
  19. //
  20. //ie: Shape.Extents.X += 10;
  21. //won't behave like you think it should (or will it?)
  22. float32 X, Y;
  23. Vector() : X(0), Y(0) { }
  24. Vector(float32 x, float32 y) : X(x), Y(y) { }
  25. Vector(Vector^ other) : X(other->X), Y(other->Y) { }
  26. Vector(const b2Vec2 &other) : X(other.x), Y(other.y) { }
  27. /*
  28. Vector^ Set(float32 x, float32 y)
  29. {
  30. X = x;
  31. Y = y;
  32. return this;
  33. }
  34. */
  35. ///Defines basic vector addition
  36. static Vector^ operator +(Vector^ a, Vector^ b)
  37. {
  38. return gcnew Vector(a->X + b->X, a->Y + b->Y);
  39. }
  40. ///<summary>Negates a vector (that is, returns (-X, -Y)</summary>
  41. static Vector^ operator - (Vector^ a)
  42. {
  43. return gcnew Vector(-a->X, -a->Y);
  44. }
  45. ///<summary>Defines basic vector subtraction</summary>
  46. static Vector^ operator - (Vector^ a, Vector^ b)
  47. {
  48. return gcnew Vector(a->X - b->X, a->Y - b->Y);
  49. }
  50. ///<summary>Scalar multiplication for a vector</summary>
  51. static Vector^ operator * (Vector^ a, float32 b)
  52. {
  53. return gcnew Vector(a->X * b, a->Y * b);
  54. }
  55. /*
  56. static Vector^ operator = (Vector^ a, Vector^ b)
  57. {
  58. a.X = b.X;
  59. a.Y = b.Y;
  60. }
  61. */
  62. ///<summary>Returns a string representation of this vector</summary>
  63. virtual System::String^ ToString() override
  64. {
  65. return gcnew System::String("<" + X + ", " + Y + ">");
  66. }
  67. };
  68. }
  69. }