3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright (C) 2007 David Adam
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright (C) 2007 Tony Wasserka
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is free software; you can redistribute it and/or
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * modify it under the terms of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License as published by the Free Software Foundation; either
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * version 2.1 of the License, or (at your option) any later version.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is distributed in the hope that it will be useful,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Lesser General Public License for more details.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * You should have received a copy of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License along with this library; if not, write to the Free Software
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef __D3DX9MATH_INL__
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define __D3DX9MATH_INL__
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* constructors & operators */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2::D3DXVECTOR2()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2::D3DXVECTOR2(const FLOAT *pf)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if(!pf) return;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x = pf[0];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y = pf[1];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2::D3DXVECTOR2(FLOAT fx, FLOAT fy)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x = fx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y = fy;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2::operator FLOAT* ()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (FLOAT*)&x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2::operator const FLOAT* () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (const FLOAT*)&x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2& D3DXVECTOR2::operator += (const D3DXVECTOR2& v)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x += v.x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y += v.y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2& D3DXVECTOR2::operator -= (const D3DXVECTOR2& v)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x -= v.x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y -= v.y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2& D3DXVECTOR2::operator *= (FLOAT f)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2& D3DXVECTOR2::operator /= (FLOAT f)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x /= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y /= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2 D3DXVECTOR2::operator + () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2 D3DXVECTOR2::operator - () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR2(-x, -y);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2 D3DXVECTOR2::operator + (const D3DXVECTOR2& v) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR2(x + v.x, y + v.y);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2 D3DXVECTOR2::operator - (const D3DXVECTOR2& v) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR2(x - v.x, y - v.y);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2 D3DXVECTOR2::operator * (FLOAT f) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR2(x * f, y * f);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2 D3DXVECTOR2::operator / (FLOAT f) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR2(x / f, y / f);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR2 operator * (FLOAT f, const D3DXVECTOR2& v)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR2(f * v.x, f * v.y);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXVECTOR2::operator == (const D3DXVECTOR2& v) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return x == v.x && y == v.y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXVECTOR2::operator != (const D3DXVECTOR2& v) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return x != v.x || y != v.y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3::D3DXVECTOR3()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3::D3DXVECTOR3(const FLOAT *pf)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if(!pf) return;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x = pf[0];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y = pf[1];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z = pf[2];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3::D3DXVECTOR3(const D3DVECTOR& v)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x = v.x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y = v.y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z = v.z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3::D3DXVECTOR3(FLOAT fx, FLOAT fy, FLOAT fz)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x = fx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y = fy;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z = fz;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3::operator FLOAT* ()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (FLOAT*)&x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3::operator const FLOAT* () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (const FLOAT*)&x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3& D3DXVECTOR3::operator += (const D3DXVECTOR3& v)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x += v.x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y += v.y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z += v.z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3& D3DXVECTOR3::operator -= (const D3DXVECTOR3& v)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x -= v.x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y -= v.y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z -= v.z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3& D3DXVECTOR3::operator *= (FLOAT f)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3& D3DXVECTOR3::operator /= (FLOAT f)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x /= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y /= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z /= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3 D3DXVECTOR3::operator + () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3 D3DXVECTOR3::operator - () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR3(-x, -y, -z);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3 D3DXVECTOR3::operator + (const D3DXVECTOR3& v) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR3(x + v.x, y + v.y, z + v.z);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3 D3DXVECTOR3::operator - (const D3DXVECTOR3& v) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR3(x - v.x, y - v.y, z - v.z);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3 D3DXVECTOR3::operator * (FLOAT f) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR3(x * f, y * f, z * f);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3 D3DXVECTOR3::operator / (FLOAT f) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR3(x / f, y / f, z / f);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR3 operator * (FLOAT f, const D3DXVECTOR3& v)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR3(f * v.x, f * v.y, f * v.z);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXVECTOR3::operator == (const D3DXVECTOR3& v) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return x == v.x && y == v.y && z == v.z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXVECTOR3::operator != (const D3DXVECTOR3& v) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return x != v.x || y != v.y || z != v.z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4::D3DXVECTOR4()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4::D3DXVECTOR4(const FLOAT *pf)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if(!pf) return;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x = pf[0];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y = pf[1];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z = pf[2];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync w = pf[3];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4::D3DXVECTOR4(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x = fx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y = fy;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z = fz;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync w = fw;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4::operator FLOAT* ()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (FLOAT*)&x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4::operator const FLOAT* () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (const FLOAT*)&x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4& D3DXVECTOR4::operator += (const D3DXVECTOR4& v)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x += v.x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y += v.y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z += v.z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync w += v.w;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4& D3DXVECTOR4::operator -= (const D3DXVECTOR4& v)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x -= v.x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y -= v.y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z -= v.z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync w -= v.w;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4& D3DXVECTOR4::operator *= (FLOAT f)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync w *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4& D3DXVECTOR4::operator /= (FLOAT f)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x /= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y /= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z /= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync w /= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4 D3DXVECTOR4::operator + () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4 D3DXVECTOR4::operator - () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR4(-x, -y, -z, -w);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4 D3DXVECTOR4::operator + (const D3DXVECTOR4& v) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR4(x + v.x, y + v.y, z + v.z, w + v.w);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4 D3DXVECTOR4::operator - (const D3DXVECTOR4& v) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR4(x - v.x, y - v.y, z - v.z, w - v.w);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4 D3DXVECTOR4::operator * (FLOAT f) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR4(x * f, y * f, z * f, w * f);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4 D3DXVECTOR4::operator / (FLOAT f) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR4(x / f, y / f, z / f, w / f);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXVECTOR4 operator * (FLOAT f, const D3DXVECTOR4& v)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXVECTOR4(f * v.x, f * v.y, f * v.z, f * v.w);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXVECTOR4::operator == (const D3DXVECTOR4& v) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return x == v.x && y == v.y && z == v.z && w == v.w;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXVECTOR4::operator != (const D3DXVECTOR4& v) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return x != v.x || y != v.y || z != v.z || w != v.w;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX::D3DXMATRIX()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX::D3DXMATRIX(const FLOAT *pf)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if(!pf) return;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync memcpy(&_11, pf, sizeof(D3DXMATRIX));
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX::D3DXMATRIX(const D3DMATRIX& mat)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync memcpy(&_11, &mat, sizeof(D3DXMATRIX));
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX::D3DXMATRIX(FLOAT f11, FLOAT f12, FLOAT f13, FLOAT f14,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT f21, FLOAT f22, FLOAT f23, FLOAT f24,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT f31, FLOAT f32, FLOAT f33, FLOAT f34,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT f41, FLOAT f42, FLOAT f43, FLOAT f44)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _11 = f11; _12 = f12; _13 = f13; _14 = f14;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _21 = f21; _22 = f22; _23 = f23; _24 = f24;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _31 = f31; _32 = f32; _33 = f33; _34 = f34;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _41 = f41; _42 = f42; _43 = f43; _44 = f44;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline FLOAT& D3DXMATRIX::operator () (UINT row, UINT col)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return m[row][col];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline FLOAT D3DXMATRIX::operator () (UINT row, UINT col) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return m[row][col];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX::operator FLOAT* ()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (FLOAT*)&_11;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX::operator const FLOAT* () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (const FLOAT*)&_11;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX& D3DXMATRIX::operator *= (const D3DXMATRIX& mat)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMatrixMultiply(this, this, &mat);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX& D3DXMATRIX::operator += (const D3DXMATRIX& mat)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _11 += mat._11; _12 += mat._12; _13 += mat._13; _14 += mat._14;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _21 += mat._21; _22 += mat._22; _23 += mat._23; _24 += mat._24;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _31 += mat._31; _32 += mat._32; _33 += mat._33; _34 += mat._34;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _41 += mat._41; _42 += mat._42; _43 += mat._43; _44 += mat._44;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX& D3DXMATRIX::operator -= (const D3DXMATRIX& mat)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _11 -= mat._11; _12 -= mat._12; _13 -= mat._13; _14 -= mat._14;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _21 -= mat._21; _22 -= mat._22; _23 -= mat._23; _24 -= mat._24;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _31 -= mat._31; _32 -= mat._32; _33 -= mat._33; _34 -= mat._34;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _41 -= mat._41; _42 -= mat._42; _43 -= mat._43; _44 -= mat._44;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX& D3DXMATRIX::operator *= (FLOAT f)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _11 *= f; _12 *= f; _13 *= f; _14 *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _21 *= f; _22 *= f; _23 *= f; _24 *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _31 *= f; _32 *= f; _33 *= f; _34 *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _41 *= f; _42 *= f; _43 *= f; _44 *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX& D3DXMATRIX::operator /= (FLOAT f)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT inv = 1.0f / f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _11 *= inv; _12 *= inv; _13 *= inv; _14 *= inv;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _21 *= inv; _22 *= inv; _23 *= inv; _24 *= inv;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _31 *= inv; _32 *= inv; _33 *= inv; _34 *= inv;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _41 *= inv; _42 *= inv; _43 *= inv; _44 *= inv;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX D3DXMATRIX::operator + () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX D3DXMATRIX::operator - () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXMATRIX(-_11, -_12, -_13, -_14,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync -_21, -_22, -_23, -_24,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync -_31, -_32, -_33, -_34,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync -_41, -_42, -_43, -_44);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX D3DXMATRIX::operator * (const D3DXMATRIX& mat) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX buf;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMatrixMultiply(&buf, this, &mat);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return buf;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX D3DXMATRIX::operator + (const D3DXMATRIX& mat) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXMATRIX(_11 + mat._11, _12 + mat._12, _13 + mat._13, _14 + mat._14,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _21 + mat._21, _22 + mat._22, _23 + mat._23, _24 + mat._24,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _31 + mat._31, _32 + mat._32, _33 + mat._33, _34 + mat._34,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _41 + mat._41, _42 + mat._42, _43 + mat._43, _44 + mat._44);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX D3DXMATRIX::operator - (const D3DXMATRIX& mat) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXMATRIX(_11 - mat._11, _12 - mat._12, _13 - mat._13, _14 - mat._14,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _21 - mat._21, _22 - mat._22, _23 - mat._23, _24 - mat._24,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _31 - mat._31, _32 - mat._32, _33 - mat._33, _34 - mat._34,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _41 - mat._41, _42 - mat._42, _43 - mat._43, _44 - mat._44);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX D3DXMATRIX::operator * (FLOAT f) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXMATRIX(_11 * f, _12 * f, _13 * f, _14 * f,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _21 * f, _22 * f, _23 * f, _24 * f,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _31 * f, _32 * f, _33 * f, _34 * f,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _41 * f, _42 * f, _43 * f, _44 * f);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX D3DXMATRIX::operator / (FLOAT f) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT inv = 1.0f / f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXMATRIX(_11 * inv, _12 * inv, _13 * inv, _14 * inv,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _21 * inv, _22 * inv, _23 * inv, _24 * inv,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _31 * inv, _32 * inv, _33 * inv, _34 * inv,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync _41 * inv, _42 * inv, _43 * inv, _44 * inv);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXMATRIX operator * (FLOAT f, const D3DXMATRIX& mat)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXMATRIX(f * mat._11, f * mat._12, f * mat._13, f * mat._14,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync f * mat._21, f * mat._22, f * mat._23, f * mat._24,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync f * mat._31, f * mat._32, f * mat._33, f * mat._34,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync f * mat._41, f * mat._42, f * mat._43, f * mat._44);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXMATRIX::operator == (const D3DXMATRIX& mat) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (memcmp(this, &mat, sizeof(D3DXMATRIX)) == 0);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXMATRIX::operator != (const D3DXMATRIX& mat) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (memcmp(this, &mat, sizeof(D3DXMATRIX)) != 0);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION::D3DXQUATERNION()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION::D3DXQUATERNION(const FLOAT *pf)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if(!pf) return;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x = pf[0];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y = pf[1];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z = pf[2];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync w = pf[3];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION::D3DXQUATERNION(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x = fx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y = fy;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z = fz;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync w = fw;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION::operator FLOAT* ()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (FLOAT*)&x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION::operator const FLOAT* () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (const FLOAT*)&x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION& D3DXQUATERNION::operator += (const D3DXQUATERNION& quat)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x += quat.x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y += quat.y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z += quat.z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync w += quat.w;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION& D3DXQUATERNION::operator -= (const D3DXQUATERNION& quat)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x -= quat.x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y -= quat.y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z -= quat.z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync w -= quat.w;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION& D3DXQUATERNION::operator *= (const D3DXQUATERNION& quat)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQuaternionMultiply(this, this, &quat);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION& D3DXQUATERNION::operator *= (FLOAT f)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync w *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION& D3DXQUATERNION::operator /= (FLOAT f)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT inv = 1.0f / f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync x *= inv;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync y *= inv;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync z *= inv;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync w *= inv;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION D3DXQUATERNION::operator + () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION D3DXQUATERNION::operator - () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXQUATERNION(-x, -y, -z, -w);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION D3DXQUATERNION::operator + (const D3DXQUATERNION& quat) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXQUATERNION(x + quat.x, y + quat.y, z + quat.z, w + quat.w);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION D3DXQUATERNION::operator - (const D3DXQUATERNION& quat) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXQUATERNION(x - quat.x, y - quat.y, z - quat.z, w - quat.w);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION D3DXQUATERNION::operator * (const D3DXQUATERNION& quat) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQUATERNION buf;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXQuaternionMultiply(&buf, this, &quat);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return buf;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION D3DXQUATERNION::operator * (FLOAT f) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXQUATERNION(x * f, y * f, z * f, w * f);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION D3DXQUATERNION::operator / (FLOAT f) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT inv = 1.0f / f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXQUATERNION(x * inv, y * inv, z * inv, w * inv);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXQUATERNION operator * (FLOAT f, const D3DXQUATERNION& quat)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXQUATERNION(f * quat.x, f * quat.y, f * quat.z, f * quat.w);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXQUATERNION::operator == (const D3DXQUATERNION& quat) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return x == quat.x && y == quat.y && z == quat.z && w == quat.w;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXQUATERNION::operator != (const D3DXQUATERNION& quat) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return x != quat.x || y != quat.y || z != quat.z || w != quat.w;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXPLANE::D3DXPLANE()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXPLANE::D3DXPLANE(const FLOAT *pf)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if(!pf) return;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync a = pf[0];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync b = pf[1];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync c = pf[2];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync d = pf[3];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXPLANE::D3DXPLANE(FLOAT fa, FLOAT fb, FLOAT fc, FLOAT fd)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync a = fa;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync b = fb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync c = fc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync d = fd;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXPLANE::operator FLOAT* ()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (FLOAT*)&a;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXPLANE::operator const FLOAT* () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (const FLOAT*)&a;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXPLANE D3DXPLANE::operator + () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXPLANE D3DXPLANE::operator - () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXPLANE(-a, -b, -c, -d);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXPLANE::operator == (const D3DXPLANE& pl) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return a == pl.a && b == pl.b && c == pl.c && d == pl.d;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXPLANE::operator != (const D3DXPLANE& pl) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return a != pl.a || b != pl.b || c != pl.c || d != pl.d;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR::D3DXCOLOR()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR::D3DXCOLOR(DWORD col)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync const FLOAT f = 1.0f / 255.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync r = f * (FLOAT)(unsigned char)(col >> 16);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync g = f * (FLOAT)(unsigned char)(col >> 8);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync b = f * (FLOAT)(unsigned char)col;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync a = f * (FLOAT)(unsigned char)(col >> 24);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR::D3DXCOLOR(const FLOAT *pf)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if(!pf) return;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync r = pf[0];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync g = pf[1];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync b = pf[2];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync a = pf[3];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR::D3DXCOLOR(const D3DCOLORVALUE& col)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync r = col.r;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync g = col.g;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync b = col.b;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync a = col.a;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR::D3DXCOLOR(FLOAT fr, FLOAT fg, FLOAT fb, FLOAT fa)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync r = fr;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync g = fg;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync b = fb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync a = fa;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR::operator DWORD () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD _r = r >= 1.0f ? 0xff : r <= 0.0f ? 0x00 : (DWORD)(r * 255.0f + 0.5f);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD _g = g >= 1.0f ? 0xff : g <= 0.0f ? 0x00 : (DWORD)(g * 255.0f + 0.5f);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD _b = b >= 1.0f ? 0xff : b <= 0.0f ? 0x00 : (DWORD)(b * 255.0f + 0.5f);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD _a = a >= 1.0f ? 0xff : a <= 0.0f ? 0x00 : (DWORD)(a * 255.0f + 0.5f);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (_a << 24) | (_r << 16) | (_g << 8) | _b;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR::operator FLOAT * ()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (FLOAT*)&r;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR::operator const FLOAT * () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (const FLOAT*)&r;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR::operator D3DCOLORVALUE * ()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (D3DCOLORVALUE*)&r;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR::operator const D3DCOLORVALUE * () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (const D3DCOLORVALUE*)&r;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR::operator D3DCOLORVALUE& ()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *((D3DCOLORVALUE*)&r);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR::operator const D3DCOLORVALUE& () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *((const D3DCOLORVALUE*)&r);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR& D3DXCOLOR::operator += (const D3DXCOLOR& col)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync r += col.r;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync g += col.g;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync b += col.b;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync a += col.a;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR& D3DXCOLOR::operator -= (const D3DXCOLOR& col)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync r -= col.r;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync g -= col.g;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync b -= col.b;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync a -= col.a;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR& D3DXCOLOR::operator *= (FLOAT f)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync r *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync g *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync b *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync a *= f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR& D3DXCOLOR::operator /= (FLOAT f)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT inv = 1.0f / f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync r *= inv;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync g *= inv;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync b *= inv;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync a *= inv;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR D3DXCOLOR::operator + () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return *this;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR D3DXCOLOR::operator - () const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXCOLOR(-r, -g, -b, -a);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR D3DXCOLOR::operator + (const D3DXCOLOR& col) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXCOLOR(r + col.r, g + col.g, b + col.b, a + col.a);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR D3DXCOLOR::operator - (const D3DXCOLOR& col) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXCOLOR(r - col.r, g - col.g, b - col.b, a - col.a);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR D3DXCOLOR::operator * (FLOAT f) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXCOLOR(r * f, g * f, b * f, a * f);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR D3DXCOLOR::operator / (FLOAT f) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT inv = 1.0f / f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXCOLOR(r * inv, g * inv, b * inv, a * inv);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXCOLOR operator * (FLOAT f, const D3DXCOLOR& col)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return D3DXCOLOR(f * col.r, f * col.g, f * col.b, f * col.a);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXCOLOR::operator == (const D3DXCOLOR& col) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return r == col.r && g == col.g && b == col.b && a == col.a;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXCOLOR::operator != (const D3DXCOLOR& col) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return r != col.r || g != col.g || b != col.b || a != col.a;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXFLOAT16::D3DXFLOAT16()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXFLOAT16::D3DXFLOAT16(FLOAT f)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXFloat32To16Array(this, &f, 1);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXFLOAT16::D3DXFLOAT16(const D3DXFLOAT16 &f)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync value = f.value;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline D3DXFLOAT16::operator FLOAT ()
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FLOAT f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXFloat16To32Array(&f, this, 1);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXFLOAT16::operator == (const D3DXFLOAT16 &f) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return value == f.value;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline BOOL D3DXFLOAT16::operator != (const D3DXFLOAT16 &f) const
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return value != f.value;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* __cplusplus */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*_______________D3DXCOLOR_____________________*/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXCOLOR* D3DXColorAdd(D3DXCOLOR *pout, const D3DXCOLOR *pc1, const D3DXCOLOR *pc2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pc1 || !pc2 ) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->r = (pc1->r) + (pc2->r);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->g = (pc1->g) + (pc2->g);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->b = (pc1->b) + (pc2->b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->a = (pc1->a) + (pc2->a);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXCOLOR* D3DXColorLerp(D3DXCOLOR *pout, const D3DXCOLOR *pc1, const D3DXCOLOR *pc2, FLOAT s)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pc1 || !pc2 ) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->r = (1-s) * (pc1->r) + s *(pc2->r);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->g = (1-s) * (pc1->g) + s *(pc2->g);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->b = (1-s) * (pc1->b) + s *(pc2->b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->a = (1-s) * (pc1->a) + s *(pc2->a);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXCOLOR* D3DXColorModulate(D3DXCOLOR *pout, const D3DXCOLOR *pc1, const D3DXCOLOR *pc2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pc1 || !pc2 ) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->r = (pc1->r) * (pc2->r);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->g = (pc1->g) * (pc2->g);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->b = (pc1->b) * (pc2->b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->a = (pc1->a) * (pc2->a);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXCOLOR* D3DXColorNegative(D3DXCOLOR *pout, const D3DXCOLOR *pc)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pc ) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->r = 1.0f - pc->r;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->g = 1.0f - pc->g;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->b = 1.0f - pc->b;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->a = pc->a;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXCOLOR* D3DXColorScale(D3DXCOLOR *pout, const D3DXCOLOR *pc, FLOAT s)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pc ) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->r = s* (pc->r);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->g = s* (pc->g);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->b = s* (pc->b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->a = s* (pc->a);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXCOLOR* D3DXColorSubtract(D3DXCOLOR *pout, const D3DXCOLOR *pc1, const D3DXCOLOR *pc2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pc1 || !pc2 ) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->r = (pc1->r) - (pc2->r);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->g = (pc1->g) - (pc2->g);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->b = (pc1->b) - (pc2->b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->a = (pc1->a) - (pc2->a);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*_______________D3DXVECTOR2________________________*/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR2* D3DXVec2Add(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv1, const D3DXVECTOR2 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = pv1->x + pv2->x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = pv1->y + pv2->y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXVec2CCW(const D3DXVECTOR2 *pv1, const D3DXVECTOR2 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pv1 || !pv2) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return ( (pv1->x) * (pv2->y) - (pv1->y) * (pv2->x) );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXVec2Dot(const D3DXVECTOR2 *pv1, const D3DXVECTOR2 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pv1 || !pv2) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return ( (pv1->x * pv2->x + pv1->y * pv2->y) );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXVec2Length(const D3DXVECTOR2 *pv)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (!pv) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return sqrtf( pv->x * pv->x + pv->y * pv->y );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXVec2LengthSq(const D3DXVECTOR2 *pv)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (!pv) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return( (pv->x) * (pv->x) + (pv->y) * (pv->y) );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR2* D3DXVec2Lerp(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv1, const D3DXVECTOR2 *pv2, FLOAT s)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = (1-s) * (pv1->x) + s * (pv2->x);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = (1-s) * (pv1->y) + s * (pv2->y);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR2* D3DXVec2Maximize(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv1, const D3DXVECTOR2 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = pv1->x > pv2->x ? pv1->x : pv2->x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = pv1->y > pv2->y ? pv1->y : pv2->y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR2* D3DXVec2Minimize(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv1, const D3DXVECTOR2 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = pv1->x < pv2->x ? pv1->x : pv2->x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = pv1->y < pv2->y ? pv1->y : pv2->y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR2* D3DXVec2Scale(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv, FLOAT s)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = s * (pv->x);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = s * (pv->y);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR2* D3DXVec2Subtract(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv1, const D3DXVECTOR2 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = pv1->x - pv2->x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = pv1->y - pv2->y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*__________________D3DXVECTOR3_______________________*/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR3* D3DXVec3Add(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = pv1->x + pv2->x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = pv1->y + pv2->y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->z = pv1->z + pv2->z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR3* D3DXVec3Cross(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXVECTOR3 temp;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync temp.x = (pv1->y) * (pv2->z) - (pv1->z) * (pv2->y);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync temp.y = (pv1->z) * (pv2->x) - (pv1->x) * (pv2->z);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync temp.z = (pv1->x) * (pv2->y) - (pv1->y) * (pv2->x);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *pout = temp;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXVec3Dot(const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pv1 || !pv2 ) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (pv1->x) * (pv2->x) + (pv1->y) * (pv2->y) + (pv1->z) * (pv2->z);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXVec3Length(const D3DXVECTOR3 *pv)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (!pv) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return sqrtf( pv->x * pv->x + pv->y * pv->y + pv->z * pv->z );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXVec3LengthSq(const D3DXVECTOR3 *pv)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (!pv) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR3* D3DXVec3Lerp(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pv2, FLOAT s)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = (1-s) * (pv1->x) + s * (pv2->x);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = (1-s) * (pv1->y) + s * (pv2->y);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->z = (1-s) * (pv1->z) + s * (pv2->z);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR3* D3DXVec3Maximize(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = pv1->x > pv2->x ? pv1->x : pv2->x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = pv1->y > pv2->y ? pv1->y : pv2->y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->z = pv1->z > pv2->z ? pv1->z : pv2->z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR3* D3DXVec3Minimize(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = pv1->x < pv2->x ? pv1->x : pv2->x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = pv1->y < pv2->y ? pv1->y : pv2->y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->z = pv1->z < pv2->z ? pv1->z : pv2->z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR3* D3DXVec3Scale(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv, FLOAT s)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = s * (pv->x);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = s * (pv->y);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->z = s * (pv->z);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR3* D3DXVec3Subtract(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = pv1->x - pv2->x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = pv1->y - pv2->y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->z = pv1->z - pv2->z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*__________________D3DXVECTOR4_______________________*/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR4* D3DXVec4Add(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv1, const D3DXVECTOR4 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = pv1->x + pv2->x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = pv1->y + pv2->y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->z = pv1->z + pv2->z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->w = pv1->w + pv2->w;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXVec4Dot(const D3DXVECTOR4 *pv1, const D3DXVECTOR4 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (!pv1 || !pv2 ) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (pv1->x) * (pv2->x) + (pv1->y) * (pv2->y) + (pv1->z) * (pv2->z) + (pv1->w) * (pv2->w);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXVec4Length(const D3DXVECTOR4 *pv)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (!pv) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return sqrtf( pv->x * pv->x + pv->y * pv->y + pv->z * pv->z + pv->w * pv->w );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXVec4LengthSq(const D3DXVECTOR4 *pv)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (!pv) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z) + (pv->w) * (pv->w);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR4* D3DXVec4Lerp(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv1, const D3DXVECTOR4 *pv2, FLOAT s)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = (1-s) * (pv1->x) + s * (pv2->x);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = (1-s) * (pv1->y) + s * (pv2->y);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->z = (1-s) * (pv1->z) + s * (pv2->z);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->w = (1-s) * (pv1->w) + s * (pv2->w);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR4* D3DXVec4Maximize(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv1, const D3DXVECTOR4 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = pv1->x > pv2->x ? pv1->x : pv2->x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = pv1->y > pv2->y ? pv1->y : pv2->y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->z = pv1->z > pv2->z ? pv1->z : pv2->z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->w = pv1->w > pv2->w ? pv1->w : pv2->w;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR4* D3DXVec4Minimize(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv1, const D3DXVECTOR4 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = pv1->x < pv2->x ? pv1->x : pv2->x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = pv1->y < pv2->y ? pv1->y : pv2->y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->z = pv1->z < pv2->z ? pv1->z : pv2->z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->w = pv1->w < pv2->w ? pv1->w : pv2->w;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR4* D3DXVec4Scale(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv, FLOAT s)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = s * (pv->x);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = s * (pv->y);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->z = s * (pv->z);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->w = s * (pv->w);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXVECTOR4* D3DXVec4Subtract(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv1, const D3DXVECTOR4 *pv2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pv1 || !pv2) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = pv1->x - pv2->x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = pv1->y - pv2->y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->z = pv1->z - pv2->z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->w = pv1->w - pv2->w;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*__________________D3DXMatrix____________________*/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef NONAMELESSUNION
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define D3DX_U(x) (x).u
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define D3DX_U(x) (x)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXMATRIX* D3DXMatrixIdentity(D3DXMATRIX *pout)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout ) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[0][1] = 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[0][2] = 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[0][3] = 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[1][0] = 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[1][2] = 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[1][3] = 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[2][0] = 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[2][1] = 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[2][3] = 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[3][0] = 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[3][1] = 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[3][2] = 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[0][0] = 1.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[1][1] = 1.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[2][2] = 1.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DX_U(*pout).m[3][3] = 1.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline BOOL D3DXMatrixIsIdentity(D3DXMATRIX *pm)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync int i,j;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMATRIX testmatrix;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pm ) return FALSE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync D3DXMatrixIdentity(&testmatrix);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync for (i=0; i<4; i++)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync for (j=0; j<4; j++)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( D3DX_U(*pm).m[i][j] != D3DX_U(testmatrix).m[i][j] ) return FALSE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return TRUE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef D3DX_U
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*__________________D3DXPLANE____________________*/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXPlaneDot(const D3DXPLANE *pp, const D3DXVECTOR4 *pv)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pp || !pv ) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return ( (pp->a) * (pv->x) + (pp->b) * (pv->y) + (pp->c) * (pv->z) + (pp->d) * (pv->w) );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXPlaneDotCoord(const D3DXPLANE *pp, const D3DXVECTOR4 *pv)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pp || !pv ) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return ( (pp->a) * (pv->x) + (pp->b) * (pv->y) + (pp->c) * (pv->z) + (pp->d) );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXPlaneDotNormal(const D3DXPLANE *pp, const D3DXVECTOR4 *pv)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pp || !pv ) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return ( (pp->a) * (pv->x) + (pp->b) * (pv->y) + (pp->c) * (pv->z) );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*__________________D3DXQUATERNION____________________*/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXQUATERNION* D3DXQuaternionConjugate(D3DXQUATERNION *pout, const D3DXQUATERNION *pq)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout || !pq) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = -pq->x;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = -pq->y;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->z = -pq->z;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->w = pq->w;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXQuaternionDot(const D3DXQUATERNION *pq1, const D3DXQUATERNION *pq2)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pq1 || !pq2 ) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (pq1->x) * (pq2->x) + (pq1->y) * (pq2->y) + (pq1->z) * (pq2->z) + (pq1->w) * (pq2->w);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline D3DXQUATERNION* D3DXQuaternionIdentity(D3DXQUATERNION *pout)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pout) return NULL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->x = 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->y = 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->z = 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pout->w = 1.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return pout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline BOOL D3DXQuaternionIsIdentity(D3DXQUATERNION *pq)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if ( !pq) return FALSE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return ( (pq->x == 0.0f) && (pq->y == 0.0f) && (pq->z == 0.0f) && (pq->w == 1.0f) );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXQuaternionLength(const D3DXQUATERNION *pq)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (!pq) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return sqrtf( pq->x * pq->x + pq->y * pq->y + pq->z * pq->z + pq->w * pq->w );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstatic inline FLOAT D3DXQuaternionLengthSq(const D3DXQUATERNION *pq)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (!pq) return 0.0f;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return (pq->x) * (pq->x) + (pq->y) * (pq->y) + (pq->z) * (pq->z) + (pq->w) * (pq->w);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif