Introduction

Getting Started

Programming Guides

API Reference

Additional Resources

HW3DStream.h
1 // Copyright (c) Tech Soft 3D
2 //
3 // The information contained herein is confidential and proprietary to Tech Soft 3D, Inc.,
4 // and considered a trade secret as defined under civil and criminal statutes.
5 // Tech Soft 3D, Inc. shall pursue its civil and criminal remedies in the event of
6 // unauthorized use or misappropriation of its trade secrets. Use of this information
7 // by anyone other than authorized employees of Tech Soft 3D, Inc. is granted only under
8 // a written non-disclosure agreement, expressly prescribing the scope and manner of such use.
9 
10 #ifndef _HDWFSTREAM_H
11 #define _HDWFSTREAM_H
12 
13 #include "hc.h"
14 #include "HStream.h"
15 
16 
17 class HW3DPoint
18 {
19 public:
20  float x;
21  float y;
22  float z;
23 
25  HW3DPoint() : x(0), y(0), z(0) {}
27  HW3DPoint(float X, float Y, float Z=0.0f) : x(X), y(Y), z(Z) {}
29  HW3DPoint(HW3DPoint const *p) { x = p->x; y = p->y; z = p->z;};
31  HW3DPoint(const HW3DPoint & p) { x = p.x; y = p.y; z = p.z; };
32 
34  void Set(float X,float Y,float Z = 0.0f) { x = X; y = Y; z = Z; };
36  void Set(HW3DPoint * p) { x = p->x; y = p->y; z = p->z; };
38  void Set(HW3DPoint const * p) { x = p->x; y = p->y; z = p->z; };
40  void Set(HW3DPoint & p) { x = p.x; y = p.y; z = p.z; };
42  void Set(const HW3DPoint & p) { x = p.x; y = p.y; z = p.z; };
43 };
44 
45 class HW3DCamera {
46 public:
47  bool is_valid;
51  float field_width;
52  float field_height;
53  char projection[128];
54 };
55 
56 class HW3DStream_Initial_View : public HTK_Camera
57 {
58 public:
59  HW3DStream_Initial_View(HW3DCamera * initial_view) : HTK_Camera(TKE_View), m_pInitialCamera(initial_view) {;}
60 
61  TK_Status Interpret(BStreamFileToolkit & /*tk*/, ID_Key /*key*/, int /*variant*/)
62  {
63  if(!m_pInitialCamera)
64  return TK_Normal;
65 
66  m_settings[0] = m_pInitialCamera->position.x;
67  m_settings[1] = m_pInitialCamera->position.y;
68  m_settings[2] = m_pInitialCamera->position.z;
69 
70  m_settings[3] = m_pInitialCamera->target.x;
71  m_settings[4] = m_pInitialCamera->target.y;
72  m_settings[5] = m_pInitialCamera->target.z;
73 
74  m_settings[6] = m_pInitialCamera->up_vector.x;
75  m_settings[7] = m_pInitialCamera->up_vector.y;
76  m_settings[8] = m_pInitialCamera->up_vector.z;
77 
78  m_settings[9] = m_pInitialCamera->field_width;
79  m_settings[10] = m_pInitialCamera->field_height;
80 
81  if(m_pInitialCamera->projection[0] == 'p')
82  m_projection = TKO_Camera_Perspective;
83  else
84  m_projection = TKO_Camera_Orthographic;
85 
86  SetView("default");
87 
88  return TK_Normal;
89  }
90 
91 
92  TK_Status Execute(BStreamFileToolkit & /*tk*/) alter
93  {
94  TK_Status status=TK_Normal;
95 
96  if (!strcmp(GetView(),"default"))
97  {
98  m_pInitialCamera->is_valid = true;
99 
100  m_pInitialCamera->position.Set(m_settings[0],m_settings[1],m_settings[2]);
101  m_pInitialCamera->target.Set(m_settings[3],m_settings[4],m_settings[5]);
102  m_pInitialCamera->up_vector.Set(m_settings[6],m_settings[7],m_settings[8]);
103  m_pInitialCamera->field_width = m_settings[9];
104  m_pInitialCamera->field_height = m_settings[10];
105 
106  switch ((int) m_projection) {
107 
108  case TKO_Camera_Orthographic:
109  strcpy_s (m_pInitialCamera->projection, "orthographic");
110  break;
111 
112  case TKO_Camera_Perspective:
113  strcpy_s (m_pInitialCamera->projection, "perspective");
114  break;
115 
116  default:
117  strcpy_s (m_pInitialCamera->projection, "stretched");
118  break;
119  }
120 
121  }
122 
123  return (status);
124  };
125 
126 private:
127  HW3DCamera * m_pInitialCamera;
128 
129 };
130 #if 0
131 // Translate all the TKE_Image's to W3DE_Image
132 class HW3DStream_Image_Converter : public HTK_Image
133 {
134 private:
135  HW3DStream_Image_Converter(const HW3DStream_Image_Converter&);
136  HW3DStream_Image_Converter& operator=(const HW3DStream_Image_Converter&);
137 
138 public:
139 
140  HW3DStream_Image_Converter ()
141  {
142  m_opcode = W3DE_Image;
143  m_size[0] = m_size[1] = 0;
144  }
145 
146  ~HW3DStream_Image_Converter()
147  {
148  delete [] m_name;
149  }
150 
151  TK_Status Write (BStreamFileToolkit & tk) alter
152  {
153  TK_Status status = TK_Normal;
154 
155  switch (m_stage) {
156  case 0: {
157  if ((status = PutOpcode (tk)) != TK_Normal)
158  return status;
159  m_stage++;
160  }
161 
162  case 1: {
163 
164  if (m_name_length > 0) {
165  unsigned char byte = (unsigned char)m_name_length;
166  // need handling for string > 255 ?
167  if ((status = PutData (tk, byte)) != TK_Normal)
168  return status;
169  }
170  m_stage++;
171  }
172 
173  case 2: {
174  if (m_name_length > 0) {
175  if ((status = PutData (tk, m_name, m_name_length)) != TK_Normal)
176  return status;
177  }
178  m_stage++;
179  }
180  case 3:
181  {
182  if ((status = PutData(tk, m_size[0])) != TK_Normal)
183  return status;
184  if ((status = PutData(tk, m_size[1])) != TK_Normal)
185  return status;
186  if ((status = PutData(tk, 24)) != TK_Normal)
187  return status;
188  m_stage++;
189 
190  }
191 
192  case 4: {
193  if (Tagging (tk))
194  status = Tag (tk);
195 
196  m_stage = -1;
197  } break;
198 
199  default:
200  return tk.Error();
201  }
202 
203  return status;
204  }
205 };
206 #endif
207 
208 bool HW3D_Read_W3D_File(DWFInputStream * input_stream,
209  void * pModelSection,
210  HW3DCamera * ret_initial_camera,
211  bool importMetaData);
212 
213 
214 bool generate_object_definitions(std::map<HC_KEY, int> const & tk_map,
215  HC_KEY key,
216  void * arg1,
217  void * arg2
218  );
219 #define W3D_READ_BUFFER_SIZE 16*1024
220 
221 #endif // _HDWFSTREAM_H
222 
223 
HW3DPoint(HW3DPoint const *p)
Definition: HW3DStream.h:29
char projection[128]
projection type
Definition: HW3DStream.h:53
HW3DPoint(float X, float Y, float Z=0.0f)
Definition: HW3DStream.h:27
void Set(float X, float Y, float Z=0.0f)
Definition: HW3DStream.h:34
HW3DPoint position
position
Definition: HW3DStream.h:48
HW3DPoint()
Definition: HW3DStream.h:25
float field_height
field height
Definition: HW3DStream.h:52
Definition: HW3DStream.h:45
float y
The y-coordinate of a 3-dimensional point.
Definition: HW3DStream.h:21
void Set(const HW3DPoint &p)
Definition: HW3DStream.h:42
Definition: HW3DStream.h:56
Definition: HW3DStream.h:17
void Set(HW3DPoint &p)
Definition: HW3DStream.h:40
float x
The x-coordinate of a 3-dimensional point.
Definition: HW3DStream.h:20
bool is_valid
is data valid
Definition: HW3DStream.h:47
float z
The z-coordinate of a 3-dimensional point.
Definition: HW3DStream.h:22
float field_width
field width
Definition: HW3DStream.h:51
HW3DPoint up_vector
up_vector
Definition: HW3DStream.h:50
void Set(HW3DPoint const *p)
Definition: HW3DStream.h:38
HW3DPoint target
target
Definition: HW3DStream.h:49
void Set(HW3DPoint *p)
Definition: HW3DStream.h:36
HW3DPoint(const HW3DPoint &p)
Definition: HW3DStream.h:31