Torquescript学习笔记:画物体的包围盒

本文介绍如何使用TorqueScript中的EditTSCtrl类的绘制函数来突出显示物体的包围盒,包括获取物体坐标并利用这些坐标绘制线条以形成包围盒。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  
        也许你想在碰到物体或选择物体的时候让它突出显示,通过shapebase类的getworldbox()函数能够取到它的包围盒的六个坐标(三个坐标轴的最大、最小值),查找torquescript的帮助文档,只有EditTSCtrl类有绘制方面的函数,分别如下:
void EditTSCtrl::renderSphere
Point3F 
pos,
 
 
float 
radius[, int subdivisions]
 
 
 
 
 
 
void EditTSCtrl::renderCircle
Point3F 
pos,
 
 
Point3F 
normal,
 
 
float 
radius,
 
 
int 
segments = NULL
 
 
 
 
 
 
void EditTSCtrl::renderTriangle
Point3F 
a,
 
 
Point3F 
b,
 
 
Point3F 
c
 
 
 
 
 
 
void EditTSCtrl::renderLine
Point3F 
start,
 
 
Point3F 
end,
 
 
int 
width
 
 
而且只有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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值