Import Aliens vs Predator - Gold (Build 116)
Source code release, imported from: https://www.gamefront.com/games/aliens-vs-predator-3/file/avp-gold-complete-source-code All text files were converted to Unix format.
This commit is contained in:
commit
218ca90543
572 changed files with 434587 additions and 0 deletions
286
3dc/win95/animobs.hpp
Normal file
286
3dc/win95/animobs.hpp
Normal file
|
@ -0,0 +1,286 @@
|
|||
#ifndef _animobs_hpp
|
||||
#define _animobs_hpp 1
|
||||
|
||||
#include "chunk.hpp"
|
||||
#include "chnktype.hpp"
|
||||
|
||||
class Object_Animation_Sequence_Header_Chunk;
|
||||
class Object_Animation_Sequence_Frame_Chunk;
|
||||
class Object_Animation_Sequence_Chunk;
|
||||
class Hierarchy_Bounding_Box_Chunk;
|
||||
|
||||
class Object_Animation_Sequences_Chunk : public Chunk_With_Children
|
||||
{
|
||||
public:
|
||||
|
||||
Object_Animation_Sequences_Chunk (Chunk_With_Children * parent)
|
||||
: Chunk_With_Children (parent, "OBANSEQS")
|
||||
{}
|
||||
Object_Animation_Sequences_Chunk (Chunk_With_Children * const parent,const char *, const size_t);
|
||||
|
||||
void list_sequences(List <Object_Animation_Sequence_Chunk *> * pList);
|
||||
|
||||
Object_Animation_Sequence_Chunk * get_sequence (int num, int sub_num);
|
||||
|
||||
private:
|
||||
|
||||
friend class Object_Chunk;
|
||||
friend class Object_Hierarchy_Chunk;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
class Object_Animation_Sequence_Chunk : public Chunk_With_Children
|
||||
{
|
||||
public:
|
||||
|
||||
Object_Animation_Sequence_Chunk (Object_Animation_Sequences_Chunk * parent)
|
||||
: Chunk_With_Children (parent, "OBANSEQC")
|
||||
{}
|
||||
Object_Animation_Sequence_Chunk (Chunk_With_Children * const parent,const char *, const size_t);
|
||||
|
||||
//creates sequence of one frame ,with name taken from template_seq
|
||||
Object_Animation_Sequence_Chunk(Object_Animation_Sequences_Chunk * parent,Object_Animation_Sequence_Chunk* template_seq,ChunkQuat& orient,ChunkVectorInt& trans);
|
||||
|
||||
Object_Animation_Sequence_Header_Chunk * get_header();
|
||||
|
||||
void get_frames(List <Object_Animation_Sequence_Frame_Chunk *>* );
|
||||
|
||||
int get_sequence_time(); //gets time in ms
|
||||
int get_sequence_speed(); //gets movement speed in mm/second
|
||||
|
||||
//get (normalised) direction of movement for sequence
|
||||
//if no direction has been set then returns false , and sets direction to a forward vector
|
||||
BOOL get_sequence_vector(ChunkVectorFloat* direction);
|
||||
|
||||
//getting and setting flags for this sequence
|
||||
int get_sequence_flags();
|
||||
void set_sequence_flags(int new_flags);
|
||||
|
||||
Hierarchy_Bounding_Box_Chunk* get_bounding_box(); //gets the chunk with the bounding box for the sequence
|
||||
private:
|
||||
|
||||
friend class Object_Animation_Sequences_Chunk;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
#define HierarchyFrameFlag_DeltaFrame 0x80000000
|
||||
#define HierarchyFrame_SoundIndexMask 0x7f000000
|
||||
#define HierarchyFrame_FlagMask 0x00ffffff
|
||||
|
||||
class Object_Animation_Sequence_Frame_Chunk : public Chunk
|
||||
{
|
||||
public:
|
||||
|
||||
Object_Animation_Sequence_Frame_Chunk (Object_Animation_Sequence_Chunk * parent)
|
||||
: Chunk (parent, "OBASEQFR"), at_frame_no (-1), frame_ref_no (-1)
|
||||
{
|
||||
ChunkQuat identity = {0,0,0,1};
|
||||
orientation = identity;
|
||||
|
||||
transform.x = 0;
|
||||
transform.y = 0;
|
||||
transform.z = 0;
|
||||
|
||||
flags =0;
|
||||
|
||||
num_extra_data=0;
|
||||
extra_data=0;
|
||||
}
|
||||
Object_Animation_Sequence_Frame_Chunk (Chunk_With_Children * parent,const char *, size_t);
|
||||
|
||||
~Object_Animation_Sequence_Frame_Chunk(){if(extra_data) delete extra_data;}
|
||||
|
||||
ChunkQuat orientation;
|
||||
ChunkVectorInt transform;
|
||||
|
||||
signed long at_frame_no; //frame start time (0-65535)
|
||||
|
||||
signed long frame_ref_no; //frame index number
|
||||
|
||||
int flags;
|
||||
|
||||
int num_extra_data;
|
||||
int* extra_data;
|
||||
|
||||
virtual void fill_data_block (char *);
|
||||
virtual size_t size_chunk ()
|
||||
{
|
||||
return(chunk_size = 12 + 4*4 + 3*4 + 4 + 4 + 8+4*num_extra_data);
|
||||
}
|
||||
|
||||
void set_sound_index(int ind);
|
||||
int get_sound_index(){return ((flags & HierarchyFrame_SoundIndexMask )>>24);}
|
||||
|
||||
private:
|
||||
|
||||
friend class Object_Animation_Sequence_Chunk;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
class Object_Animation_Sequence_Header_Chunk : public Chunk
|
||||
{
|
||||
public:
|
||||
|
||||
Object_Animation_Sequence_Header_Chunk(Chunk_With_Children * parent)
|
||||
: Chunk (parent, "OBASEQHD"), num_frames (0), sequence_number (-1),
|
||||
sub_sequence_number (-1), sequence_name (0)
|
||||
{
|
||||
num_extra_data=0;
|
||||
extra_data=0;
|
||||
}
|
||||
Object_Animation_Sequence_Header_Chunk (Chunk_With_Children * parent,const char *, size_t);
|
||||
|
||||
~Object_Animation_Sequence_Header_Chunk();
|
||||
|
||||
unsigned long num_frames;
|
||||
|
||||
signed long sequence_number;
|
||||
signed long sub_sequence_number;
|
||||
|
||||
int num_extra_data;
|
||||
int* extra_data;
|
||||
|
||||
char * sequence_name;
|
||||
|
||||
virtual void fill_data_block (char *);
|
||||
virtual size_t size_chunk ()
|
||||
{
|
||||
if (sequence_name)
|
||||
{
|
||||
return(chunk_size = 12 + 16 + 4*num_extra_data + strlen(sequence_name) + 4 - strlen(sequence_name)%4);
|
||||
}
|
||||
else
|
||||
{
|
||||
return(chunk_size = 12 + 16 + 4*num_extra_data + 4);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
friend class Object_Animation_Sequence_Chunk;
|
||||
|
||||
|
||||
};
|
||||
|
||||
class Object_Animation_Sequence_Time_Chunk : public Chunk
|
||||
{
|
||||
public :
|
||||
Object_Animation_Sequence_Time_Chunk(Chunk_With_Children* parent)
|
||||
: Chunk (parent,"OBASEQTM") , sequence_time(0)
|
||||
{
|
||||
}
|
||||
Object_Animation_Sequence_Time_Chunk (Chunk_With_Children * parent,const char *, size_t);
|
||||
|
||||
unsigned int sequence_time; //in milliseconds
|
||||
|
||||
virtual void fill_data_block (char *);
|
||||
virtual size_t size_chunk (){ return chunk_size=16;}
|
||||
|
||||
private:
|
||||
|
||||
friend class Object_Animation_Sequence_Chunk;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
class Object_Animation_Sequence_Speed_Chunk : public Chunk
|
||||
{
|
||||
public :
|
||||
Object_Animation_Sequence_Speed_Chunk(Chunk_With_Children* parent)
|
||||
: Chunk (parent,"OBASEQSP") , sequence_speed(0) ,angle(0),spare(0)
|
||||
{
|
||||
}
|
||||
Object_Animation_Sequence_Speed_Chunk (Chunk_With_Children * parent,const char *, size_t);
|
||||
|
||||
int sequence_speed; //in mm/second
|
||||
int angle; //in degrees (mainly for tools use)
|
||||
int spare;
|
||||
|
||||
virtual void fill_data_block (char *);
|
||||
virtual size_t size_chunk (){ return chunk_size=24;}
|
||||
|
||||
private:
|
||||
|
||||
friend class Object_Animation_Sequence_Chunk;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#define MummySequenceFlag_UpperSequence 0x00000001
|
||||
#define MummySequenceFlag_LowerSequence 0x00000002
|
||||
#define SequenceFlag_Loops 0x00000004
|
||||
#define SequenceFlag_NoLoop 0x00000008
|
||||
#define SequenceFlag_NoInterpolation 0x00000010
|
||||
#define SequenceFlag_HalfFrameRate 0x00000020
|
||||
|
||||
class Object_Animation_Sequence_Flags_Chunk : public Chunk
|
||||
{
|
||||
public :
|
||||
Object_Animation_Sequence_Flags_Chunk(Chunk_With_Children* parent,int _flags)
|
||||
: Chunk (parent,"OBASEQFL") , flags(_flags)
|
||||
{
|
||||
}
|
||||
Object_Animation_Sequence_Flags_Chunk (Chunk_With_Children * parent,const char *, size_t);
|
||||
|
||||
int flags;
|
||||
|
||||
virtual void fill_data_block (char *);
|
||||
virtual size_t size_chunk (){ return chunk_size=16;}
|
||||
|
||||
};
|
||||
|
||||
|
||||
struct Object_Animation_Frame
|
||||
{
|
||||
ChunkQuat orientation;
|
||||
ChunkVectorInt transform;
|
||||
signed long at_frame_no; //frame start time (0-65535)
|
||||
int flags;
|
||||
|
||||
int get_sound_index(){return ((flags & HierarchyFrame_SoundIndexMask )>>24);}
|
||||
|
||||
};
|
||||
|
||||
struct Object_Animation_Sequence
|
||||
{
|
||||
~Object_Animation_Sequence(){delete [] frames;}
|
||||
|
||||
unsigned long num_frames;
|
||||
signed long sequence_number;
|
||||
signed long sub_sequence_number;
|
||||
unsigned int sequence_time; //in milliseconds
|
||||
Object_Animation_Frame* frames;
|
||||
};
|
||||
|
||||
#define Get_Object_Animation_All_Sequence_Chunk(parent) (Object_Animation_All_Sequence_Chunk*)(parent)->lookup_single_child("OBANALLS")
|
||||
|
||||
//a more compact version of the sequence and frame data
|
||||
//this format isn't recognized by any of the tools however.
|
||||
class Object_Animation_All_Sequence_Chunk : public Chunk
|
||||
{
|
||||
public:
|
||||
|
||||
Object_Animation_All_Sequence_Chunk (Chunk_With_Children * parent);
|
||||
Object_Animation_All_Sequence_Chunk (Chunk_With_Children * const parent,const char *, const size_t);
|
||||
~Object_Animation_All_Sequence_Chunk () {delete [] sequences;}
|
||||
|
||||
virtual void fill_data_block (char *);
|
||||
virtual size_t size_chunk ();
|
||||
|
||||
int num_sequences;
|
||||
Object_Animation_Sequence* sequences;
|
||||
|
||||
};
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue