Example #1
0
int CLuaUnitScript::GetPieceRotation(lua_State* L)
{
	if (activeScript == NULL)
		return 0;

	LocalModelPiece* piece = ParseLocalModelPiece(L, activeScript, __FUNCTION__);
	return ToLua(L, piece->GetRotation());
}
Example #2
0
int CLuaUnitScript::GetPieceTranslation(lua_State* L)
{
	if (activeScript == NULL)
		return 0;

	LocalModelPiece* piece = ParseLocalModelPiece(L, activeScript, __FUNCTION__);
	return ToLua(L, piece->GetPosition() - piece->original->offset);
}
Example #3
0
void CUnitScript::TurnNow(int piece, int axis, float destination)
{
	if (!PieceExists(piece)) {
		ShowScriptError("Invalid piecenumber");
		return;
	}

	LocalModelPiece* p = pieces[piece];
	float3 rot = p->GetRotation();
	rot[axis] = destination;
	p->SetRotation(rot);
}
Example #4
0
void CUnitScript::MoveNow(int piece, int axis, float destination)
{
	if (!PieceExists(piece)) {
		ShowScriptError("Invalid piecenumber");
		return;
	}

	LocalModelPiece* p = pieces[piece];
	float3 pos = p->GetPosition();
	pos[axis] = pieces[piece]->original->offset[axis] + destination;
	p->SetPosition(pos);
}
Example #5
0
int CLuaUnitScript::GetPiecePosDir(lua_State* L)
{
	if (activeScript == NULL) {
		return 0;
	}
	LocalModelPiece* piece = ParseLocalModelPiece(L, activeScript, __FUNCTION__);
	float3 pos, dir;
	if (!piece->GetEmitDirPos(pos, dir)) {
		return 0;
	}
	ToLua(L, pos); ToLua(L, dir);
	return 6;
}
Example #6
0
LocalModelPiece* LocalModel::CreateLocalModelPieces(const S3DModelPiece* mpParent, size_t pieceNum)
{
	LocalModelPiece* lmpParent = new LocalModelPiece(mpParent);
	pieces.push_back(lmpParent);

	LocalModelPiece* lmpChild = NULL;
	for (unsigned int i = 0; i < mpParent->GetChildCount(); i++) {
		lmpChild = CreateLocalModelPieces(mpParent->GetChild(i), ++pieceNum);
		lmpChild->SetParent(lmpParent);
		lmpParent->AddChild(lmpChild);
	}

	return lmpParent;
}