⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 face.h

📁 3D游戏场景编辑器
💻 H
字号:
/****************************************************************************************/
/*  face.h                                                                              */
/*                                                                                      */
/*  Author:       Jim Mischel, Ken Baird, Jeff Lomax                                    */
/*  Description:  Genesis world editor header file                                      */
/*                                                                                      */
/*  The contents of this file are subject to the Genesis3D Public License               */
/*  Version 1.01 (the "License"); you may not use this file except in                   */
/*  compliance with the License. You may obtain a copy of the License at                */
/*  http://www.genesis3d.com                                                            */
/*                                                                                      */
/*  Software distributed under the License is distributed on an "AS IS"                 */
/*  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See                */
/*  the License for the specific language governing rights and limitations              */
/*  under the License.                                                                  */
/*                                                                                      */
/*  The Original Code is Genesis3D, released March 25, 1999.                            */
/*  Genesis3D Version 1.1 released November 15, 1999                                 */
/*  Copyright (C) 1999 WildTangent, Inc. All Rights Reserved           */
/*                                                                                      */
/*  Prepared for GenEdit-Classic ver. 0.5, Dec. 15, 2000								*/
/****************************************************************************************/
#ifndef _FACE_H_
#define _FACE_H_


#include "Vec3d.h"
#include "xform3d.h"
#include "box3d.h"
#include <stdio.h>
#include "Parse3dt.h"


typedef struct
{
	geVec3d uVec, vVec;
	geFloat uOffset, vOffset;
} TexInfo_Vectors;


#ifdef __cplusplus
extern "C" {
#endif

typedef struct NodeTag Node;

typedef struct PlaneTag
{
	geVec3d		Normal;
	geFloat		Dist;
} Plane;

typedef struct FaceTag Face;

//instancing / init
Face	*Face_Create(int NumPnts, const geVec3d *pnts, int DibId);
Face	*Face_CreateFromPlane(const Plane *p, geFloat Radius, int DibId);
void	Face_Destroy(Face **);
Face	*Face_Clone(const Face *src);
Face	*Face_CloneReverse(const Face *src);

//access
int						Face_GetNumPoints(const Face *f);
geFloat					Face_GetValue(const Face *f);
const Plane				*Face_GetPlane(const Face *f);
const geVec3d			*Face_GetPoints(const Face *f);
int						Face_GetLightIntensity(const Face *f);
void					Face_GetLightScale(const Face *f, geFloat *pxScale, geFloat *pyScale);
void					Face_GetTextureScale(const Face *f, geFloat *pxScale, geFloat *pyScale);
void					Face_GetTextureShift(const Face *f, int *pxShift, int *pyShift);
geFloat					Face_GetTextureRotate(const Face *f);
const TexInfo_Vectors	*Face_GetTextureVecs(const Face *f);
int						Face_GetTextureDibId(const Face *f);
char const				*Face_GetTextureName(const Face *f);
geFloat					Face_GetMipMapBias(const Face *f);
geFloat					Face_GetTranslucency(const Face *f);
geFloat					Face_GetReflectivity(const Face *f);

//check flags
geBoolean	Face_IsSelected(const Face *f);
geBoolean	Face_IsLight(const Face *f);
geBoolean	Face_IsMirror(const Face *f);
geBoolean	Face_IsFullBright(const Face *f);
geBoolean	Face_IsSky(const Face *f);
geBoolean	Face_IsFixedHull(const Face *f);
geBoolean	Face_IsGouraud(const Face *f);
geBoolean	Face_IsFlat(const Face *f);
geBoolean	Face_IsTextureLocked (const Face *f);
geBoolean	Face_IsVisible (const Face *f);
geBoolean	Face_IsSheet(const Face *f);
geBoolean	Face_IsTransparent(const Face *f);

//set/reset flags
void	Face_SetSelected(Face *f, const geBoolean state);
void	Face_SetLight(Face *f, const geBoolean state);
void	Face_SetMirror(Face *f, const geBoolean state);
void	Face_SetFullBright(Face *f, const geBoolean state);
void	Face_SetSky(Face *f, const geBoolean state);
void	Face_SetFixedHull(Face *f, const geBoolean state);
void	Face_SetGouraud(Face *f, const geBoolean state);
void	Face_SetFlat(Face *f, const geBoolean state);
void	Face_SetTextureLock(Face *f, const geBoolean state);
void	Face_SetVisible(Face *f, const geBoolean state);
void	Face_SetSheet(Face *f, const geBoolean state);
void	Face_SetTransparent(Face *f, const geBoolean state);

//set elements
void	Face_SetLightIntensity(Face *f, const int Value);
void	Face_SetLightScale(Face *f, const geFloat xScale, const geFloat yScale);
void	Face_SetTextureScale(Face *f, const geFloat xScale, const geFloat yScale);
void	Face_SetTextureShift(Face *f, const int xShift, const int yShift);
void	Face_SetTextureRotate(Face *f, const geFloat Rotate);
void	Face_SetTextureDibId(Face *f, const int Dib);
void	Face_SetTextureName(Face *f, const char *pName);
void	Face_SetTextureSize (Face *f, const int txSize, const int tySize);
void	Face_SetMipMapBias (Face *f, const geFloat Bias);
void	Face_SetTranslucency (Face *f, const geFloat trans);
void	Face_SetReflectivity (Face *f, const geFloat rscale);
void	Face_CopyTexInfo(const Face *src, Face *dst);
void	Face_CopyFaceInfo(const Face *src, Face *dst);

//operations
void	Face_Rotate(Face *f, const geXForm3d *pXfmRotate, const geVec3d *pCenter);
void	Face_Move(Face *f, const geVec3d *trans);
void	Face_Transform(Face *f, const geXForm3d *pXfm);
void	Face_Scale(Face *f, const geVec3d *ScaleVec);
void	Face_Shear(Face *f, const geVec3d *ShearVec, const geVec3d *ShearAxis);
void	Face_GetBounds(const Face *f, Box3d *b);
void	Face_GetCenter(const Face *f, geVec3d *pCenter);
void	Face_GetSplitInfo(const Face *f, const Plane *p, geFloat *dists, uint8 *sides, uint8 *cnt);
void	Face_Split(const Face	*f,		//original face
				   const Plane	*p,		//split plane
				   Face			**ff,	//front face (null)
				   Face			**bf,	//back face (null)
				   geFloat		*dists,	//plane dists per vert
				   uint8		*sides);//plane sides per vert
void	Face_Clip(Face *f, const Plane *p, geFloat *dists, uint8 *sides);
geFloat	Face_PlaneDistance(const Face *f, geVec3d *pos);
void	Face_MostlyOnSide(const Face *f, const Plane *p, geFloat *max, int *side);

//io
void	Face_WriteToMap(const Face *f, FILE *wf);
void	Face_WriteToQuakeMap(const Face *f, FILE *wf);
geBoolean Face_Write(const Face *f, FILE *wf);
Face	*Face_CreateFromFile(Parse3dt *Parser, int VersionMajor, int VersionMinor, const char **Expected);

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -