Bool CGeometryHelper::CreatePlane( CGeometryModel& model, const CColor& color, const CVector2f& size, const CVector2f& uvSize ) { struct SVertex { CVector3f Position; CVector2f TexCoord0; CColor Color; }; SVertex vertexBufferData[ 4 ]; UInt16 indexBufferData[ 6 ]; vertexBufferData[ 0 ].Position = CVector3f( -0.5f*size.GetX(), 0.0f, 0.5f*size.GetY() ); vertexBufferData[ 1 ].Position = CVector3f( 0.5f*size.GetX(), 0.0f, 0.5f*size.GetY() ); vertexBufferData[ 2 ].Position = CVector3f( 0.5f*size.GetX(), 0.0f, -0.5f*size.GetY() ); vertexBufferData[ 3 ].Position = CVector3f( -0.5f*size.GetX(), 0.0f, -0.5f*size.GetY() ); vertexBufferData[ 0 ].TexCoord0 = CVector2f( 0.0f, 0.0f ); vertexBufferData[ 1 ].TexCoord0 = CVector2f( 1.0f*uvSize.GetX(), 0.0f ); vertexBufferData[ 2 ].TexCoord0 = CVector2f( 1.0f*uvSize.GetX(), 1.0f*uvSize.GetY() ); vertexBufferData[ 3 ].TexCoord0 = CVector2f( 0.0f, 1.0f*uvSize.GetY() ); vertexBufferData[ 0 ].Color = color; vertexBufferData[ 1 ].Color = color; vertexBufferData[ 2 ].Color = color; vertexBufferData[ 3 ].Color = color; indexBufferData[ 0 ] = 0; indexBufferData[ 1 ] = 1; indexBufferData[ 2 ] = 3; indexBufferData[ 3 ] = 1; indexBufferData[ 4 ] = 2; indexBufferData[ 5 ] = 3; CGeometryMesh* mesh = NEWOBJ( CGeometryMesh, () ); CGeometryVertexBuffer* vb = NEWOBJ( CGeometryVertexBuffer, () ); CGeometryIndexBuffer* ib = NEWOBJ( CGeometryIndexBuffer, () ); CGeometryVertexLayout* vl = NEWOBJ( CGeometryVertexLayout, () ); vl->AddElement( nVertexComponent_Position, nVertexComponentType_Float3 ); vl->AddElement( nVertexComponent_TexCoord0, nVertexComponentType_Float2 ); vl->AddElement( nVertexComponent_Color0, nVertexComponentType_Float4 ); vl->Initialize(); //vb->SetAttribute( CGeometryVertexBuffer::nFlag_Dynamic ); vb->SetRawData( 4, sizeof( SVertex ), ( Byte* ) vertexBufferData ); vb->Load( ); ib->SetRawData( 6, sizeof( UInt16 ), (Byte*)indexBufferData ); ib->Load( ); mesh->SetIndexBuffer( ib ); mesh->SetVertexBuffer( vb ); mesh->SetVertexLayout( vl ); model.SetSubsetCount( 1 ); model.GetSubset(0).Mesh = mesh; return TRUE; }
float CVector2f::AngleBetweenEx(const CVector2f _vector1, const CVector2f _vector2) { CVector2f vecBetween = _vector2 - _vector1; if( vecBetween.GetX() < 0 ) { // 2 * PI return (6.28f) + atan2(vecBetween.GetX(), -vecBetween.GetY()); } else return atan2(vecBetween.GetX(), -vecBetween.GetY()); }
float CVector2f::operator* (CVector2f vec) { return this->x*vec.GetX() + this->y*vec.GetY(); }
CVector2f CVector2i::operator/( const CVector2f& v) const { return CVector2f((Float32)x/v.GetX(),(Float32)y/v.GetY() ); }
CVector2i::CVector2i( const CVector2f& other ) { x = (Int32) other.GetX(); y = (Int32) other.GetY(); }
Void CGameProperty::SetAsVector2( const CVector2f& d) { m_Tuple2fValue.x = d.GetX(); m_Tuple2fValue.y = d.GetY(); }
Void CText::SetPosition( const CVector2f& pos ) { m_Position.SetX( pos.GetX() ); m_Position.SetY( pos.GetY() ); }