Surprised that works, but thanks.
datablock StaticShapeData(CubeShapeData)
{
shapeFile = "./cube/cube.dts";
};
datablock StaticShapeData(CubeCollisionShapeData)
{
shapeFile = "./cube/cube_collision.dts";
};
datablock StaticShapeData(CubeGlowShapeData)
{
shapeFile = "./cube/cube_glow.dts";
};
datablock StaticShapeData(CubeGlowCollisionShapeData)
{
shapeFile = "./cube/cube_glow_collision.dts";
};
datablock StaticShapeData(ConeShapeData)
{
shapeFile = "./cone/cone.dts";
};
datablock StaticShapeData(ConeCollisionShapeData)
{
shapeFile = "./cone/cone_collision.dts";
};
...
function createShape(%dataBlock, %color)
{
if (%dataBlock $= "")
{
%dataBlock = CubeShapeData;
}
%obj = new StaticShape()
{
dataBlock = %dataBlock;
};
MissionCleanup.add(%obj);
if (%color !$= "")
{
%obj.setNodeColor("ALL", %color);
}
return %obj;
}
function StaticShape::transformLine(%this, %a, %b, %size)
{
if (%size $= "")
{
%size = 0.2;
}
%vector = vectorNormalize(vectorSub(%b, %a));
%xyz = vectorNormalize(vectorCross("1 0 0", %vector));
%u = mACos(vectorDot("1 0 0", %vector)) * -1;
%this.setTransform(vectorScale(vectorAdd(%a, %b), 0.5) SPC %xyz SPC %u);
%this.setScale(vectorDist(%a, %b) SPC %size SPC %size);
}
function StaticShape::transformCube(%this, %transform, %size)
{
%this.setTransform(%position);
%this.setScale(%size SPC %size SPC %size);
}
function StaticShape::transformWorldBox(%this, %box)
{
%neg = getWords(%box, 0, 2);
%pos = getWords(%box, 3, 5);
%x1 = getWord(%neg, 0);
%y1 = getWord(%neg, 1);
%z1 = getWord(%neg, 2);
%x2 = getWord(%pos, 0);
%y2 = getWord(%pos, 1);
%z2 = getWord(%pos, 2);
%xd = %x2 - %x1;
%yd = %y2 - %y1;
%zd = %z2 - %z1;
%rot = getWords(matrixCreateFromEuler(0 SPC 0 SPC 0 SPC $pi / 2), 3, 6);
%this.setTransform(%x1 + %xd / 2 SPC %y1 + %yd / 2 SPC %z1 + %zd / 2 SPC %rot);
%this.setScale(%xd SPC %yd SPC %zd);
}