Apologies for missing a Thursday. Rest assured that development is making strides. Today I want to give you an idea of what the scripts team has been up to. Development is more than mapping and textures. One must remember the intensive coding that goes into it! Below are some examples.
Exhibit A:
void Handle_Node_Rotation_Non_Aligned(NodeClass *n, Matrix3D &m1, Matrix3D &m2)
{
if (!n->Is_Locked())
{
Matrix3D tm = n->Get_Transform();
Matrix3D tm2;
m2.Get_Orthogonal_Inverse(tm2);
Matrix3D tm3;
Matrix3D::Multiply(tm2, tm, &tm3);
Matrix3D::Multiply(m2, m1, &tm);
Matrix3D::Multiply(tm, tm3, &tm);
if (!tm.Is_Orthogonal())
{
tm.Re_Orthogonalize();
}
n->Set_Transform(tm);
}
}
and Exhibit B:
void TerrainNode::Create_Proxy_Objects(DynamicVectorClass<ProxyClass> &vector)
{
for (int i = 0; i < vector.Count(); i++)
{
Matrix3D transform = vector[i].Get_Transform();
StringClass str = vector[i].Get_Name();
PresetClass *p = PresetMgrClass::Find_Named_Preset(str);
if (!p)
{
StringClass strx;
strx.Format("Unable to find preset for placeholder %s.\r\n",str.Peek_Buffer());
OutputDebugStringA(strx);
continue;
}
NodeClass *n = Create_Node(p, &transform, 0, false);
if (n)
{
n->Set_Align_Rotation_Z(false);
n->Set_Node_Embedded(true);
if (n->Get_Phys() || n->Class_ID() == NODE_CLASSID_TERRAIN)
{
Matrix3D m1(true);
Matrix3D m2x(true);
Handle_Rotation(n, m1, m2x);
n->Set_Is_Locked(true);
Our scripts team looks at this kind of stuff on a daily basis. Without their assistance and expertise, who knows where our games would be. We can't thank them enough for all they do.
We'll have more to show you next update! You should know the above scripts is related to this image here. The keyword is scaling.
See you next Thursday!
[blurb]Apologies for missing a Thursday. Rest assured that development is making strides. Today I want to give you an idea of what the scripts team has been up to.[/blurb]