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

📄 objekt.h

📁 一个96K的3D游戏源码
💻 H
字号:
/*    Objekt.H
 *
 *  provides Object-Declarations & -operations
 *
 * Copyright 2003 by PaP / JTMK
*/

#ifndef Objekt_H
#define Objekt_H

#include "vectors.h"
#include "level.h"

#define _Fixed		1
#define _Attackable 2
#define _Klopping	4

#define _Item_Part		0
#define _Item_Bullet	1
#define _Item_Box		2
#define _Item_Flamer	3
#define _Item_Water		4
#define	_Item_WaterPart 5

#define _ItemBox_Gun1		0
#define _ItemBox_Medikit	1
#define _ItemBox_Continue	2
#define _ItemBox_LevEnd		3
#define _ItemBox_Gun2		4

struct tMeshList
{
	tGrund	*Mesh;
	long	MatNr;
	tMeshList *Next;
};


struct tSkeletonNode  // SkelettKnotenpunkt
{
	tP3D Pos;				// Momentane Position
	tP3D OrgPos;			// Position des Skelettpunkts im Originalzustand
	tP3D ZielOrgPos;        // Zielpunkt des Nodes
	tP3D Speed;             // Geschwindigkeitsvektor
	char Flags;				// Ob er von ChildNodes bewegt werden darf
	float FatherAbstand;	// Abstand zum Father
	tOMatrix Matrix;        // Orientierungsmatrix
	float Roll;				// Roll-Faktor
	float ZielRoll;			// Ziel-Roll-Faktor
	float RollSpeed;		// Roll-Speed
	float SphereSize;		// Sphere for punching
	tP3D LastSpeed;			// Last Speed
	tMeshList *MeshList;	// Meshes
	tSkeletonNode *Father;  // Oberbaum
	tSkeletonNode *Child;   // Unterbaum
	tSkeletonNode *Next;    // Nebenbaum
};

struct tSkelList
{
	tSkeletonNode *Node;
	tSkelList *Next;
};

typedef struct        // Objekt - Definition
{
	tP3D Position;		// Position des Objektes
	tP3D Rotation;		// Rotation des Objektes
	tSkeletonNode *Skel;// Skelettpunkte
	tSkelList *SkelList;// Liste der Skelettpunkte;
	long SkelNodes;		// Anzahl der Skelettpunkte
} tObjekt;


struct tItem
{
	long	Type;		// Typ des Items
	long	Attr;		// Typen - Attribut
	float	Attr2;		// Halt n zweites Attribut
	tP3D	Pos;		// Position des Items
	tP3D	Rot;		// Rotation des Items
	tP3D	Speed;		// Speed des Items
	tP3D	RotAdd;		// Rotations Addition
	float	RotSpeed;	// RotationSpeed
	float	Roll;		// RollValue
	long	Life;		// Verbleibendes Life
	long	MaxLife;    // Maximales Life
	float	SphereSize; // Gr鰏se
	long	Owner;		// Besitzer des Items
	tP3D	LastPos;		
	tP3D	LastSpeed;
	tOMatrix NewMatrix;
	tOMatrix OldMatrix;
	tOMatrix Matrix;	// Orientierungsmatrix
	tMeshList  *MeshList;		// Polygonbeschreibung
};

extern tSkeletonNode *Node[100];
extern tSkeletonNode *TempNode1[100],*TempNode2[100];
extern long SkelNodes;

tSkeletonNode	*CopySkelNode(tSkeletonNode *Orig,tSkeletonNode *Father,bool CopyMesh);
tObjekt			*CopyObject(tObjekt *Temp,bool CopyMesh);
// Berechnet das Skelett neu
void			ReCalcSkelNode(tSkeletonNode *Temp,tOMatrix *OrigMatrix,tP3D *OldPos,float Time);
// Berechnet die momentane Position der Vertices in abh鋘gigkeit von ihren Relativpunkten

// 膎dert den RelativPunkt eines Vertices
tObjekt			*DelObj(tObjekt *Obj);

void			SetSkelNodeRoll(tSkeletonNode *Temp,float NewRoll,tObjekt *Obj);

tSkelList		*CreateSkelList(tSkeletonNode *Skel,tObjekt *Obj);

long			GetSkelNumber(tSkeletonNode *Temp,tObjekt *Obj);
tSkeletonNode	*GetSkelAddr(long Nr,tSkelList *Temp2);

void			CalcSkelSpeeds(tSkeletonNode *Temp);
void			CalcSkelMovement(tSkeletonNode *Temp,bool DoIt);
tP3D			SkelPhysicAusgleich(tSkeletonNode *Temp);
void			CalcNextPos(tSkeletonNode *Src,tSkeletonNode *Dest);

tObjekt			*LoadObjFromBCL(unsigned char *LAddr);

void			DestroySkelList(tSkelList *Temp);
void			SetMeshAsItIs(tSkeletonNode *Temp);

void			SetRollMesh(tMeshList *Mesh,tOMatrix Matrix,tP3D Pos);
void			DelMeshList(tMeshList *Temp);

tMeshList		*CopyMeshList(tMeshList *Orig);
void			SetMeshPointsRelTo(tGrund *Mesh,tOMatrix Matrix,tP3D Pos);
tMeshList		*ConvertToMeshList(tMeshList *List,tSector *Sector,tOMatrix *Matrix);

#endif

⌨️ 快捷键说明

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