Archival snapshot of the Virtual World Entertainment Tesla cockpit software, 1994-1996: MUNGA engine and L4 pod layer source (Borland C++ 5.0), BT/RP game code, and game content (models, audio, maps, gauges, Division renderer data). Includes third-party libraries: Division dVS/DPL graphics, HMI SOS audio, WATTCP networking. Files are preserved byte-for-byte (.gitattributes disables all line-ending conversion). README.md documents the layout, target hardware, and toolchain. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
66 lines
2.4 KiB
C++
66 lines
2.4 KiB
C++
//===========================================================================//
|
|
// File: mtrxstk.cc //
|
|
// Project: MUNGA Brick: Math Library //
|
|
// Contents: Interface specification for the matrix class //
|
|
//---------------------------------------------------------------------------//
|
|
// Date Who Modification //
|
|
// -------- --- ---------------------------------------------------------- //
|
|
// 11/21/94 JMA Initial coding. //
|
|
// 12/01/94 JMA Changed Matrix to FullMatrix, based both matrix classes on //
|
|
// Matrix44Base //
|
|
//---------------------------------------------------------------------------//
|
|
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
|
|
// All Rights reserved worldwide //
|
|
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
|
//===========================================================================//
|
|
|
|
#include <munga.hpp>
|
|
|
|
#if !defined(MTRXSTK_HPP)
|
|
# include <mtrxstk.hpp>
|
|
#endif
|
|
|
|
AffineMatrixStack&
|
|
AffineMatrixStack::Concatenate(const AffineMatrix& matrix)
|
|
{
|
|
AffineMatrix *old_top = Cast_Object(AffineMatrix*,Peek());
|
|
AffineMatrix *new_top = (AffineMatrix*)MemoryStack::Push();
|
|
new_top->Multiply(*old_top,matrix);
|
|
return *this;
|
|
}
|
|
|
|
LinearMatrixStack&
|
|
LinearMatrixStack::Concatenate(const LinearMatrix& matrix)
|
|
{
|
|
LinearMatrix *old_top = Cast_Object(LinearMatrix*,Peek());
|
|
LinearMatrix *new_top = (LinearMatrix*)MemoryStack::Push();
|
|
new_top->Multiply(*old_top,matrix);
|
|
return *this;
|
|
}
|
|
|
|
Matrix4x4Stack&
|
|
Matrix4x4Stack::Concatenate(const Matrix4x4& matrix)
|
|
{
|
|
Matrix4x4 *old_top = Cast_Object(Matrix4x4*,Peek());
|
|
Matrix4x4 *new_top = (Matrix4x4*)MemoryStack::Push();
|
|
new_top->Multiply(*old_top,matrix);
|
|
return *this;
|
|
}
|
|
|
|
Matrix4x4Stack&
|
|
Matrix4x4Stack::Concatenate(const AffineMatrix& matrix)
|
|
{
|
|
Matrix4x4 *old_top = Cast_Object(Matrix4x4*,Peek());
|
|
Matrix4x4 *new_top = (Matrix4x4*)MemoryStack::Push();
|
|
new_top->Multiply(*old_top,matrix);
|
|
return *this;
|
|
}
|
|
|
|
Matrix4x4&
|
|
Matrix4x4Stack::Push(const AffineMatrix& matrix)
|
|
{
|
|
Matrix4x4 *new_top = (Matrix4x4*)MemoryStack::Push();
|
|
return *new_top = matrix;
|
|
}
|
|
|