📄 face.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 + -