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