projects
/
laserbrain_demo
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
More silly mistakes
[laserbrain_demo]
/
src
/
exhibit.cc
diff --git
a/src/exhibit.cc
b/src/exhibit.cc
index
c525f77
..
b598b75
100644
(file)
--- a/
src/exhibit.cc
+++ b/
src/exhibit.cc
@@
-1,16
+1,8
@@
#include "exhibit.h"
#include "snode.h"
#include "scene.h"
#include "exhibit.h"
#include "snode.h"
#include "scene.h"
-#include "geomdraw.h"
-class ExhibitPriv {
-public:
- Vec3 orig_pos;
- Quat orig_rot;
- SceneNode *orig_node;
-
- ExhibitPriv();
-};
+ExSelection ExSelection::null;
// selection
// selection
@@
-37,71
+29,51
@@
ExData::~ExData()
delete voice;
}
delete voice;
}
-// private data for each exhibit type
-ExhibitPriv::ExhibitPriv()
-{
- orig_node = 0;
-}
-
// exhibit class
Exhibit::Exhibit()
{
// exhibit class
Exhibit::Exhibit()
{
- priv = new ExhibitPriv;
+ orig_parent = 0;
+ prev_slot = 0;
}
Exhibit::~Exhibit()
{
}
Exhibit::~Exhibit()
{
- delete priv;
}
void Exhibit::set_node(SceneNode *node)
{
}
void Exhibit::set_node(SceneNode *node)
{
- this->node = priv->orig_node = node;
- priv->orig_pos = node->get_position();
- priv->orig_rot = node->get_rotation();
+ this->node = node;
+ orig_parent = node->get_parent();
}
ExSelection Exhibit::select(const Ray &ray) const
{
}
ExSelection Exhibit::select(const Ray &ray) const
{
- return ExSelection(0);
+ ExSelection sel;
+ HitPoint hit;
+ if(get_aabox().intersect(ray, &hit)) {
+ sel.ex = (Exhibit*)this;
+ sel.selray = ray;
+ sel.dist = hit.dist;
+ sel.validmask = EXSEL_RAY;
+ }
+ return sel;
}
ExSelection Exhibit::select(const Sphere &sph) const
{
}
ExSelection Exhibit::select(const Sphere &sph) const
{
- return ExSelection(0);
-}
-
-void Exhibit::update(float dt)
-{
-}
-
-void Exhibit::pre_draw() const
-{
- if(node) {
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
- glMultMatrixf(node->get_matrix()[0]);
+ ExSelection sel;
+ if(collision_sphere_aabox(sph, get_aabox())) {
+ sel.ex = (Exhibit*)this;
+ sel.selsphere = sph;
+ sel.validmask = EXSEL_SPHERE;
}
}
+ return sel;
}
}
-void Exhibit::draw() const
-{
-}
-
-void Exhibit::post_draw() const
+void Exhibit::update(float dt)
{
{
- if(node) {
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
-
- const AABox &bvol = get_aabox();
- debug_log("bvol (%g %g %g) -> (%g %g %g)\n", bvol.min.x, bvol.min.y, bvol.min.z,
- bvol.max.x, bvol.max.y, bvol.max.z);
- draw_geom_object(&bvol);
- }
}
}
-
const AABox &Exhibit::get_aabox() const
{
aabb = node->get_bounds();
const AABox &Exhibit::get_aabox() const
{
aabb = node->get_bounds();