Alphabetical Class Index  Class Hierarchy   File Members   Compound Members   File List  

HConstantFrameRate.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2000 by Tech Soft 3D, LLC.
3 // The information contained herein is confidential and proprietary to
4 // Tech Soft 3D, LLC., and considered a trade secret as defined under
5 // civil and criminal statutes. Tech Soft 3D shall pursue its civil
6 // and criminal remedies in the event of unauthorized use or misappropriation
7 // of its trade secrets. Use of this information by anyone other than
8 // authorized employees of Tech Soft 3D, LLC. is granted only under a
9 // written non-disclosure agreement, expressly prescribing the scope and
10 // manner of such use.
11 //
12 // $Id: 4fca1593ab01e3ad75a7d3920ed3b3bac50c8496 $
13 //
14 
15 // HConstantFrameRate.h: interface for the HConstantFrameRate class.
16 //
18 
23 #ifndef HCONSTANTFRAMERATE_H
24 #define HCONSTANTFRAMERATE_H
25 
26 #ifdef H_PACK_8
27 #pragma pack(push)
28 #pragma pack(8)
29 #endif
30 
31 #include "HTools.h"
32 #include "hic_types.h"
33 
34 class HTClient;
35 
40 {
50 };
51 
56 {
61 };
62 
63 
68 {
72 };
73 
74 
75 class HConstantFrameRate;
76 
77 class HBaseView;
78 
84 class MVO_API HConstFRSimpType
85 {
86 public:
92  {
93  m_SimpLevelMin=0;
94  m_SimpLevelMax=0;
95  }
96 
101  HConstFRSimpType(int min, int max)
102  {
103  m_SimpLevelMin=min;
104  m_SimpLevelMax=max;
105  }
106  virtual ~HConstFRSimpType() {}
107 
108  virtual void Reset(HConstantFrameRate *pCfr) {}
109 
110 
117  virtual void Set(HConstantFrameRate *pCfr, int SimpLevel) = 0;
124  virtual void Update(HConstantFrameRate *pCfr, int SimpLevel);
125 
127  virtual ConstFRType GetType() = 0;
129  int GetMinSimpLevel() { return m_SimpLevelMin; };
131  int GetMaxSimpLevel() { return m_SimpLevelMax; };
132 
134  static HConstFRSimpType **CreateList(int size) { return (new HConstFRSimpType *[size]); };
135 
136 };
137 
138 
144 class MVO_API HFrExtent : public HConstFRSimpType
145 {
146 public:
148  HFrExtent() : HConstFRSimpType() { m_Multiplier = 5; m_bUseLOD = false; }
149 
154  HFrExtent(int min, int max) : HConstFRSimpType(min,max) { m_Multiplier = 5; m_bUseLOD = false; }
155 
156  virtual ~HFrExtent() {}
162  void SetMultiplier(int mp) { m_Multiplier = mp; }
169  void Set(HConstantFrameRate *pCfr, int SimpLevel);
175  void SetUseLod(bool ul) { m_bUseLOD = ul; }
176  bool GetUseLod() const { return m_bUseLOD;}
185  static HConstFRSimpType * Create(int min, int max) {return new HFrExtent(min, max); };
186 
187 protected:
188  int m_Multiplier;
189  bool m_bUseLOD;
190 };
191 
195 class MVO_API HFrNoSimpAA : public HConstFRSimpType
196 {
197 public:
200 
205  HFrNoSimpAA(int min, int max) : HConstFRSimpType(min,max) {};
206 
207  virtual ~HFrNoSimpAA() {}
208 
216  void Set(HConstantFrameRate *pCfr, int SimpLevel);
225  void Update(HConstantFrameRate *pCfr, int SimpLevel);
226 
233  static HConstFRSimpType * Create(int min, int max) {return new HFrNoSimpAA(min, max); };
234 
235 };
236 
241 class MVO_API HFrNoSimp : public HConstFRSimpType
242 {
243 public:
250  HFrNoSimp(int min, int max) : HConstFRSimpType(min,max) {};
251 
252  virtual ~HFrNoSimp() {}
253 
260  void Set(HConstantFrameRate *pCfr, int SimpLevel);
263 
264 
271  static HConstFRSimpType * Create(int min, int max) {return new HFrNoSimp(min, max); };
272 
273 
274 };
275 
276 
281 class MVO_API HFrLodClamp : public HConstFRSimpType
282 {
283 public:
285  HFrLodClamp() : HConstFRSimpType() { m_bSegmentSwitch = false; }
290  HFrLodClamp(int min, int max) : HConstFRSimpType(min,max) {}
291 
292  void Reset(HConstantFrameRate *pCfr);
293  virtual ~HFrLodClamp() {}
294 
303  void Set(HConstantFrameRate *pCfr, int SimpLevel);
312  static HConstFRSimpType * Create(int min, int max) {return new HFrLodClamp(min, max); };
313  void SetSegmentSwitch(bool ssl) { m_bSegmentSwitch = ssl; }
314  bool m_bSegmentSwitch;
315 
316 
317 };
318 
323 class MVO_API HFrLodThreshold : public HConstFRSimpType
324 {
325 public:
328 
333  HFrLodThreshold(int min, int max) : HConstFRSimpType(min,max) {}
334 
335  virtual ~HFrLodThreshold() {}
336 
343  void Set(HConstantFrameRate *pCfr, int SimpLevel);
352  static HConstFRSimpType * Create(int min, int max) {return new HFrLodThreshold(min, max); };
353 
354 };
355 
356 
361 class MVO_API HFrSolidBBox : public HConstFRSimpType
362 {
363 public:
370  HFrSolidBBox(int min, int max) : HConstFRSimpType(min,max) {}
371 
372  virtual ~HFrSolidBBox() {}
373 
380  void Set(HConstantFrameRate *pCfr, int SimpLevel);
383 
385  static void RegisterCallbacks();
392  static HConstFRSimpType * Create(int min, int max) {return new HFrSolidBBox(min, max); };
393 
394 private:
395  static void draw_solid_bbx_tree(HIC_Rendition *rendition, HIC_Segment_Info * geo3);
396  static void draw_solid_bbx(HIC_Rendition *rendition, HIC_Segment_Info * geo3);
397 
398 };
399 
404 class MVO_API HFrWireframeBBox : public HConstFRSimpType
405 {
406 public:
409 
414  HFrWireframeBBox(int min, int max) : HConstFRSimpType(min,max) {}
415 
416  virtual ~HFrWireframeBBox() {}
417 
424  void Set(HConstantFrameRate *pCfr, int SimpLevel);
427 
429  static void RegisterCallbacks();
430 
431 
438  static HConstFRSimpType * Create(int min, int max) {return new HFrWireframeBBox(min, max); };
439 private:
440  static void draw_wireframe_bbx(HIC_Rendition *rendition,HIC_Segment_Info * geo3);
441 
442 };
443 
449 class MVO_API HFrWireframe : public HConstFRSimpType
450 {
451 public:
452 
455 
460  HFrWireframe(int min, int max) : HConstFRSimpType(min,max) {}
461 
462  virtual ~HFrWireframe() {}
463 
471  void Set(HConstantFrameRate *pCfr, int SimpLevel);
472 
475 
482  static HConstFRSimpType * Create(int min, int max) {return new HFrWireframe(min, max); };
483 
484 };
485 
486 
488 
493 class MVO_API HConstantFrameRate
494 {
495  friend class HConstFRSimpType;
496  friend class HFrNoSimp;
497 public:
503  virtual ~HConstantFrameRate();
504 
505  HBaseView* GetView( void ) { return m_pHView; }
512  void UpdateLevel(int SimpLevel, int SimpListPos);
513 
514 protected:
522 
528 
529  bool m_pOwnsList;
530 
531 
550  DetailChangeMode m_DetailIncOnIdleMode;
555 
556  float m_DeadZone;
557  int m_lastupdown;
562 
567 
573  void SetHoopsSimplificationOptions(int SimpLevel, int SimpListPos);
574 
581  void AdjustListPointers(int &SimpLevel, int &SimpListPos);
582 
583 
588  void AdjustDetail(float FrameRate);
589 
590 
594  void StartTimer();
595 
599  void StopTimer();
600 
601  bool IsLowestDetail();
602  void ChangeDetail(int change, int *SimpLevel = 0, int *SimpListPos = 0);
603 
604 
605 
606 public:
607 
621  bool GetMode(HConstFRSimpType ***sd = 0L ,float *target_framerate = 0L, int *length = 0L);
622 
632  void Init(float target_framerate=20.0, HConstFRSimpType **sd = 0, int length = 0, float deadzone =3.0);
633 
636  void Shutdown();
637 
638 
639  bool GetActive() {return m_bConstFRActive;}
646  void Watch();
647 
648 
655  void Start();
656 
661  void Stop();
662 
668  void IncreaseDetailTemp();
669 
675  bool ViewpointHasChanged(bool update = true);
676 
681  void SetDetailIncMode (DetailChangeMode mode) {m_DetailIncMode=mode; m_SimplificationIncrease = mode;}
682  void SetDetailIncOnIdleMode (DetailChangeMode mode) {m_DetailIncOnIdleMode=mode; m_SimplificationIncreaseOnIdle = mode;}
683 
686  DetailChangeMode GetDetailIncMode () {return m_DetailIncMode; }
687 
692  void SetDetailDecMode (DetailChangeMode mode) {m_DetailDecMode=mode; m_SimplificationDecrease = mode;}
695  DetailChangeMode GetDetailDecMode () {return m_DetailDecMode; }
698  void ResetListPointers() { m_SimpLevel=0; m_SimpListPos = 0; }
699 
701  float GetTargetFrameRate( void ) { return m_TargetFrameRate; }
705  void SetTargetFrameRate( float framerate ) { m_TargetFrameRate = framerate;}
710  void SetDeadZone( float deadzone ) { m_DeadZone = deadzone;}
714  void SetEmergencyDetailDecrease( bool detaildecrease ) { m_bEmergencyDecrease = detaildecrease;}
719  void SetActivityType(HActivityType at) { m_ActivityType = at; }
720 
723  HActivityType GetActivityType() { return m_ActivityType;}
724  int GetSimpLevel() { return m_SimpLevel;}
730  void AdjustLodOptions();
732  bool GetDetailIncreaseState() { return m_bIncreaseDetailTemp; }
737  void SetDetailLevel ( int listpos, int simplevel) { m_SimpListPos = listpos; m_SimpLevel = simplevel; }
738 
743  HConstFRSimpType * GetSimpType(ConstFRType stype);
747  void SetSimpLevel(int simplevel) { m_SimpLevel = simplevel; }
748 
751  void AdjustDefaultDetailLevelToModel();
752 
760  static bool Tick(float request_time, float actual_time, void * user_data);
761 
762  void SetDisableIncreaseTemp(bool it) { m_bDisableIncreaseTemp = it; }
763  void InitiateDelay() { m_bOneDelay = true; }
764  int GetDetailLevelNum();
765  int GetTotalDetailLevelNum();
766 
767  void SetWatchActivity(bool wa) { m_bWatchActivity = wa; }
768  void MajorDetailDecrease();
769  void MajorDetailIncrease();
770 
771 
772 private:
773  bool m_bFullDetailTemp;
774  bool m_bWatchActivity;
775  bool m_bIncreaseDetailTemp;
776  float m_oldPos[11];
777  HTClient * m_pUpdateTimerClient;
778  bool m_bDisableIncreaseTemp;
779  bool m_bOneDelay;
780  float m_OneDelayStart;
781  bool m_bAdjustNextTime;
782  float m_AdjustTime;
783  bool m_bIncrease;
784  int m_CounterThreshold;
785  int m_TempDetailIncrement;
786  bool m_bFirstIncrease;
787 
788 
789  };
790 
791 
792 #ifdef H_PACK_8
793 #pragma pack(pop)
794 #endif
795 
796 #endif
797 
798 
799 
800 
801 
802 
803 
804 
DetailChangeMode
Definition: HConstantFrameRate.h:67
Indicates that a cutting plane is being manipulated.
Definition: HConstantFrameRate.h:59
float m_TargetFrameRate
Definition: HConstantFrameRate.h:521
static HConstFRSimpType ** CreateList(int size)
Definition: HConstantFrameRate.h:134
HFrWireframe(int min, int max)
Definition: HConstantFrameRate.h:460
The HConstantFrameRate class provides support for maintaining a constant framerate when rendering...
Definition: HConstantFrameRate.h:493
HFrLodClamp(int min, int max)
Definition: HConstantFrameRate.h:290
Definition: HConstantFrameRate.h:449
HConstFRSimpType(int min, int max)
Definition: HConstantFrameRate.h:101
HFrWireframeBBox()
Definition: HConstantFrameRate.h:408
virtual void Set(HConstantFrameRate *pCfr, int SimpLevel)=0
void SetDetailIncMode(DetailChangeMode mode)
Definition: HConstantFrameRate.h:681
DetailChangeMode m_SimplificationIncreaseOnIdle
Definition: HConstantFrameRate.h:542
void SetActivityType(HActivityType at)
Definition: HConstantFrameRate.h:719
HBaseView * GetView(void)
Definition: HConstantFrameRate.h:505
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:482
HActivityType GetActivityType()
Definition: HConstantFrameRate.h:723
Definition: HConstantFrameRate.h:323
int GetMinSimpLevel()
Definition: HConstantFrameRate.h:129
HFrNoSimpAA(int min, int max)
Definition: HConstantFrameRate.h:205
void SetDetailDecMode(DetailChangeMode mode)
Definition: HConstantFrameRate.h:692
HFrNoSimp(int min, int max)
Definition: HConstantFrameRate.h:250
DetailChangeMode GetDetailDecMode()
Definition: HConstantFrameRate.h:695
void SetDeadZone(float deadzone)
Definition: HConstantFrameRate.h:710
Definition: HConstantFrameRate.h:241
void SetSimpLevel(int simplevel)
Definition: HConstantFrameRate.h:747
No simplification. The scene is antialiased.
Definition: HConstantFrameRate.h:42
HFrWireframeBBox(int min, int max)
Definition: HConstantFrameRate.h:414
HFrExtent(int min, int max)
Definition: HConstantFrameRate.h:154
int m_SimpLevelMax
Definition: HConstantFrameRate.h:88
HFrNoSimp()
Definition: HConstantFrameRate.h:245
float m_DeadZone
Definition: HConstantFrameRate.h:556
virtual void Update(HConstantFrameRate *pCfr, int SimpLevel)
int m_FrameRateCounter
Definition: HConstantFrameRate.h:544
Definition: HConstantFrameRate.h:281
Definition: HTManager.h:162
int m_SimpLevel
Definition: HConstantFrameRate.h:532
ConstFRType GetType()
Definition: HConstantFrameRate.h:305
Indicates no activity that would affect the constant framerate logic.
Definition: HConstantFrameRate.h:57
HFrLodClamp()
Definition: HConstantFrameRate.h:285
HFrWireframe()
Definition: HConstantFrameRate.h:454
int GetMaxSimpLevel()
Definition: HConstantFrameRate.h:131
DetailChangeMode m_SimplificationIncrease
Definition: HConstantFrameRate.h:541
void SetUseLod(bool ul)
Definition: HConstantFrameRate.h:175
LOD threshold type. LOD level for each individual object based on size on screen. ...
Definition: HConstantFrameRate.h:47
Wireframe bounding box similfication type.
Definition: HConstantFrameRate.h:43
Solid bounding box simplification type.
Definition: HConstantFrameRate.h:44
ConstFRType GetType()
Definition: HConstantFrameRate.h:426
ConstFRType
Definition: HConstantFrameRate.h:39
ConstFRType GetType()
Definition: HConstantFrameRate.h:345
Definition: HConstantFrameRate.h:361
HConstFRSimpType ** m_pSimpList
Definition: HConstantFrameRate.h:527
Wireframe simplification type.
Definition: HConstantFrameRate.h:45
void SetDetailLevel(int listpos, int simplevel)
Definition: HConstantFrameRate.h:737
int m_SimpListPos
Definition: HConstantFrameRate.h:533
DetailChangeMode m_SimplificationDecrease
Definition: HConstantFrameRate.h:540
LOD clamp type. All objects share the same detail level.
Definition: HConstantFrameRate.h:46
HFrSolidBBox()
Definition: HConstantFrameRate.h:365
Definition: HConstantFrameRate.h:404
HConstFRSimpType()
Definition: HConstantFrameRate.h:91
The HBaseView class defines and manages a view of model information.
Definition: HBaseView.h:337
int m_SimpListLength
Definition: HConstantFrameRate.h:535
ConstFRType GetType()
Definition: HConstantFrameRate.h:178
void SetEmergencyDetailDecrease(bool detaildecrease)
Definition: HConstantFrameRate.h:714
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:271
HActivityType m_ActivityType
Definition: HConstantFrameRate.h:566
HFrLodThreshold()
Definition: HConstantFrameRate.h:327
DetailChangeMode m_DetailIncMode
Definition: HConstantFrameRate.h:549
bool GetActive()
Definition: HConstantFrameRate.h:639
No simplification.
Definition: HConstantFrameRate.h:41
void ResetListPointers()
Definition: HConstantFrameRate.h:698
Indicates that some activity is occuring that isn't movement or cutting plane related.
Definition: HConstantFrameRate.h:60
int m_SimpLevelMin
Definition: HConstantFrameRate.h:87
Definition: HConstantFrameRate.h:84
DetailChangeMode GetDetailIncMode()
Definition: HConstantFrameRate.h:686
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:438
int GetSimpLevel()
Definition: HConstantFrameRate.h:724
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:185
HFrLodThreshold(int min, int max)
Definition: HConstantFrameRate.h:333
Indicates movement activity in the scene.
Definition: HConstantFrameRate.h:58
DetailChangeMode m_DetailDecMode
Definition: HConstantFrameRate.h:554
bool m_bEmergencyDecrease
Definition: HConstantFrameRate.h:561
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:392
ConstFRType GetType()
Definition: HConstantFrameRate.h:218
Definition: HConstantFrameRate.h:144
ConstFRType GetType()
Definition: HConstantFrameRate.h:382
Only one detail change is allowed.
Definition: HConstantFrameRate.h:70
HFrNoSimpAA()
Definition: HConstantFrameRate.h:199
float GetTargetFrameRate(void)
Definition: HConstantFrameRate.h:701
ConstFRType GetType()
Definition: HConstantFrameRate.h:262
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:352
ConstFRType GetType()
Definition: HConstantFrameRate.h:474
HFrExtent()
Definition: HConstantFrameRate.h:148
HFrSolidBBox(int min, int max)
Definition: HConstantFrameRate.h:370
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:233
void SetTargetFrameRate(float framerate)
Definition: HConstantFrameRate.h:705
void SetMultiplier(int mp)
Definition: HConstantFrameRate.h:162
Detail change is allowed based on target framerate.
Definition: HConstantFrameRate.h:71
bool m_bConstFRActive
Definition: HConstantFrameRate.h:516
HActivityType
Definition: HConstantFrameRate.h:55
Placeholder type.
Definition: HConstantFrameRate.h:48
Definition: HConstantFrameRate.h:195
static HConstFRSimpType * Create(int min, int max)
Definition: HConstantFrameRate.h:312
No detail level change.
Definition: HConstantFrameRate.h:69
HBaseView * m_pHView
Definition: HConstantFrameRate.h:515
Maximum extent simplification type.
Definition: HConstantFrameRate.h:49