| 1 | import sys |
|---|
| 2 | import traceback |
|---|
| 3 | import pyglet |
|---|
| 4 | from pyglet.gl import * |
|---|
| 5 | sys.path.insert(0, "../trunk/hfall") |
|---|
| 6 | sys.path.insert(0, "../trunk/hfall/UI") |
|---|
| 7 | sys.path.insert(0, "../trunk/hfall/Engine") |
|---|
| 8 | sys.path.insert(0, "../trunk/hfall/Parser") |
|---|
| 9 | import ctypes |
|---|
| 10 | import array |
|---|
| 11 | import base |
|---|
| 12 | import OGLbase |
|---|
| 13 | from UI import * |
|---|
| 14 | import Render |
|---|
| 15 | import AddModel |
|---|
| 16 | import Mesh |
|---|
| 17 | import Model |
|---|
| 18 | import ModelLoader |
|---|
| 19 | import MaterialManager |
|---|
| 20 | import ModelManager |
|---|
| 21 | import TextureManager |
|---|
| 22 | import Bitmap |
|---|
| 23 | import Light |
|---|
| 24 | import Terrain |
|---|
| 25 | import math |
|---|
| 26 | from base import kernel as hfk |
|---|
| 27 | |
|---|
| 28 | class drawer(base.Task): |
|---|
| 29 | def __init__(self): |
|---|
| 30 | self._vertexes = [] |
|---|
| 31 | self._faces = [] |
|---|
| 32 | # self.mesh = [] |
|---|
| 33 | # self.materialmng = None |
|---|
| 34 | # self.modelmng = None |
|---|
| 35 | # self.texturemng = None |
|---|
| 36 | # self.model = None |
|---|
| 37 | # self.Loader = None |
|---|
| 38 | pass |
|---|
| 39 | |
|---|
| 40 | def start(self, kernel): |
|---|
| 41 | kernel.log.msg("Drawer started"); |
|---|
| 42 | |
|---|
| 43 | AddModel.init(render) |
|---|
| 44 | # creature = AddModel.add_model("models/creature.3ds", [0, 0, -20, 1]) |
|---|
| 45 | # AddModel.scale_model(creature, [18.0, 18.0, 18.0]) |
|---|
| 46 | |
|---|
| 47 | #atrium = AddModel.add_model("models/atrium.3ds") |
|---|
| 48 | #AddModel.scale_model(atrium, [0.1, 0.1, 0.1]) |
|---|
| 49 | |
|---|
| 50 | ## light1 = Light.Spotlight( GL_LIGHT1, \ |
|---|
| 51 | ## rLightSpecular = [1.0, 1.0, 1.0, 1.0],\ |
|---|
| 52 | ## rLightAmbient = [.9, .9, .9, 1.0],\ |
|---|
| 53 | ## rLightDiffuse = [1.0, 0.0, 0.0, 1.0],\ |
|---|
| 54 | ## rLightPosition = [0.0, 38, -10.0, 1.0],\ |
|---|
| 55 | ## ca = 1.0, la = 0.01, qa = 0.0) |
|---|
| 56 | ## light1.enableAttenuation() |
|---|
| 57 | ## render.addLight(light1) |
|---|
| 58 | ## |
|---|
| 59 | ## light2 = Light.Light( GL_LIGHT2, \ |
|---|
| 60 | ## rLightSpecular = [1.0, 1.0, 1.0, 1.0],\ |
|---|
| 61 | ## rLightAmbient = [1.9, 1.9, 1.9, 1.9],\ |
|---|
| 62 | ## rLightDiffuse = [0.0, 0.0, 1.0, 1.0],\ |
|---|
| 63 | ## rLightPosition = [0.0, 30, -10.0, 1.0]) |
|---|
| 64 | ## light2.enableAttenuation() |
|---|
| 65 | ## render.addLight(light2) |
|---|
| 66 | #''' |
|---|
| 67 | #This is an example of terrain rendering |
|---|
| 68 | AddModel.add_model("models/machinegun/3dm-q3machinegun.3ds", [0, 10, 10]) |
|---|
| 69 | terrain = Terrain.Terrain() |
|---|
| 70 | patch = Terrain.TerrainPatch(x_origin = -64) |
|---|
| 71 | patch.opreparebuffers() |
|---|
| 72 | patch.makeVisible() |
|---|
| 73 | terrain.addPatch(patch) |
|---|
| 74 | hf = Terrain.HeightField() |
|---|
| 75 | for x in range(65): |
|---|
| 76 | for y in range(65): |
|---|
| 77 | hf.setHeight(x, y, 10* (math.exp(math.sin(x/13.0)))) |
|---|
| 78 | patch = Terrain.TerrainPatch(hfield = hf) |
|---|
| 79 | patch.opreparebuffers() |
|---|
| 80 | patch.makeVisible() |
|---|
| 81 | terrain.addPatch(patch)# |
|---|
| 82 | terrain.Enable() |
|---|
| 83 | render.terrain = terrain |
|---|
| 84 | #model = Test.TTest() |
|---|
| 85 | #render.testmodel = model |
|---|
| 86 | |
|---|
| 87 | def stop(self, kernel): |
|---|
| 88 | pass |
|---|
| 89 | |
|---|
| 90 | def pause(self, kernel): |
|---|
| 91 | pass |
|---|
| 92 | |
|---|
| 93 | def resume(self, kernel): |
|---|
| 94 | pass |
|---|
| 95 | |
|---|
| 96 | def run(self, kernel): |
|---|
| 97 | pass |
|---|
| 98 | |
|---|
| 99 | def name(self): |
|---|
| 100 | return "drawer" |
|---|
| 101 | |
|---|
| 102 | render = Render.Render(800, 600, posx = 0, posy = 0, posz = -100, far = 10000) |
|---|
| 103 | hfk.insert(drawer()) |
|---|
| 104 | hfk.insert(render) |
|---|
| 105 | hfk.insert(UI(render)) |
|---|
| 106 | hfk.run() |
|---|