HConstantFrameRate.h
Go to the documentation of this file.
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 // HConstantFrameRate.h: interface for the HConstantFrameRate class.
11 //
13 
18 #ifndef HCONSTANTFRAMERATE_H
19 #define HCONSTANTFRAMERATE_H
20 
21 #ifdef H_PACK_8
22 #pragma pack(push)
23 #pragma pack(8)
24 #endif
25 
26 #include "HTools.h"
27 #include "hic_types.h"
28 
29 class HTClient;
30 
35 {
45 };
46 
51 {
56 };
57 
58 
63 {
67 };
68 
69 
70 class HConstantFrameRate;
71 
72 class HBaseView;
73 
79 class MVO_API HConstFRSimpType
80 {
81 public:
87  {
88  m_SimpLevelMin=0;
89  m_SimpLevelMax=0;
90  }
91 
96  HConstFRSimpType(int min, int max)
97  {
98  m_SimpLevelMin=min;
99  m_SimpLevelMax=max;
100  }
101  virtual ~HConstFRSimpType() {}
102 
103  virtual void Reset(HConstantFrameRate *pCfr) {
104  UNREFERENCED(pCfr);
105  }
106 
107 
114  virtual void Set(HConstantFrameRate *pCfr, int SimpLevel) = 0;
121  virtual void Update(HConstantFrameRate *pCfr, int SimpLevel);
122 
124  virtual ConstFRType GetType() = 0;
126  int GetMinSimpLevel() { return m_SimpLevelMin; };
128  int GetMaxSimpLevel() { return m_SimpLevelMax; };
129 
131  static HConstFRSimpType **CreateList(int size) { return new HConstFRSimpType *[size]; };
132 
133 };
134 
135 
141 class MVO_API HFrExtent : public HConstFRSimpType
142 {
143 public:
145  HFrExtent() : HConstFRSimpType() { m_Multiplier = 5; m_bUseLOD = false; }
146 
151  HFrExtent(int min, int max) : HConstFRSimpType(min,max) { m_Multiplier = 5; m_bUseLOD = false; }
152 
153  virtual ~HFrExtent() {}
159  void SetMultiplier(int mp) { m_Multiplier = mp; }
166  void Set(HConstantFrameRate *pCfr, int SimpLevel);
172  void SetUseLod(bool ul) { m_bUseLOD = ul; }
173  bool GetUseLod() const { return m_bUseLOD;}
182  static HConstFRSimpType * Create(int min, int max) {return new HFrExtent(min, max); };
183 
184 protected:
185  int m_Multiplier;
186  bool m_bUseLOD;
187 };
188 
192 class MVO_API HFrNoSimpAA : public HConstFRSimpType
193 {
194 public:
197 
202  HFrNoSimpAA(int min, int max) : HConstFRSimpType(min,max) {};
203 
204  virtual ~HFrNoSimpAA() {}
205 
213  void Set(HConstantFrameRate *pCfr, int SimpLevel);
222  void Update(HConstantFrameRate *pCfr, int SimpLevel);
223 
230  static HConstFRSimpType * Create(int min, int max) {return new HFrNoSimpAA(min, max); };
231 
232 };
233 
238 class MVO_API HFrNoSimp : public HConstFRSimpType
239 {
240 public:
247  HFrNoSimp(int min, int max) : HConstFRSimpType(min,max) {};
248 
249  virtual ~HFrNoSimp() {}
250 
257  void Set(HConstantFrameRate *pCfr, int SimpLevel);
260 
261 
268  static HConstFRSimpType * Create(int min, int max) {return new HFrNoSimp(min, max); };
269 
270 
271 };
272 
273 
278 class MVO_API HFrLodClamp : public HConstFRSimpType
279 {
280 public:
283  : HConstFRSimpType()
284  { m_bSegmentSwitch = false; }
285 
290  HFrLodClamp(int min, int max)
291  : HConstFRSimpType(min, max)
292  { m_bSegmentSwitch = false; }
293 
294  void Reset(HConstantFrameRate *pCfr);
295  virtual ~HFrLodClamp() {}
296 
305  void Set(HConstantFrameRate *pCfr, int SimpLevel);
314  static HConstFRSimpType * Create(int min, int max) {return new HFrLodClamp(min, max); };
315  void SetSegmentSwitch(bool ssl) { m_bSegmentSwitch = ssl; }
316  bool m_bSegmentSwitch;
317 
318 
319 };
320 
325 class MVO_API HFrLodThreshold : public HConstFRSimpType
326 {
327 public:
330 
335  HFrLodThreshold(int min, int max) : HConstFRSimpType(min,max) {}
336 
337  virtual ~HFrLodThreshold() {}
338 
345  void Set(HConstantFrameRate *pCfr, int SimpLevel);
354  static HConstFRSimpType * Create(int min, int max) {return new HFrLodThreshold(min, max); };
355 
356 };
357 
358 
363 class MVO_API HFrSolidBBox : public HConstFRSimpType
364 {
365 public:
372  HFrSolidBBox(int min, int max) : HConstFRSimpType(min,max) {}
373 
374  virtual ~HFrSolidBBox() {}
375 
382  void Set(HConstantFrameRate *pCfr, int SimpLevel);
385 
387  static void RegisterCallbacks();
394  static HConstFRSimpType * Create(int min, int max) {return new HFrSolidBBox(min, max); };
395 
396 private:
397  static void draw_solid_bbx_tree(HIC_Rendition *rendition, HIC_Segment_Info * geo3);
398  static void draw_solid_bbx(HIC_Rendition *rendition, HIC_Segment_Info * geo3);
399 
400 };
401 
406 class MVO_API HFrWireframeBBox : public HConstFRSimpType
407 {
408 public:
411 
416  HFrWireframeBBox(int min, int max) : HConstFRSimpType(min,max) {}
417 
418  virtual ~HFrWireframeBBox() {}
419 
426  void Set(HConstantFrameRate *pCfr, int SimpLevel);
429 
431  static void RegisterCallbacks();
432 
433 
440  static HConstFRSimpType * Create(int min, int max) {return new HFrWireframeBBox(min, max); };
441 private:
442  static void draw_wireframe_bbx(HIC_Rendition *rendition,HIC_Segment_Info * geo3);
443 
444 };
445 
451 class MVO_API HFrWireframe : public HConstFRSimpType
452 {
453 public:
454 
457 
462  HFrWireframe(int min, int max) : HConstFRSimpType(min,max) {}
463 
464  virtual ~HFrWireframe() {}
465 
473  void Set(HConstantFrameRate *pCfr, int SimpLevel);
474 
477 
484  static HConstFRSimpType * Create(int min, int max) {return new HFrWireframe(min, max); };
485 
486 };
487 
488 
490 
495 class MVO_API HConstantFrameRate
496 {
497  friend class HConstFRSimpType;
498  friend class HFrNoSimp;
499 public:
505  virtual ~HConstantFrameRate();
506 
507  HBaseView* GetView() { return m_pHView; }
514  void UpdateLevel(int SimpLevel, int SimpListPos);
515 
516 protected:
524 
530 
531  bool m_pOwnsList;
532 
533 
552  DetailChangeMode m_DetailIncOnIdleMode;
557 
558  float m_DeadZone;
559  int m_lastupdown;
564 
569 
575  void SetHoopsSimplificationOptions(int SimpLevel, int SimpListPos);
576 
583  void AdjustListPointers(int &SimpLevel, int &SimpListPos);
584 
585 
590  void AdjustDetail(float FrameRate);
591 
592 
596  void StartTimer();
597 
601  void StopTimer();
602 
603  bool IsLowestDetail();
604  void ChangeDetail(int change, int *SimpLevel = 0, int *SimpListPos = 0);
605 
606 
607 
608 public:
609 
623  bool GetMode(HConstFRSimpType ***sd = 0L ,float *target_framerate = 0L, int *length = 0L);
624 
634  void Init(float target_framerate=20.0, HConstFRSimpType **sd = 0, int length = 0, float deadzone =3.0);
635 
638  void Shutdown();
639 
640 
641  bool GetActive() {return m_bConstFRActive;}
648  void Watch();
649 
650 
657  void Start();
658 
663  void Stop();
664 
670  void IncreaseDetailTemp();
671 
677  bool ViewpointHasChanged(bool update = true);
678 
683  void SetDetailIncMode (DetailChangeMode mode) {m_DetailIncMode=mode; m_SimplificationIncrease = mode;}
684  void SetDetailIncOnIdleMode (DetailChangeMode mode) {m_DetailIncOnIdleMode=mode; m_SimplificationIncreaseOnIdle = mode;}
685 
688  DetailChangeMode GetDetailIncMode () {return m_DetailIncMode; }
689 
694  void SetDetailDecMode (DetailChangeMode mode) {m_DetailDecMode=mode; m_SimplificationDecrease = mode;}
697  DetailChangeMode GetDetailDecMode () {return m_DetailDecMode; }
700  void ResetListPointers() { m_SimpLevel=0; m_SimpListPos = 0; }
701 
703  float GetTargetFrameRate() { return m_TargetFrameRate; }
707  void SetTargetFrameRate( float framerate ) { m_TargetFrameRate = framerate;}
712  void SetDeadZone( float deadzone ) { m_DeadZone = deadzone;}
716  void SetEmergencyDetailDecrease( bool detaildecrease ) { m_bEmergencyDecrease = detaildecrease;}
721  void SetActivityType(HActivityType at) { m_ActivityType = at; }
722 
725  HActivityType GetActivityType() { return m_ActivityType;}
726  int GetSimpLevel() { return m_SimpLevel;}
732  void AdjustLodOptions();
734  bool GetDetailIncreaseState() { return m_bIncreaseDetailTemp; }
739  void SetDetailLevel ( int listpos, int simplevel) { m_SimpListPos = listpos; m_SimpLevel = simplevel; }
740 
745  HConstFRSimpType * GetSimpType(ConstFRType stype);
749  void SetSimpLevel(int simplevel) { m_SimpLevel = simplevel; }
750 
753  void AdjustDefaultDetailLevelToModel();
754 
762  static bool Tick(float request_time, float actual_time, void * user_data);
763 
764  void SetDisableIncreaseTemp(bool it) { m_bDisableIncreaseTemp = it; }
765  void InitiateDelay() { m_bOneDelay = true; }
766  int GetDetailLevelNum();
767  int GetTotalDetailLevelNum();
768 
769  void SetWatchActivity(bool wa) { m_bWatchActivity = wa; }
770  void MajorDetailDecrease();
771  void MajorDetailIncrease();
772 
773 
774 private:
775  bool m_bFullDetailTemp;
776  bool m_bWatchActivity;
777  bool m_bIncreaseDetailTemp;
778  float m_oldPos[11];
779  HTClient * m_pUpdateTimerClient;
780  bool m_bDisableIncreaseTemp;
781  bool m_bOneDelay;
782  float m_OneDelayStart;
783  bool m_bAdjustNextTime;
784  float m_AdjustTime;
785  bool m_bIncrease;
786  int m_CounterThreshold;
787  int m_TempDetailIncrement;
788  bool m_bFirstIncrease;
789 
790 
791  };
792 
793 
794 #ifdef H_PACK_8
795 #pragma pack(pop)
796 #endif
797 
798 #endif
799 
800 
801 
802 
803 
804 
805 
806 
DetailChangeMode
Definition: HConstantFrameRate.h:62
Indicates that a cutting plane is being manipulated.
Definition: HConstantFrameRate.h:54
float m_TargetFrameRate
Definition: HConstantFrameRate.h:523
static HConstFRSimpType ** CreateList(int size)
Definition: HConstantFrameRate.h:131
HFrWireframe(int min, int max)
Definition: HConstantFrameRate.h:462
The HConstantFrameRate class provides support for maintaining a constant framerate when rendering...
Definition: HConstantFrameRate.h:495
HFrLodClamp(int min, int max)
Definition: HConstantFrameRate.h:290
Definition: HConstantFrameRate.h:451
HConstFRSimpType(int min, int max)
Definition: HConstantFrameRate.h:96
HFrWireframeBBox()
Definition: HConstantFrameRate.h:410
virtual void Set(HConstantFrameRate *pCfr, int SimpLevel)=0
void SetDetailIncMode(DetailChangeMode mode)
Definition: HConstantFrameRate.h:683
DetailChangeMode m_SimplificationIncreaseOnIdle
Definition: HConstantFrameRate.h:544
void SetActivityType(HActivityType at)
Definition: HConstantFrameRate.h:721
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:484
HActivityType GetActivityType()
Definition: HConstantFrameRate.h:725
Definition: HConstantFrameRate.h:325
int GetMinSimpLevel()
Definition: HConstantFrameRate.h:126
HFrNoSimpAA(int min, int max)
Definition: HConstantFrameRate.h:202
void SetDetailDecMode(DetailChangeMode mode)
Definition: HConstantFrameRate.h:694
HFrNoSimp(int min, int max)
Definition: HConstantFrameRate.h:247
DetailChangeMode GetDetailDecMode()
Definition: HConstantFrameRate.h:697
void SetDeadZone(float deadzone)
Definition: HConstantFrameRate.h:712
Definition: HConstantFrameRate.h:238
void SetSimpLevel(int simplevel)
Definition: HConstantFrameRate.h:749
No simplification. The scene is antialiased.
Definition: HConstantFrameRate.h:37
HFrWireframeBBox(int min, int max)
Definition: HConstantFrameRate.h:416
HFrExtent(int min, int max)
Definition: HConstantFrameRate.h:151
int m_SimpLevelMax
Definition: HConstantFrameRate.h:83
HFrNoSimp()
Definition: HConstantFrameRate.h:242
float m_DeadZone
Definition: HConstantFrameRate.h:558
virtual void Update(HConstantFrameRate *pCfr, int SimpLevel)
int m_FrameRateCounter
Definition: HConstantFrameRate.h:546
Definition: HConstantFrameRate.h:278
Definition: HTManager.h:157
int m_SimpLevel
Definition: HConstantFrameRate.h:534
ConstFRType GetType()
Definition: HConstantFrameRate.h:307
Indicates no activity that would affect the constant framerate logic.
Definition: HConstantFrameRate.h:52
HFrLodClamp()
Definition: HConstantFrameRate.h:282
HFrWireframe()
Definition: HConstantFrameRate.h:456
int GetMaxSimpLevel()
Definition: HConstantFrameRate.h:128
DetailChangeMode m_SimplificationIncrease
Definition: HConstantFrameRate.h:543
void SetUseLod(bool ul)
Definition: HConstantFrameRate.h:172
LOD threshold type. LOD level for each individual object based on size on screen. ...
Definition: HConstantFrameRate.h:42
Wireframe bounding box similfication type.
Definition: HConstantFrameRate.h:38
Solid bounding box simplification type.
Definition: HConstantFrameRate.h:39
ConstFRType GetType()
Definition: HConstantFrameRate.h:428
ConstFRType
Definition: HConstantFrameRate.h:34
ConstFRType GetType()
Definition: HConstantFrameRate.h:347
Definition: HConstantFrameRate.h:363
HConstFRSimpType ** m_pSimpList
Definition: HConstantFrameRate.h:529
Wireframe simplification type.
Definition: HConstantFrameRate.h:40
void SetDetailLevel(int listpos, int simplevel)
Definition: HConstantFrameRate.h:739
int m_SimpListPos
Definition: HConstantFrameRate.h:535
DetailChangeMode m_SimplificationDecrease
Definition: HConstantFrameRate.h:542
LOD clamp type. All objects share the same detail level.
Definition: HConstantFrameRate.h:41
HFrSolidBBox()
Definition: HConstantFrameRate.h:367
Definition: HConstantFrameRate.h:406
HConstFRSimpType()
Definition: HConstantFrameRate.h:86
The HBaseView class defines and manages a view of model information.
Definition: HBaseView.h:332
int m_SimpListLength
Definition: HConstantFrameRate.h:537
ConstFRType GetType()
Definition: HConstantFrameRate.h:175
void SetEmergencyDetailDecrease(bool detaildecrease)
Definition: HConstantFrameRate.h:716
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:268
HActivityType m_ActivityType
Definition: HConstantFrameRate.h:568
HFrLodThreshold()
Definition: HConstantFrameRate.h:329
DetailChangeMode m_DetailIncMode
Definition: HConstantFrameRate.h:551
bool GetActive()
Definition: HConstantFrameRate.h:641
No simplification.
Definition: HConstantFrameRate.h:36
void ResetListPointers()
Definition: HConstantFrameRate.h:700
Indicates that some activity is occuring that isn't movement or cutting plane related.
Definition: HConstantFrameRate.h:55
int m_SimpLevelMin
Definition: HConstantFrameRate.h:82
Definition: HConstantFrameRate.h:79
DetailChangeMode GetDetailIncMode()
Definition: HConstantFrameRate.h:688
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:440
int GetSimpLevel()
Definition: HConstantFrameRate.h:726
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:182
HFrLodThreshold(int min, int max)
Definition: HConstantFrameRate.h:335
Indicates movement activity in the scene.
Definition: HConstantFrameRate.h:53
DetailChangeMode m_DetailDecMode
Definition: HConstantFrameRate.h:556
bool m_bEmergencyDecrease
Definition: HConstantFrameRate.h:563
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:394
ConstFRType GetType()
Definition: HConstantFrameRate.h:215
Definition: HConstantFrameRate.h:141
ConstFRType GetType()
Definition: HConstantFrameRate.h:384
float GetTargetFrameRate()
Definition: HConstantFrameRate.h:703
Only one detail change is allowed.
Definition: HConstantFrameRate.h:65
HFrNoSimpAA()
Definition: HConstantFrameRate.h:196
ConstFRType GetType()
Definition: HConstantFrameRate.h:259
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:354
ConstFRType GetType()
Definition: HConstantFrameRate.h:476
HBaseView * GetView()
Definition: HConstantFrameRate.h:507
HFrExtent()
Definition: HConstantFrameRate.h:145
HFrSolidBBox(int min, int max)
Definition: HConstantFrameRate.h:372
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:230
void SetTargetFrameRate(float framerate)
Definition: HConstantFrameRate.h:707
void SetMultiplier(int mp)
Definition: HConstantFrameRate.h:159
Detail change is allowed based on target framerate.
Definition: HConstantFrameRate.h:66
bool m_bConstFRActive
Definition: HConstantFrameRate.h:518
HActivityType
Definition: HConstantFrameRate.h:50
Placeholder type.
Definition: HConstantFrameRate.h:43
Definition: HConstantFrameRate.h:192
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:314
No detail level change.
Definition: HConstantFrameRate.h:64
HBaseView * m_pHView
Definition: HConstantFrameRate.h:517
Maximum extent simplification type.
Definition: HConstantFrameRate.h:44