Files
firestorm/Gameleap/code/mw4/Libraries/stuff/Motion.hpp
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

120 lines
2.8 KiB
C++

//===========================================================================//
// File: motion.hh //
// Project: MUNGA Brick: Math Library //
// Contents: Implementation details for the position class //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// 01/30/95 JMA Initial coding. //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#pragma once
#include "Stuff.hpp"
#include "Vector3D.hpp"
namespace Stuff {class Motion3D;}
#if !defined(Spew)
void
Spew(
const char* group,
const Stuff::Motion3D& motion
);
#endif
namespace Stuff {
//~~~~~~~~~~~~~~~~~~~~~~~~~~~ Motion3D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Motion3D
{
public:
Vector3D
linearMotion;
Vector3D
angularMotion;
static const Motion3D
Identity;
//
// Constructors
//
Motion3D()
{}
Motion3D(const Motion3D& motion);
Motion3D(
const Vector3D& t,
const Vector3D& q
)
{Check_Object(&t); Check_Object(&q); linearMotion = t; angularMotion = q;}
//
// Assignment operators
//
Motion3D&
operator=(const Motion3D& p);
friend bool
Close_Enough(
const Motion3D &a1,
const Motion3D &a2,
Scalar e=SMALL
);
bool
operator==(const Motion3D& a) const
{return Close_Enough(*this,a,SMALL);}
bool
operator!=(const Motion3D& a) const
{return !Close_Enough(*this,a,SMALL);}
//
// Origin3D motion
//
Motion3D&
AddScaled(
const Motion3D& source,
const Motion3D& delta,
Scalar t
);
//
// Support functions
//
#if !defined(Spew)
friend void
::Spew(
const char* group,
const Motion3D& motion
);
#endif
void
TestInstance() const;
static bool
TestClass();
};
}
namespace MemoryStreamIO {
inline Stuff::MemoryStream&
Read(
Stuff::MemoryStream* stream,
Stuff::Motion3D *output
)
{return stream->ReadBytes(output, sizeof(*output));}
inline Stuff::MemoryStream&
Write(
Stuff::MemoryStream* stream,
const Stuff::Motion3D *input
)
{return stream->WriteBytes(input, sizeof(*input));}
}