return boolean if character collected
This commit is contained in:
parent
619c07853f
commit
8b3604ec9a
3 changed files with 9 additions and 22 deletions
|
@ -313,7 +313,7 @@ const Layer::BoundingBox & MsdfLayer::getBoundingBox(){
|
||||||
void MsdfLayer::setBoundingBox(const Layer::BoundingBox & boundingBox){
|
void MsdfLayer::setBoundingBox(const Layer::BoundingBox & boundingBox){
|
||||||
this->boundingBox = boundingBox;
|
this->boundingBox = boundingBox;
|
||||||
}
|
}
|
||||||
void MsdfLayer::collectCharacter(const char character,
|
bool MsdfLayer::collectCharacter(const char character,
|
||||||
const ofNode & node,
|
const ofNode & node,
|
||||||
const ofCamera & camera,
|
const ofCamera & camera,
|
||||||
glm::vec4 color,
|
glm::vec4 color,
|
||||||
|
@ -351,25 +351,9 @@ void MsdfLayer::collectCharacter(const char character,
|
||||||
// FIXME: make sure this does not happen
|
// FIXME: make sure this does not happen
|
||||||
ofLogError("MsdfLayer::draw") << "y smaller 0, this is not good" << endl;
|
ofLogError("MsdfLayer::draw") << "y smaller 0, this is not good" << endl;
|
||||||
}
|
}
|
||||||
//double pl_a, pb_a, pr_a, pt_a;
|
|
||||||
//double pl_b, pb_b, pr_b, pt_b;
|
|
||||||
//gg_a.getQuadPlaneBounds(pl_a, pb_a, pr_a, pt_a);
|
|
||||||
//gg_b.getQuadPlaneBounds(pl_b, pb_b, pr_b, pt_b);
|
|
||||||
|
|
||||||
float w = glm::mix(float(w_a), float(w_b), mix);
|
float w = glm::mix(float(w_a), float(w_b), mix);
|
||||||
float h = glm::mix(float(h_a), float(h_b), mix);
|
float h = glm::mix(float(h_a), float(h_b), mix);
|
||||||
//float pl = glm::mix(float(pl_a), float(pl_b), mix);
|
|
||||||
//float pt = glm::mix(float(pt_a), float(pt_b), mix);
|
|
||||||
|
|
||||||
//float magic = atlas->settings.scale;
|
|
||||||
//getVFlip(settings.vFlipBehaviour,
|
|
||||||
//ofGetCurrentOrientationMatrix(),
|
|
||||||
//vFlip);
|
|
||||||
//if(vFlip == V_FLIP_OFF){
|
|
||||||
//n.move(pl * magic, (pt * magic) + (-1 * h), 0.0f);
|
|
||||||
//}else{
|
|
||||||
//n.move(pl * magic, -1 * pt * magic, 0);
|
|
||||||
//}
|
|
||||||
|
|
||||||
glm::vec4 p0 = n.getGlobalTransformMatrix() * glm::vec4(0, 0, 0, 1);
|
glm::vec4 p0 = n.getGlobalTransformMatrix() * glm::vec4(0, 0, 0, 1);
|
||||||
glm::vec4 p1 = n.getGlobalTransformMatrix() * glm::vec4(0, h, 0, 1);
|
glm::vec4 p1 = n.getGlobalTransformMatrix() * glm::vec4(0, h, 0, 1);
|
||||||
|
@ -433,6 +417,9 @@ void MsdfLayer::collectCharacter(const char character,
|
||||||
indices.insert(indices.end(), {base, base + 1, base + 2, base + 2, base + 3, base});
|
indices.insert(indices.end(), {base, base + 1, base + 2, base + 2, base + 3, base});
|
||||||
}
|
}
|
||||||
nElements++;
|
nElements++;
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void MsdfLayer::setAtlas(shared_ptr <ofxMsdfgen::Atlas> _atlas){
|
void MsdfLayer::setAtlas(shared_ptr <ofxMsdfgen::Atlas> _atlas){
|
||||||
|
|
|
@ -56,7 +56,7 @@ class MsdfLayer : public Layer {
|
||||||
ofNode & getInnerNode() override;
|
ofNode & getInnerNode() override;
|
||||||
const Layer::BoundingBox & getBoundingBox() override;
|
const Layer::BoundingBox & getBoundingBox() override;
|
||||||
void setBoundingBox(const Layer::BoundingBox & boundingBox) override;
|
void setBoundingBox(const Layer::BoundingBox & boundingBox) override;
|
||||||
void collectCharacter(const char character,
|
bool collectCharacter(const char character,
|
||||||
const ofNode & node,
|
const ofNode & node,
|
||||||
const ofCamera & camera,
|
const ofCamera & camera,
|
||||||
glm::vec4 color = glm::vec4(1, 1, 1, 1),
|
glm::vec4 color = glm::vec4(1, 1, 1, 1),
|
||||||
|
|
|
@ -168,13 +168,13 @@ static bool isInside(float px, float py, float x, float y, float w, float h){
|
||||||
return px >= x && px <= x + w && py >= y && py <= y + h;
|
return px >= x && px <= x + w && py >= y && py <= y + h;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool isInside(const ofCamera & camera, const glm::vec4 & position){
|
static bool isInside(const ofCamera & camera, const glm::vec4 & position, float margin = 0){
|
||||||
OFX_PROFILER_FUNCTION()
|
OFX_PROFILER_FUNCTION()
|
||||||
const auto & viewport = ofGetCurrentRenderer()->getCurrentViewport();
|
const auto & viewport = ofGetCurrentRenderer()->getCurrentViewport();
|
||||||
glm::vec3 screenPosition = camera.worldToScreen(position);
|
glm::vec3 screenPosition = camera.worldToScreen(position);
|
||||||
if(screenPosition.x >= 0.0f && screenPosition.x <= ofGetWidth()
|
if(screenPosition.x >= 0.0f - margin && screenPosition.x <= ofGetWidth() + margin
|
||||||
&& screenPosition.y >= 0.0f && screenPosition.y <= ofGetHeight()
|
&& screenPosition.y >= 0.0f - margin && screenPosition.y <= ofGetHeight() + margin
|
||||||
&& screenPosition.z <= 1.0f){
|
&& screenPosition.z <= 1.0f){ // z is not in px
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in a new issue