Microsoft-3D-Movie-Maker/INC/MODL.H
2022-05-03 16:31:19 -07:00

72 lines
1.7 KiB
C++

/* Copyright (c) Microsoft Corporation.
Licensed under the MIT License. */
/*************************************************************************
modl.h: Model class
Primary Author: ******
Review Status: REVIEWED - any changes to this file must be reviewed!
BASE ---> BACO ---> MODL
*************************************************************************/
#ifndef MODL_H
#define MODL_H
// Model on file:
struct MODLF
{
short bo;
short osk;
short cver; // count of vertices
short cfac; // count of faces
BRS rRadius;
BRB brb; // bounds
BVEC3 bvec3Pivot;
// br_vertex rgbrv[]; // vertices
// br_face rgbrf[]; // faces
};
typedef MODLF *PMODLF;
const BOM kbomModlf = 0x55fffff0;
/****************************************
MODL: a wrapper for BRender models
****************************************/
typedef class MODL *PMODL;
#define MODL_PAR BACO
#define kclsMODL 'MODL'
class MODL : public MODL_PAR
{
RTCLASS_DEC
ASSERT
MARKMEM
protected:
BMDL *_pbmdl; // BRender model data
protected:
MODL(void) {}
bool _FInit(PBLCK pblck);
bool _FPrelight(long cblit, BVEC3 *prgbvec3Light);
public:
static PMODL PmodlNew(long cbrv, BRV *prgbrv, long cbrf, BRF *prgbrf);
static bool FReadModl(PCRF pcrf, CTG ctg, CNO cno, PBLCK pblck,
PBACO *ppbaco, long *pcb);
static PMODL PmodlReadFromDat(FNI *pfni);
static PMODL PmodlFromBmdl(PBMDL pbmdl);
~MODL(void);
PBMDL Pbmdl(void) { return _pbmdl; }
void AdjustTdfCharacter(void);
bool FWrite(PCFL pcfl, CTG ctg, CNO cno);
BRS Dxr(void)
{ return _pbmdl->bounds.max.v[0] - _pbmdl->bounds.min.v[0]; }
BRS Dyr(void)
{ return _pbmdl->bounds.max.v[1] - _pbmdl->bounds.min.v[1]; }
BRS Dzr(void)
{ return _pbmdl->bounds.max.v[2] - _pbmdl->bounds.min.v[2]; }
};
#endif TMPL_H