source: GTP/trunk/Lib/Illum/IBRBillboardCloudTrees/OGRE/include/BBC/BBCBillboard.h @ 721

Revision 721, 1.4 KB checked in by igarcia, 19 years ago (diff)
Line 
1#ifndef _BBCBILLBOARD_H
2#define _BBCBILLBOARD_H
3
4#include <BBCBillboardClusterData.h>
5
6namespace BBC {
7
8// Forward declarations
9class Billboard;
10
11namespace boost
12{
13    void intrusive_ptr_add_ref(Billboard * p);
14    void intrusive_ptr_release(Billboard * p);
15};
16
17
18class _BBCExport Billboard
19{
20private:
21    long references;
22    friend void boost::intrusive_ptr_add_ref(Billboard * p);
23    friend void boost::intrusive_ptr_release(Billboard * p);
24
25  public:
26    Billboard();
27
28    virtual ~Billboard();
29
30
31  protected:
32    unsigned int mBillboardHandle;
33
34
35  public:
36    unsigned int getBillboardHandle();
37
38    void setBillboardHandle(unsigned int value);
39
40
41  protected:
42
43        BillboardClusterDataPtr mBillboardClusterData;
44
45  public:
46
47        void setBillboardClusterData(BillboardClusterDataPtr value);
48
49        BillboardClusterDataPtr getBillboardClusterData();
50
51};
52
53// class specific addref/release implementation
54// the two function overloads must be in the boost namespace on most compilers:
55namespace boost
56{
57 inline void intrusive_ptr_add_ref(Billboard * p)
58  {
59    // increment reference count of object *p
60    ++(p->references);
61  }
62
63
64
65 inline void intrusive_ptr_release(Billboard * p)
66  {
67   // decrement reference count, and delete object when reference count reaches 0
68   if (--(p->references) == 0)
69     delete p;
70  }
71} // namespace boost
72
73typedef ::boost::intrusive_ptr<Billboard> BillboardPtr;
74
75}
76#endif
Note: See TracBrowser for help on using the repository browser.