diff options
Diffstat (limited to '3dc/win95/animobs.hpp')
| -rw-r--r-- | 3dc/win95/animobs.hpp | 286 |
1 files changed, 0 insertions, 286 deletions
diff --git a/3dc/win95/animobs.hpp b/3dc/win95/animobs.hpp deleted file mode 100644 index 0cdb9f8..0000000 --- a/3dc/win95/animobs.hpp +++ /dev/null @@ -1,286 +0,0 @@ -#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
\ No newline at end of file |
