// @(#)root/gl:$Id$
// Author:  Matevz Tadel, Feb 2007

/*************************************************************************
 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#include "TGLSceneInfo.h"
#include "TGLRnrCtx.h"
#include "TGLSceneBase.h"
#include "TGLViewerBase.h"

//______________________________________________________________________
// TGLSceneInfo
//
// Base class for extended scene context.
//
// Scenes can be shared among several viewers and each scene needs to
// cache some viewer/camera/clipping specific state => this is a
// storage class for this data.
//
// Sub-classes of TGLSceneBase can override the virtual
// CreateSceneInfo() method and in it instantiate a sub-class of
// TGLSceneInfo containing the needed information. See TGLScene and
// inner class SceneInfo; note that some casting is needed in actual
// methods as TGLRnrCtx holds the base-class pointer.
//

ClassImp(TGLSceneInfo)


//______________________________________________________________________
TGLSceneInfo::TGLSceneInfo(TGLViewerBase* view, TGLSceneBase* scene) :
   fViewer    (view),
   fScene     (scene),
   fActive    (kTRUE),

   fLOD     (TGLRnrCtx::kLODUndef),
   fStyle   (TGLRnrCtx::kStyleUndef),
   fWFLineW (0),
   fOLLineW (0),
   fClip    (0),

   fLastLOD   (TGLRnrCtx::kLODUndef),
   fLastStyle (TGLRnrCtx::kStyleUndef),
   fLastWFLineW (0),
   fLastOLLineW (0),
   fLastClip  (0),
   fLastCamera(0),

   fSceneStamp (0),
   fClipStamp  (0),
   fCameraStamp(0),
   fUpdateTimeouted(kFALSE),

   fViewCheck (kTRUE),
   fInFrustum (kTRUE),
   fInClip    (kTRUE),
   fClipMode  (kClipNone)
{
   // Default constructor.
}

//______________________________________________________________________
void TGLSceneInfo::SetActive(Bool_t a)
{
   // Set active state of the scene, mark viewer as changed.

   if (a != fActive)
   {
      fActive = a;
      fViewer->Changed();
   }
}

//______________________________________________________________________
void TGLSceneInfo::SetupTransformsAndBBox()
{
   // Combine information from scene, scene-info and camera (should be
   // optional) into transformation matrices.
   //
   // Transform scene bounding box using this transformation.

   // !!! Transforms not implemented yet, just copy the scene bounding
   // box.

   fTransformedBBox = fScene->BoundingBox();
}
 TGLSceneInfo.cxx:1
 TGLSceneInfo.cxx:2
 TGLSceneInfo.cxx:3
 TGLSceneInfo.cxx:4
 TGLSceneInfo.cxx:5
 TGLSceneInfo.cxx:6
 TGLSceneInfo.cxx:7
 TGLSceneInfo.cxx:8
 TGLSceneInfo.cxx:9
 TGLSceneInfo.cxx:10
 TGLSceneInfo.cxx:11
 TGLSceneInfo.cxx:12
 TGLSceneInfo.cxx:13
 TGLSceneInfo.cxx:14
 TGLSceneInfo.cxx:15
 TGLSceneInfo.cxx:16
 TGLSceneInfo.cxx:17
 TGLSceneInfo.cxx:18
 TGLSceneInfo.cxx:19
 TGLSceneInfo.cxx:20
 TGLSceneInfo.cxx:21
 TGLSceneInfo.cxx:22
 TGLSceneInfo.cxx:23
 TGLSceneInfo.cxx:24
 TGLSceneInfo.cxx:25
 TGLSceneInfo.cxx:26
 TGLSceneInfo.cxx:27
 TGLSceneInfo.cxx:28
 TGLSceneInfo.cxx:29
 TGLSceneInfo.cxx:30
 TGLSceneInfo.cxx:31
 TGLSceneInfo.cxx:32
 TGLSceneInfo.cxx:33
 TGLSceneInfo.cxx:34
 TGLSceneInfo.cxx:35
 TGLSceneInfo.cxx:36
 TGLSceneInfo.cxx:37
 TGLSceneInfo.cxx:38
 TGLSceneInfo.cxx:39
 TGLSceneInfo.cxx:40
 TGLSceneInfo.cxx:41
 TGLSceneInfo.cxx:42
 TGLSceneInfo.cxx:43
 TGLSceneInfo.cxx:44
 TGLSceneInfo.cxx:45
 TGLSceneInfo.cxx:46
 TGLSceneInfo.cxx:47
 TGLSceneInfo.cxx:48
 TGLSceneInfo.cxx:49
 TGLSceneInfo.cxx:50
 TGLSceneInfo.cxx:51
 TGLSceneInfo.cxx:52
 TGLSceneInfo.cxx:53
 TGLSceneInfo.cxx:54
 TGLSceneInfo.cxx:55
 TGLSceneInfo.cxx:56
 TGLSceneInfo.cxx:57
 TGLSceneInfo.cxx:58
 TGLSceneInfo.cxx:59
 TGLSceneInfo.cxx:60
 TGLSceneInfo.cxx:61
 TGLSceneInfo.cxx:62
 TGLSceneInfo.cxx:63
 TGLSceneInfo.cxx:64
 TGLSceneInfo.cxx:65
 TGLSceneInfo.cxx:66
 TGLSceneInfo.cxx:67
 TGLSceneInfo.cxx:68
 TGLSceneInfo.cxx:69
 TGLSceneInfo.cxx:70
 TGLSceneInfo.cxx:71
 TGLSceneInfo.cxx:72
 TGLSceneInfo.cxx:73
 TGLSceneInfo.cxx:74
 TGLSceneInfo.cxx:75
 TGLSceneInfo.cxx:76
 TGLSceneInfo.cxx:77
 TGLSceneInfo.cxx:78
 TGLSceneInfo.cxx:79
 TGLSceneInfo.cxx:80
 TGLSceneInfo.cxx:81
 TGLSceneInfo.cxx:82
 TGLSceneInfo.cxx:83
 TGLSceneInfo.cxx:84
 TGLSceneInfo.cxx:85
 TGLSceneInfo.cxx:86
 TGLSceneInfo.cxx:87
 TGLSceneInfo.cxx:88
 TGLSceneInfo.cxx:89
 TGLSceneInfo.cxx:90
 TGLSceneInfo.cxx:91
 TGLSceneInfo.cxx:92