protect ssg pointers to avoid occasional crashes (of course it would be
nicer if the Occluder would always get removed before its model branch, but that's not easily enforcable)
This commit is contained in:
@@ -23,6 +23,7 @@
|
|||||||
#ifndef _SHADOWVOLUME_HXX
|
#ifndef _SHADOWVOLUME_HXX
|
||||||
#define _SHADOWVOLUME_HXX
|
#define _SHADOWVOLUME_HXX
|
||||||
|
|
||||||
|
#include <simgear/structure/ssgSharedPtr.hxx>
|
||||||
|
|
||||||
#include <plib/sg.h>
|
#include <plib/sg.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@@ -72,10 +73,10 @@ private:
|
|||||||
bool isFacingLight;
|
bool isFacingLight;
|
||||||
} triData;
|
} triData;
|
||||||
|
|
||||||
ssgBranch *geometry_leaf;
|
ssgSharedPtr<ssgBranch> geometry_leaf;
|
||||||
ssgBranch *scenery_object;
|
ssgSharedPtr<ssgBranch> scenery_object;
|
||||||
ssgBranch *lib_object;
|
ssgSharedPtr<ssgBranch> lib_object;
|
||||||
ssgBranch *first_select;
|
ssgSharedPtr<ssgBranch> first_select;
|
||||||
sgVec3 last_lightpos;
|
sgVec3 last_lightpos;
|
||||||
sgMat4 last_transform;
|
sgMat4 last_transform;
|
||||||
int frameNumber;
|
int frameNumber;
|
||||||
@@ -110,14 +111,14 @@ private:
|
|||||||
void computeShadows(void);
|
void computeShadows(void);
|
||||||
void traverseTree(ssgBranch *branch);
|
void traverseTree(ssgBranch *branch);
|
||||||
void find_trans(void);
|
void find_trans(void);
|
||||||
ssgBranch *scenery_object;
|
ssgSharedPtr<ssgBranch> scenery_object;
|
||||||
ssgBranch *lib_object;
|
ssgSharedPtr<ssgBranch> lib_object;
|
||||||
ssgBranch *pending_object;
|
ssgSharedPtr<ssgBranch> pending_object;
|
||||||
ssgBranch *tile;
|
ssgSharedPtr<ssgBranch> tile;
|
||||||
ShadowCaster_list parts;
|
ShadowCaster_list parts;
|
||||||
OccluderType occluder_type;
|
OccluderType occluder_type;
|
||||||
};
|
};
|
||||||
typedef map<ssgBranch *, SceneryObject *> SceneryObject_map;
|
typedef map<ssgSharedPtr<ssgBranch>, SceneryObject *> SceneryObject_map;
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -138,7 +139,7 @@ private:
|
|||||||
sgMat4 CameraViewM;
|
sgMat4 CameraViewM;
|
||||||
double sun_angle;
|
double sun_angle;
|
||||||
SceneryObject_map sceneryObjects;
|
SceneryObject_map sceneryObjects;
|
||||||
ssgBranch *ssg_root;
|
ssgSharedPtr<ssgBranch> ssg_root;
|
||||||
bool shadows_rendered;
|
bool shadows_rendered;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user