# -*- indent-tabs-mode: t -*-

#!BPY
"""
Name: 'Soya2Blender'
Blender: 236
Group: 'Import'
Tooltip: 'Import Soya worlds in Blender.'
"""

# Soya 3D
# Copyright (C) 2005 Jean-Baptiste LAMY -- jiba@tuxfamily.org
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

import soya
import Blender


def import_soya_model(model):
	scene = soya.World()
	scene.add(model)
	model.rotate_x(90.0)
	
	mesh = Blender.NMesh.New(model.filename or "")
	
	for i in model.recursive():
		print i
		
		if isinstance(i, soya.Face):
			vertices = []
			for v in i.vertices:
				p = v % scene
				vertex = Blender.NMesh.Vert(p.x, p.y, p.z)
				mesh.verts.append(vertex)
				vertices.append(vertex)
			face = Blender.NMesh.Face(vertices)
			for j in range(len(i.vertices)):
				face.uv.append((i.vertices[j].tex_x, 1.0 - i.vertices[j].tex_y))
				
			if i.smooth_lit:   face.smooth = 1
			if i.double_sided: face.mode |= Blender.NMesh.FaceModes.TWOSIDE
			# XXX TODO vertex color
			
			if i.material.texture:
				face.image = Blender.Image.Load(i.material.texture.filename)
				
			mesh.faces.append(face)
			print face
			
	#obj = Blender.Object.New("Mesh")
	#obj.link(mesh)
	#Blender.Scene.getCurrent().link(obj)
	Blender.NMesh.PutRaw(mesh)


soya.path.append("/home/jiba/src/balazar")
soya.path.append("/home/jiba/src/slune")

import_soya_model(soya.World.get("echassien"))
