//*** Render Method private void SetupScene(IntPtr hWnd) { TV_3DVECTOR Min = new TV_3DVECTOR(); TV_3DVECTOR Max = new TV_3DVECTOR(); TV_3DVECTOR Offset = new TV_3DVECTOR(); TV_3DVECTOR SphereCenter = new TV_3DVECTOR(); TV_3DVECTOR posVector = new TV_3DVECTOR(); TV = new TVEngine(); Scene = new TVScene(); Cam = new TVCamera(); TF = new TVTextureFactory(); Mats = new TVMaterialFactory(); Lights = new TVLightEngine(); Maths = new TVMathLibrary(); //Initialize the TV engine TV.SetDebugFile(Application.StartupPath + "\\debug.txt"); TV.Init3DWindowed(hWnd, true); TV.SetSearchDirectory(Application.StartupPath); TV.SetAngleSystem(CONST_TV_ANGLE.TV_ANGLE_DEGREE); // use degree system Scene.SetBackgroundColor(0.6f, 0.6f, 0.6f); //Load the texture into the integer ID holder FloorTex = TF.LoadTexture("smallGrid.bmp", "Grid", -1, -1, CONST_TV_COLORKEY.TV_COLORKEY_NO, true); WallTex = TF.LoadTexture("smallGridWall.bmp", "Wall", -1, -1, CONST_TV_COLORKEY.TV_COLORKEY_NO, true); Room = Scene.CreateMeshBuilder("Room"); Room.AddFloor(FloorTex, -300.0f, -300.0f, 300.0f, 300.0f, 0, 15.0f, 15.0f, true); Room.AddWall(WallTex, -300.0f, 300.0f, 300.0f, 300.0f, 400.0f, 0, 15.0f, 15.0f, true); Room.AddWall(WallTex, 300.0f, -300.0f, -300.0f, -300.0f, 400.0f, 0, 15.0f, 15.0f, true); Room.AddWall(WallTex, 300.0f, 300.0f, 300.0f, -300.0f, 400.0f, 0, 15.0f, 15.0f, true); Room.AddWall(WallTex, -300.0f, -300.0f, -300.0f, 300.0f, 400.0f, 0, 15.0f, 15.0f, true); //ShowVector("RoomLocal", Room.GetPosition()); //ShowVector("RoomWorld", Room.GetWorldPosition(Room.GetPosition())); SensorNode = Scene.CreateMeshBuilder("SensorNode"); SensorNode.LoadXFile("N70.X", true, true); SensorNode.SetParent(CONST_TV_NODETYPE.TV_NODETYPE_MESH, Room.GetIndex(), 1); SensorNode.SetPosition(0.0f, 150.0f, 0.0f); TV_3DVECTOR oriScale = SensorNode.GetScale(); SensorNode.SetScale(oriScale.x, oriScale.y, oriScale.z * 1.5f); SensorNode.SetLightingMode(CONST_TV_LIGHTINGMODE.TV_LIGHTING_NORMAL, 0, 1); SensorNode.SetRotation(90.0f, 0.0f, 0.0f); //SensorNode.GetBoundingBox(ref Min, ref Max, true); //SensorNode.ShowBoundingBox(true); //ShowVector("MoteLocal", SensorNode.GetPosition()); //ShowVector("MoteWorld", Room.GetWorldPosition(SensorNode.GetPosition())); //WiimoteMesh = Scene.CreateMeshBuilder("Wiimote"); //WiimoteMesh.LoadXFile("Wiimote.X", true, true); //TV_3DVECTOR oriScale = WiimoteMesh.GetScale(); //WiimoteMesh.SetScale(oriScale.x * 0.15f, oriScale.y * 0.15f, oriScale.z * 0.15f); //WiimoteMesh.SetPosition(0.0f, 70.0f, 0.0f); //WiimoteMesh.SetLightingMode(CONST_TV_LIGHTINGMODE.TV_LIGHTING_NORMAL, 0, 1);//Tell TV we want normal, per-vertex, lighting with 1 point light. Cam.SetParent(CONST_TV_NODETYPE.TV_NODETYPE_MESH, Room.GetIndex(), 0); Cam.SetPosition(0.0f, 250.0f, 200.0f); Cam.LookAtMesh(SensorNode); //ShowVector("CamLocal", Cam.GetPosition()); //ShowVector("CamWorld", Room.GetWorldPosition(Cam.GetPosition())); //Create a point light. Again, these can be more complex. IDLight = Lights.CreatePointLight(new TV_3DVECTOR(0.0f, 250.0f, 200.0f), 0.9f, 0.9f, 0.9f, 250.0f); IDBackLight = Lights.CreatePointLight(new TV_3DVECTOR(0.0f, 250.0f, -200.0f), 0.1f, 0.1f, 0.1f, 250.0f); Lights.SetSpecularLighting(false); }