mirror of
https://github.com/Ed94/HandmadeHero.git
synced 2024-11-10 11:54:52 -08:00
201 lines
2.5 KiB
C++
201 lines
2.5 KiB
C++
|
// This was generated by project/codegen/engine_gen.cpp
|
||
|
#pragma once
|
||
|
#if INTELLISENSE_DIRECTIVES
|
||
|
#include "vectors.hpp"
|
||
|
#endif
|
||
|
|
||
|
struct Pos2_f32
|
||
|
{
|
||
|
union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
f32 x;
|
||
|
f32 y;
|
||
|
};
|
||
|
|
||
|
f32 Basis[ 2 ];
|
||
|
};
|
||
|
|
||
|
operator Vec2_f32()
|
||
|
{
|
||
|
return *rcast( Vec2_f32*, this );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
using Dist2_f32 = f32;
|
||
|
|
||
|
inline Dist2_f32 distance( Pos2_f32 a, Pos2_f32 b )
|
||
|
{
|
||
|
f32 x = b.x - a.x;
|
||
|
f32 y = b.y - a.y;
|
||
|
Dist2_f32 result = sqrt( x * x + y * y );
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
struct Vel2_f32
|
||
|
{
|
||
|
union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
f32 x;
|
||
|
f32 y;
|
||
|
};
|
||
|
|
||
|
f32 Basis[ 2 ];
|
||
|
};
|
||
|
|
||
|
operator Vec2_f32()
|
||
|
{
|
||
|
return *rcast( Vec2_f32*, this );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
inline Vel2_f32 velocity( Pos2_f32 a, Pos2_f32 b )
|
||
|
{
|
||
|
Vec2_f32 result = b - a;
|
||
|
return pcast( Vel2_f32, result );
|
||
|
}
|
||
|
|
||
|
inline Pos2_f32& operator+=( Pos2_f32& pos, Vel2_f32 const& vel )
|
||
|
{
|
||
|
pos.x += vel.x;
|
||
|
pos.y += vel.y;
|
||
|
return pos;
|
||
|
}
|
||
|
|
||
|
inline Vel2_f32& operator*=( Vel2_f32& v, f32 s )
|
||
|
{
|
||
|
v.x *= s;
|
||
|
v.y *= s;
|
||
|
return v;
|
||
|
}
|
||
|
|
||
|
struct Accel2_f32
|
||
|
{
|
||
|
union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
f32 x;
|
||
|
f32 y;
|
||
|
};
|
||
|
|
||
|
f32 Basis[ 2 ];
|
||
|
};
|
||
|
|
||
|
operator Vec2_f32()
|
||
|
{
|
||
|
return *rcast( Vec2_f32*, this );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
inline Accel2_f32 acceleration( Vel2_f32 a, Vel2_f32 b )
|
||
|
{
|
||
|
Vec2_f32 result = b - a;
|
||
|
return pcast( Accel2_f32, result );
|
||
|
}
|
||
|
|
||
|
struct Pos2_s32
|
||
|
{
|
||
|
union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
s32 x;
|
||
|
s32 y;
|
||
|
};
|
||
|
|
||
|
s32 Basis[ 2 ];
|
||
|
};
|
||
|
|
||
|
operator Vec2_s32()
|
||
|
{
|
||
|
return *rcast( Vec2_s32*, this );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
using Dist2_s32 = s32;
|
||
|
|
||
|
inline Dist2_s32 distance( Pos2_s32 a, Pos2_s32 b )
|
||
|
{
|
||
|
s32 x = b.x - a.x;
|
||
|
s32 y = b.y - a.y;
|
||
|
Dist2_s32 result = sqrt( x * x + y * y );
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
struct Vel2_s32
|
||
|
{
|
||
|
union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
s32 x;
|
||
|
s32 y;
|
||
|
};
|
||
|
|
||
|
s32 Basis[ 2 ];
|
||
|
};
|
||
|
|
||
|
operator Vec2_s32()
|
||
|
{
|
||
|
return *rcast( Vec2_s32*, this );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
inline Vel2_s32 velocity( Pos2_s32 a, Pos2_s32 b )
|
||
|
{
|
||
|
Vec2_s32 result = b - a;
|
||
|
return pcast( Vel2_s32, result );
|
||
|
}
|
||
|
|
||
|
inline Pos2_s32& operator+=( Pos2_s32& pos, Vel2_s32 const& vel )
|
||
|
{
|
||
|
pos.x += vel.x;
|
||
|
pos.y += vel.y;
|
||
|
return pos;
|
||
|
}
|
||
|
|
||
|
inline Vel2_s32& operator*=( Vel2_s32& v, s32 s )
|
||
|
{
|
||
|
v.x *= s;
|
||
|
v.y *= s;
|
||
|
return v;
|
||
|
}
|
||
|
|
||
|
struct Accel2_s32
|
||
|
{
|
||
|
union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
s32 x;
|
||
|
s32 y;
|
||
|
};
|
||
|
|
||
|
s32 Basis[ 2 ];
|
||
|
};
|
||
|
|
||
|
operator Vec2_s32()
|
||
|
{
|
||
|
return *rcast( Vec2_s32*, this );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
inline Accel2_s32 acceleration( Vel2_s32 a, Vel2_s32 b )
|
||
|
{
|
||
|
Vec2_s32 result = b - a;
|
||
|
return pcast( Accel2_s32, result );
|
||
|
}
|
||
|
|
||
|
using Pos2 = Pos2_f32;
|
||
|
using Dist2 = Dist2_f32;
|
||
|
using Vel2 = Vel2_f32;
|
||
|
using Accel2 = Accel2_f32;
|
||
|
using Pos2i = Pos2_s32;
|
||
|
using Dist2i = Dist2_s32;
|
||
|
using Vel2i = Vel2_s32;
|
||
|
using Accel2i = Accel2_s32;
|