Alphabetical Class Index  Class Hierarchy   File Members   Compound Members   File List  

HConstantFrameRate.h
Go to the documentation of this file.
1 // Copyright (c) 1998-2014 by Tech Soft 3D, Inc.
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:
282  HFrLodClamp() : HConstFRSimpType() { m_bSegmentSwitch = false; }
287  HFrLodClamp(int min, int max) : HConstFRSimpType(min,max) {}
288 
289  void Reset(HConstantFrameRate *pCfr);
290  virtual ~HFrLodClamp() {}
291 
300  void Set(HConstantFrameRate *pCfr, int SimpLevel);
309  static HConstFRSimpType * Create(int min, int max) {return new HFrLodClamp(min, max); };
310  void SetSegmentSwitch(bool ssl) { m_bSegmentSwitch = ssl; }
311  bool m_bSegmentSwitch;
312 
313 
314 };
315 
320 class MVO_API HFrLodThreshold : public HConstFRSimpType
321 {
322 public:
325 
330  HFrLodThreshold(int min, int max) : HConstFRSimpType(min,max) {}
331 
332  virtual ~HFrLodThreshold() {}
333 
340  void Set(HConstantFrameRate *pCfr, int SimpLevel);
349  static HConstFRSimpType * Create(int min, int max) {return new HFrLodThreshold(min, max); };
350 
351 };
352 
353 
358 class MVO_API HFrSolidBBox : public HConstFRSimpType
359 {
360 public:
367  HFrSolidBBox(int min, int max) : HConstFRSimpType(min,max) {}
368 
369  virtual ~HFrSolidBBox() {}
370 
377  void Set(HConstantFrameRate *pCfr, int SimpLevel);
380 
382  static void RegisterCallbacks();
389  static HConstFRSimpType * Create(int min, int max) {return new HFrSolidBBox(min, max); };
390 
391 private:
392  static void draw_solid_bbx_tree(HIC_Rendition *rendition, HIC_Segment_Info * geo3);
393  static void draw_solid_bbx(HIC_Rendition *rendition, HIC_Segment_Info * geo3);
394 
395 };
396 
401 class MVO_API HFrWireframeBBox : public HConstFRSimpType
402 {
403 public:
406 
411  HFrWireframeBBox(int min, int max) : HConstFRSimpType(min,max) {}
412 
413  virtual ~HFrWireframeBBox() {}
414 
421  void Set(HConstantFrameRate *pCfr, int SimpLevel);
424 
426  static void RegisterCallbacks();
427 
428 
435  static HConstFRSimpType * Create(int min, int max) {return new HFrWireframeBBox(min, max); };
436 private:
437  static void draw_wireframe_bbx(HIC_Rendition *rendition,HIC_Segment_Info * geo3);
438 
439 };
440 
446 class MVO_API HFrWireframe : public HConstFRSimpType
447 {
448 public:
449 
452 
457  HFrWireframe(int min, int max) : HConstFRSimpType(min,max) {}
458 
459  virtual ~HFrWireframe() {}
460 
468  void Set(HConstantFrameRate *pCfr, int SimpLevel);
469 
472 
479  static HConstFRSimpType * Create(int min, int max) {return new HFrWireframe(min, max); };
480 
481 };
482 
483 
485 
490 class MVO_API HConstantFrameRate
491 {
492  friend class HConstFRSimpType;
493  friend class HFrNoSimp;
494 public:
500  virtual ~HConstantFrameRate();
501 
502  HBaseView* GetView() { return m_pHView; }
509  void UpdateLevel(int SimpLevel, int SimpListPos);
510 
511 protected:
519 
525 
526  bool m_pOwnsList;
527 
528 
547  DetailChangeMode m_DetailIncOnIdleMode;
552 
553  float m_DeadZone;
554  int m_lastupdown;
559 
564 
570  void SetHoopsSimplificationOptions(int SimpLevel, int SimpListPos);
571 
578  void AdjustListPointers(int &SimpLevel, int &SimpListPos);
579 
580 
585  void AdjustDetail(float FrameRate);
586 
587 
591  void StartTimer();
592 
596  void StopTimer();
597 
598  bool IsLowestDetail();
599  void ChangeDetail(int change, int *SimpLevel = 0, int *SimpListPos = 0);
600 
601 
602 
603 public:
604 
618  bool GetMode(HConstFRSimpType ***sd = 0L ,float *target_framerate = 0L, int *length = 0L);
619 
629  void Init(float target_framerate=20.0, HConstFRSimpType **sd = 0, int length = 0, float deadzone =3.0);
630 
633  void Shutdown();
634 
635 
636  bool GetActive() {return m_bConstFRActive;}
643  void Watch();
644 
645 
652  void Start();
653 
658  void Stop();
659 
665  void IncreaseDetailTemp();
666 
672  bool ViewpointHasChanged(bool update = true);
673 
678  void SetDetailIncMode (DetailChangeMode mode) {m_DetailIncMode=mode; m_SimplificationIncrease = mode;}
679  void SetDetailIncOnIdleMode (DetailChangeMode mode) {m_DetailIncOnIdleMode=mode; m_SimplificationIncreaseOnIdle = mode;}
680 
683  DetailChangeMode GetDetailIncMode () {return m_DetailIncMode; }
684 
689  void SetDetailDecMode (DetailChangeMode mode) {m_DetailDecMode=mode; m_SimplificationDecrease = mode;}
692  DetailChangeMode GetDetailDecMode () {return m_DetailDecMode; }
695  void ResetListPointers() { m_SimpLevel=0; m_SimpListPos = 0; }
696 
698  float GetTargetFrameRate() { return m_TargetFrameRate; }
702  void SetTargetFrameRate( float framerate ) { m_TargetFrameRate = framerate;}
707  void SetDeadZone( float deadzone ) { m_DeadZone = deadzone;}
711  void SetEmergencyDetailDecrease( bool detaildecrease ) { m_bEmergencyDecrease = detaildecrease;}
716  void SetActivityType(HActivityType at) { m_ActivityType = at; }
717 
720  HActivityType GetActivityType() { return m_ActivityType;}
721  int GetSimpLevel() { return m_SimpLevel;}
727  void AdjustLodOptions();
729  bool GetDetailIncreaseState() { return m_bIncreaseDetailTemp; }
734  void SetDetailLevel ( int listpos, int simplevel) { m_SimpListPos = listpos; m_SimpLevel = simplevel; }
735 
740  HConstFRSimpType * GetSimpType(ConstFRType stype);
744  void SetSimpLevel(int simplevel) { m_SimpLevel = simplevel; }
745 
748  void AdjustDefaultDetailLevelToModel();
749 
757  static bool Tick(float request_time, float actual_time, void * user_data);
758 
759  void SetDisableIncreaseTemp(bool it) { m_bDisableIncreaseTemp = it; }
760  void InitiateDelay() { m_bOneDelay = true; }
761  int GetDetailLevelNum();
762  int GetTotalDetailLevelNum();
763 
764  void SetWatchActivity(bool wa) { m_bWatchActivity = wa; }
765  void MajorDetailDecrease();
766  void MajorDetailIncrease();
767 
768 
769 private:
770  bool m_bFullDetailTemp;
771  bool m_bWatchActivity;
772  bool m_bIncreaseDetailTemp;
773  float m_oldPos[11];
774  HTClient * m_pUpdateTimerClient;
775  bool m_bDisableIncreaseTemp;
776  bool m_bOneDelay;
777  float m_OneDelayStart;
778  bool m_bAdjustNextTime;
779  float m_AdjustTime;
780  bool m_bIncrease;
781  int m_CounterThreshold;
782  int m_TempDetailIncrement;
783  bool m_bFirstIncrease;
784 
785 
786  };
787 
788 
789 #ifdef H_PACK_8
790 #pragma pack(pop)
791 #endif
792 
793 #endif
794 
795 
796 
797 
798 
799 
800 
801 
DetailChangeMode
Definition: HConstantFrameRate.h:62
Indicates that a cutting plane is being manipulated.
Definition: HConstantFrameRate.h:54
float m_TargetFrameRate
Definition: HConstantFrameRate.h:518
static HConstFRSimpType ** CreateList(int size)
Definition: HConstantFrameRate.h:131
HFrWireframe(int min, int max)
Definition: HConstantFrameRate.h:457
The HConstantFrameRate class provides support for maintaining a constant framerate when rendering...
Definition: HConstantFrameRate.h:490
HFrLodClamp(int min, int max)
Definition: HConstantFrameRate.h:287
Definition: HConstantFrameRate.h:446
HConstFRSimpType(int min, int max)
Definition: HConstantFrameRate.h:96
HFrWireframeBBox()
Definition: HConstantFrameRate.h:405
virtual void Set(HConstantFrameRate *pCfr, int SimpLevel)=0
void SetDetailIncMode(DetailChangeMode mode)
Definition: HConstantFrameRate.h:678
DetailChangeMode m_SimplificationIncreaseOnIdle
Definition: HConstantFrameRate.h:539
void SetActivityType(HActivityType at)
Definition: HConstantFrameRate.h:716
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:479
HActivityType GetActivityType()
Definition: HConstantFrameRate.h:720
Definition: HConstantFrameRate.h:320
int GetMinSimpLevel()
Definition: HConstantFrameRate.h:126
HFrNoSimpAA(int min, int max)
Definition: HConstantFrameRate.h:202
void SetDetailDecMode(DetailChangeMode mode)
Definition: HConstantFrameRate.h:689
HFrNoSimp(int min, int max)
Definition: HConstantFrameRate.h:247
DetailChangeMode GetDetailDecMode()
Definition: HConstantFrameRate.h:692
void SetDeadZone(float deadzone)
Definition: HConstantFrameRate.h:707
Definition: HConstantFrameRate.h:238
void SetSimpLevel(int simplevel)
Definition: HConstantFrameRate.h:744
No simplification. The scene is antialiased.
Definition: HConstantFrameRate.h:37
HFrWireframeBBox(int min, int max)
Definition: HConstantFrameRate.h:411
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:553
virtual void Update(HConstantFrameRate *pCfr, int SimpLevel)
int m_FrameRateCounter
Definition: HConstantFrameRate.h:541
Definition: HConstantFrameRate.h:278
Definition: HTManager.h:157
int m_SimpLevel
Definition: HConstantFrameRate.h:529
ConstFRType GetType()
Definition: HConstantFrameRate.h:302
Indicates no activity that would affect the constant framerate logic.
Definition: HConstantFrameRate.h:52
HFrLodClamp()
Definition: HConstantFrameRate.h:282
HFrWireframe()
Definition: HConstantFrameRate.h:451
int GetMaxSimpLevel()
Definition: HConstantFrameRate.h:128
DetailChangeMode m_SimplificationIncrease
Definition: HConstantFrameRate.h:538
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:423
ConstFRType
Definition: HConstantFrameRate.h:34
ConstFRType GetType()
Definition: HConstantFrameRate.h:342
Definition: HConstantFrameRate.h:358
HConstFRSimpType ** m_pSimpList
Definition: HConstantFrameRate.h:524
Wireframe simplification type.
Definition: HConstantFrameRate.h:40
void SetDetailLevel(int listpos, int simplevel)
Definition: HConstantFrameRate.h:734
int m_SimpListPos
Definition: HConstantFrameRate.h:530
DetailChangeMode m_SimplificationDecrease
Definition: HConstantFrameRate.h:537
LOD clamp type. All objects share the same detail level.
Definition: HConstantFrameRate.h:41
HFrSolidBBox()
Definition: HConstantFrameRate.h:362
Definition: HConstantFrameRate.h:401
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:532
ConstFRType GetType()
Definition: HConstantFrameRate.h:175
void SetEmergencyDetailDecrease(bool detaildecrease)
Definition: HConstantFrameRate.h:711
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:268
HActivityType m_ActivityType
Definition: HConstantFrameRate.h:563
HFrLodThreshold()
Definition: HConstantFrameRate.h:324
DetailChangeMode m_DetailIncMode
Definition: HConstantFrameRate.h:546
bool GetActive()
Definition: HConstantFrameRate.h:636
No simplification.
Definition: HConstantFrameRate.h:36
void ResetListPointers()
Definition: HConstantFrameRate.h:695
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:683
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:435
int GetSimpLevel()
Definition: HConstantFrameRate.h:721
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:182
HFrLodThreshold(int min, int max)
Definition: HConstantFrameRate.h:330
Indicates movement activity in the scene.
Definition: HConstantFrameRate.h:53
DetailChangeMode m_DetailDecMode
Definition: HConstantFrameRate.h:551
bool m_bEmergencyDecrease
Definition: HConstantFrameRate.h:558
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:389
ConstFRType GetType()
Definition: HConstantFrameRate.h:215
Definition: HConstantFrameRate.h:141
ConstFRType GetType()
Definition: HConstantFrameRate.h:379
float GetTargetFrameRate()
Definition: HConstantFrameRate.h:698
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:349
ConstFRType GetType()
Definition: HConstantFrameRate.h:471
HBaseView * GetView()
Definition: HConstantFrameRate.h:502
HFrExtent()
Definition: HConstantFrameRate.h:145
HFrSolidBBox(int min, int max)
Definition: HConstantFrameRate.h:367
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:230
void SetTargetFrameRate(float framerate)
Definition: HConstantFrameRate.h:702
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:513
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:309
No detail level change.
Definition: HConstantFrameRate.h:64
HBaseView * m_pHView
Definition: HConstantFrameRate.h:512
Maximum extent simplification type.
Definition: HConstantFrameRate.h:44