也许你想在碰到物体或选择物体的时候让它突出显示,通过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
=
%xMin
SPC
%yMin
SPC
%zMin
;
%end
=
%xMax
SPC
%yMin
SPC
%zMin
;
%editor
.
renderLine(
%start
,
%end
,
%winth
);
%end
=
%xMin
SPC
%yMin
SPC
%zMax
;
%editor
.
renderLine(
%start
,
%end
,
%winth
);
%start
=
%xMax
SPC
%yMin
SPC
%zMax
;
%editor
.
renderLine(
%start
,
%end
,
%winth
);
%end
=
%xMax
SPC
%yMin
SPC
%zMin
;
%editor
.
renderLine(
%start
,
%end
,
%winth
);
%start
=
%xMax
SPC
%yMax
SPC
%zMin
;
%editor
.
renderLine(
%start
,
%end
,
%winth
);
%end
=
%xMax
SPC
%yMax
SPC
%zMax
;
%editor
.
renderLine(
%start
,
%end
,
%winth
);
%start
=
%xMax
SPC
%yMin
SPC
%zMax
;
%editor
.
renderLine(
%start
,
%end
,
%winth
);
%start
=
%xMin
SPC
%yMax
SPC
%zMax
;
%editor
.
renderLine(
%start
,
%end
,
%winth
);
%end
=
%xMin
SPC
%yMin
SPC
%zMax
;
%editor
.
renderLine(
%start
,
%end
,
%winth
);
%end
=
%xMin
SPC
%yMax
SPC
%zMin
;
%editor
.
renderLine(
%start
,
%end
,
%winth
);
%start
=
%xMin
SPC
%yMin
SPC
%zMin
;
%editor
.
renderLine(
%start
,
%end
,
%winth
);
%start
=
%xMax
SPC
%yMax
SPC
%zMin
;
%editor
.
renderLine(
%start
,
%end
,
%winth
);
}
}