Ogitor探索之代码分析(3)---CBaseEditor::showBoundingBox(bool bShow)

    技术2025-10-27  4

    在Qtogitor中编辑场景时如何选中物体Object并让它显示出边线(Ogitor称它为Bounding Box)呢?

    前面已经介绍了OnMouseMove的功能了,如果不知道的要先看一下OnMouseMove的功能;

    1、当鼠标在屏幕上移动时OnMouseMove实时获得鼠标在视口的坐标

    2、Ogitor经过系列运算(具体实现还有待发掘)

    3、获取鼠标所在位置是否有Object

    4、如果有Object在你点击鼠标左键时就回调用CBaseEditor::showBoundingBox(bool bShow)并且此时传递到bShow的值为true BoundingBox就显示出来了

    在D:/OgreSDK/ogitor_src/src0_43/Ogitor/src/BaseEditor.cpp文件中定义的CBaseEditor::showBoundingBox(bool bShow)

    1: void CBaseEditor::showBoundingBox(bool bShow) 2: { 3: if(!mBoxParentNode && getEditorType() != ETYPE_BASE) 4: createBoundingBox(); 5:  6: if(mBBoxNode) 7: { 8: int matpos = 0; 9: if(mHighlighted->get()) 10: { 11: ++matpos; 12: if(mSelected->get()) 13: ++matpos; 14: } 15: 16: mOBBoxRenderable->setMaterial(mOBBMaterials[matpos]); 17: mBBoxNode->setVisible(bShow || mSelected->get() || mHighlighted->get()); 18: } 19: }
    最新回复(0)