也许你想在碰到物体或选择物体的时候让它突出显示,通过shapebase类的getworldbox()函数能够取到它的包围盒的六个坐标(三个坐标轴的最大、最小值),查找torquescript的帮助文档,只有EditTSCtrl类有绘制方面的函数,分别如下:
|
|
|
|
|
|
|
|
|
|
而且只有worldeditor和terrainEditor是继承EditTSCtrl的,所以当需要使用这些绘制函数的时候,Editor必须是继承EditTSCtrl的(本人是将GameTSCtrl改为EditTSCtrl),查看一下引擎内核可以看到,在render物体时有一个回调函数onEditorRender,这样我们只要重写一下这个函数就可以实现额外的绘制了:
以下是绘制shapebase的包围盒代码
function ShapeBase::onEditorRender(%this, %editor, %selected, %expanded)
{
if(%this.selected)
{
%pos=%this.getWorldBox();
%xMin=getWord(%pos,0);
%yMin=getWord(%pos,1);
%zMin=getWord(%pos,2);
%xMax=getWord(%pos,3);
%yMax=getWord(%pos,4);
%zMax=getWord(%pos,5);
%editor.consoleFrameColor ="255 0 0";
%editor.consoleFillColor ="0 15 0 15";
%winth=1;
%start=%xMinSPC%yMinSPC%zMin;
%end=%xMaxSPC%yMinSPC%zMin;
%editor.renderLine(%start, %end, %winth);
%end=%xMinSPC%yMinSPC%zMax;
%editor.renderLine(%start, %end, %winth);
%start=%xMaxSPC%yMinSPC%zMax;
%editor.renderLine(%start, %end, %winth);
%end=%xMaxSPC%yMinSPC%zMin;
%editor.renderLine(%start, %end, %winth);
%start=%xMaxSPC%yMaxSPC%zMin;
%editor.renderLine(%start, %end, %winth);
%end=%xMaxSPC%yMaxSPC%zMax;
%editor.renderLine(%start, %end, %winth);
%start=%xMaxSPC%yMinSPC%zMax;
%editor.renderLine(%start, %end, %winth);
%start=%xMinSPC%yMaxSPC%zMax;
%editor.renderLine(%start, %end, %winth);
%end=%xMinSPC%yMinSPC%zMax;
%editor.renderLine(%start, %end, %winth);
%end=%xMinSPC%yMaxSPC%zMin;
%editor.renderLine(%start, %end, %winth);
%start=%xMinSPC%yMinSPC%zMin;
%editor.renderLine(%start, %end, %winth);
%start=%xMaxSPC%yMaxSPC%zMin;
%editor.renderLine(%start, %end, %winth);
}
}
