from objc_util import *
import ctypes
import ui
import math
from ImageColor import getrgb
import os
load_framework('SceneKit')
SCNView, SCNScene, SCNBox, SCNNode, SCNSceneSource, SCNMaterial, SCNCamera, SCNLight, SCNAction, SCNLookAtConstraint = map(ObjCClass, ['SCNView', 'SCNScene', 'SCNBox', 'SCNNode', 'SCNSceneSource', 'SCNMaterial', 'SCNCamera', 'SCNLight', 'SCNAction', 'SCNLookAtConstraint' ])
@on_main_thread
def demo():
main_view = ui.View()
w, h = ui.get_screen_size()
main_view.frame = (0,0,w,h)
main_view_objc = ObjCInstance(main_view)
scene_view = SCNView.alloc().initWithFrame_options_(((0, 0),(w, h)), None).autorelease()
# transparent scene_view background, thus we see main_view background
scene_view.setBackgroundColor_(ObjCClass('UIColor').clearColor())
scene_view.setAutoresizingMask_(18)
scene_view.setAllowsCameraControl_(True)
main_view_objc.addSubview_(scene_view)
main_view.name = 'SceneKit Demo'
scene = SCNScene.sceneWithURL_options_(nsurl('double-cheese-burger.scn'),None)
scene_view.setScene_(scene)
rotate_action = SCNAction.repeatActionForever_(SCNAction.rotateByX_y_z_duration_(0, math.pi*2, 0, 10))
root_node = scene.rootNode()
for node in root_node.childNodes():
if str(node.name()) != 'camera':
node.runAction_(rotate_action)
main_view.present(hide_title_bar=True)
demo()