Exemplo n.º 1
0
class myscene(bee.frame):
    pandaclassname_ = bee.get_parameter("pandaclassname")
    pandaname_ = bee.get_parameter("pandaname")

    c1 = bee.configure("scene")
    c1.import_mesh_EGG("models/environment")
    a = NodePath("")
    a.setScale(0.25)
    a.setPos(-8, 42, 0)
    mat = a.getMat()
    m = (mat.getRow3(3), mat.getRow3(0), mat.getRow3(1), mat.getRow3(2))
    c1.add_model_MATRIX(matrix=m)

    c2 = bee.configure("scene")
    c2.import_mesh_EGG("models/panda-model")
    a = NodePath("")
    a.setScale(0.005)
    mat = a.getMat()
    m = (mat.getRow3(3), mat.getRow3(0), mat.getRow3(1), mat.getRow3(2))
    c2.add_actor_MATRIX(matrix=m, entityname=pandaname_)
    c2.import_mesh_EGG("models/panda-walk4")
    c2.add_animation("walk")

    c3 = bee.configure("scene")
    c3.import_mesh_EGG("models/panda-model")
    a = NodePath("")
    a.setScale(0.005)
    mat = a.getMat()
    m = (mat.getRow3(3), mat.getRow3(0), mat.getRow3(1), mat.getRow3(2))
    c3.add_actorclass_MATRIX(matrix=m, actorclassname=pandaclassname_)
    c3.import_mesh_EGG("models/panda-walk4")
    c3.add_animation("walk")

    del a, m, mat
Exemplo n.º 2
0
def show_datablock(b):
    cf = configure("scene")
    cf.start_block(b.pname, mode="datablock")
    cf.import_from_parentblock("materials")
    cf2 = b.object[0].make_bee()
    cf3 = configure("scene")
    cf3.end_block()
    return multiconfigure(cf, cf2, cf3)
Exemplo n.º 3
0
def show_objectgroup(og):
    cf = configure("scene")
    cf.start_block(mode="compile")
    cf.import_from_parentblock("materials")
    cf2 = og.group.make_bee()
    cf3 = configure("scene")
    cf3.render_block_SPYDER(axissystem=og.axis)
    cf3.end_block()
    return multiconfigure(cf, cf2, cf3)
Exemplo n.º 4
0
def show_entityclass(e):
    cf = configure("scene")
    cf.start_block(mode="compile")
    cf.import_from_parentblock("materials")
    cf2 = e.objects.make_bee()
    cf3 = configure("scene")
    cf3.add_block_entityclass(entityclassname=e.entityclassname, material=e.material)
    cf3.end_block()
    return multiconfigure(cf, cf2, cf3)
Exemplo n.º 5
0
def show_entity(e):
    cf = configure("scene")
    cf.start_block(mode="compile")
    cf.import_from_parentblock("materials")
    cf2 = e.objects.make_bee()
    cf3 = configure("scene")
    cf3.render_block_SPYDER(entityname=e.entityname)
    cf3.end_block()
    return multiconfigure(cf, cf2, cf3)
Exemplo n.º 6
0
def show_multi_entity_instance(mi):
    cf = configure("scene")
    cf.start_block(mode="compile")
    cf.import_from_parentblock("materials")
    cf2 = mi.object.make_bee()
    cf3 = configure("scene")
    for axis, entityname in zip(mi.instances, mi.entitynames):
        cf3.render_block_SPYDER(axissystem=axis, entityname=entityname)
    cf3.end_block()
    return multiconfigure(cf, cf2, cf3)
Exemplo n.º 7
0
def show_objectlist3d(ol):
    cf = configure("scene")
    cf.start_block()
    cf.import_from_parentblock("materials")
    configures = [cf]
    for o in ol:
        configures.append(o.make_bee())
    cf = configure("scene")
    cf.end_block()
    configures.append(cf)
    return multiconfigure(configures)
Exemplo n.º 8
0
    class pandalogichive(bee.frame):
        do_set_panda = dragonfly.std.pushconnector("id")()
        set_panda = bee.output(do_set_panda.outp)

        do_trig_spawn = dragonfly.std.pushconnector("trigger")()
        trig_spawn = bee.output(do_trig_spawn.outp)

        c_hivereg = bee.configure("hivereg")

        for name in pandadict:
            mode, data, box, image, hivemap = pandadict[name]

            hive = load_hive(hivemap)
            c_hivereg.register_hive(name, hive)

            locals()["v_panda_" + name] = dragonfly.std.variable("id")(name)
            locals()["set_panda_" + name] = dragonfly.std.transistor("id")()
            connect("v_panda_" + name, "set_panda_" + name)
            connect("set_panda_" + name, do_set_panda)

            locals()["pandaicon_click_" + name] = dragonfly.io.mouseareasensor(name)
            connect("pandaicon_click_" + name, "set_panda_" + name)
            connect("pandaicon_click_" + name, do_trig_spawn)

        del name, hive
        del mode, data, box, image, hivemap
Exemplo n.º 9
0
def show_object(obj):
    # only works for objects without face-specific materials
    #TODO: texturecoords

    cf = configure("scene")
    cf.start_block()
    cf.import_from_parentblock("materials")
    vertices = [(c.x, c.y, c.z) for c in obj.vertices]
    faces = [tuple(f.vertices) for f in obj.faces]
    normals = []
    for f in obj.faces:
        normal = f.normal
        if f.normal is None:
            verts = [obj.vertices[n] for n in f.vertices]
            normal = spyder.tarantula.calc_normal(verts)
        normals.append((normal.x, normal.y, normal.z))
    if obj.lighting == "flat":
        normals = None  ###
        cf.create_mesh_per_face("mesh", vertices, faces, normals, None, None, None, obj.material)
    else:
        vertexnormals = []
        for vnr in range(len(vertices)):
            avgnormal = Spyder.Coordinate(0, 0, 0)
            for fnr, f in enumerate(faces):
                if vnr in f: avgnormal += normals[fnr]
            avgnormal = avgnormal.normalize()
            vertexnormals.append((avgnormal.x, avgnormal.y, avgnormal.z))
        cf.create_mesh_per_vertex("mesh", vertices, vertexnormals, None, None, faces, obj.material)

    cf.add_model_SPYDER("mesh", "model", axissystem=obj.axis)
    cf.end_block()
    return cf
Exemplo n.º 10
0
class myscene(bee.frame):
    pandaclassname_ = bee.get_parameter("pandaclassname")
    pandaname_ = bee.get_parameter("pandaname")
    pandaicon_ = bee.get_parameter("pandaicon")

    c1 = bee.configure("scene")
    c1.import_mesh_EGG("models/environment")
    a = NodePath("")
    a.setScale(0.25)
    a.setPos(-8, 42, 0)
    mat = a.getMat()
    m = (mat.getRow3(3), mat.getRow3(0), mat.getRow3(1), mat.getRow3(2))
    c1.add_model_MATRIX(matrix=m)

    c2 = bee.configure("scene")
    c2.import_mesh_EGG("models/panda-model")
    a = NodePath("")
    a.setScale(0.005)
    mat = a.getMat()
    m = (mat.getRow3(3), mat.getRow3(0), mat.getRow3(1), mat.getRow3(2))
    c2.add_actor_MATRIX(matrix=m, entityname=pandaname_)
    c2.import_mesh_EGG("models/panda-walk4")
    c2.add_animation("walk")

    c3 = bee.configure("scene")
    c3.import_mesh_EGG("models/panda-model")
    a = NodePath("")
    a.setScale(0.005)
    mat = a.getMat()
    m = (mat.getRow3(3), mat.getRow3(0), mat.getRow3(1), mat.getRow3(2))
    c3.add_actorclass_MATRIX(matrix=m, actorclassname=pandaclassname_)
    c3.import_mesh_EGG("models/panda-walk4")
    c3.add_animation("walk")

    box = box2d(50, 470, 96, 96)
    params = parameters()
    params.transparency = True
    args = canvasargs("pandaicon.png", pandaicon_, box, params)
    plugin = plugin_single_required(args)
    pattern = ("canvas", "draw", "init", ("object", "image"))
    d1 = dummydrone(plugindict={pattern: plugin})

    i1 = bee.init("mousearea")
    i1.register(pandaicon_, box)

    del a, m, mat, box, params, args, plugin, pattern
Exemplo n.º 11
0
def show_panda(c):
    cf = bee.configure("scene")
    cf.import_mesh_EGG("models/panda-model")
    a = Spyder.AxisSystem()
    a *= 0.001
    a.origin = c
    cf.add_model_SPYDER(axissystem=a)
    return cf
Exemplo n.º 12
0
def show_model(m):
    cf = configure("scene")
    cf.start_block()
    cf.import_from_parentblock("materials")
    if m.meshformat != "egg": raise ValueError("panda can render only egg/bam meshes, not '%s'" % m.meshformat)
    cf.import_mesh_EGG(m.meshfilename)
    cf.add_model_SPYDER(modelname="model", axissystem=m.axis, material=m.material, entityname=m.entityname)
    cf.end_block()
    return cf
Exemplo n.º 13
0
class main(dragonfly.pandahive.pandahive):
    blocks = blocks
    gridx = 10
    gridy = 20
    mainarea = box2d(100, 150, 225, 375)
    mainarea_id = "main"
    mainarea_parameters = parameters(color=(0.5, 0.5, 0.5, 0))
    scorearea = box2d(170, 100, 80, 40)
    scorearea_id = "score"

    canvas = dragonfly.pandahive.pandacanvas()

    blocks_ = attribute("blocks")
    gridx_ = attribute("gridx")
    gridy_ = attribute("gridy")
    mainarea_ = attribute("mainarea")
    mainarea_parameters_ = attribute("mainarea_parameters")
    mainarea_id_ = attribute("mainarea_id")
    scorearea_ = attribute("scorearea")
    scorearea_id_ = attribute("scorearea_id")

    c0 = configure("canvas")  # must have a lower-alphabet name than "canvas"
    c0.reserve(mainarea_id_, ("object", "bgrid"),
               box=mainarea_,
               parameters=mainarea_parameters_)

    maingrid = dragonfly.std.variable(("object", "bgrid"))(emptygrid)
    maingridcontrol = dragonfly.grid.bgridcontrol()
    connect(maingrid, maingridcontrol.grid)

    blockgrid = dragonfly.std.variable(("object", "bgrid"))(emptygrid)
    blockgridcontrol = dragonfly.grid.bgridcontrol()
    connect(blockgrid, blockgridcontrol.grid)

    select_block = tetris_select_block(blocks=blocks_)
    connect(select_block, blockgridcontrol.set)
    init_main = tetris_init_main(gridx_, gridy_)
    connect(init_main, maingridcontrol.set)
    draw = tetris_draw()
    connect(maingrid, draw.maingrid)
    connect(blockgrid, draw.blockgrid)

    control = tetris_control()
    connect(maingrid, control.maingrid)
    connect(blockgrid, control.blockgrid)

    start = dragonfly.sys.startsensor()
    connect(start, select_block)
    connect(start, init_main.start)
    connect(start, control.place_init)
    connect(start, draw.start)
    connect(start, draw.draw)

    raiser = bee.raiser()
    connect("evexc", raiser)
Exemplo n.º 14
0
class myscene(bee.frame):
    pandaclassname_ = bee.get_parameter("pandaclassname")
    pandaname_ = bee.get_parameter("pandaname")
    pandaicon_ = bee.get_parameter("pandaicon")

    c1 = bee.configure("scene")
    c1.import_mesh_EGG("models/environment")
    a = Spyder.AxisSystem()
    a *= 0.25
    a.origin += (-8, 42, 0)
    c1.add_model_SPYDER(axissystem=a)

    c2 = bee.configure("scene")
    c2.import_mesh_EGG("models/panda-model")
    a = Spyder.AxisSystem()
    a *= 0.005
    c2.add_actor_SPYDER(axissystem=a, entityname=pandaname_)
    c2.import_mesh_EGG("models/panda-walk4")
    c2.add_animation("walk")

    c3 = bee.configure("scene")
    c3.import_mesh_EGG("models/panda-model")
    a = Spyder.AxisSystem()
    a *= 0.005
    c3.add_actorclass_SPYDER(axissystem=a, actorclassname=pandaclassname_)
    c3.import_mesh_EGG("models/panda-walk4")
    c3.add_animation("walk")

    box = box2d(50, 470, 96, 96)
    params = parameters()
    params.transparency = True
    args = canvasargs("pandaicon.png", pandaicon_, box, params)
    plugin = plugin_single_required(args)
    pattern = ("canvas", "draw", "init", ("object", "image"))
    d1 = dummydrone(plugindict={pattern: plugin})

    i1 = bee.init("mousearea")
    i1.register(pandaicon_, box)

    del a, box, params, args, plugin, pattern
Exemplo n.º 15
0
def show_actorclass(a):
    cf = configure("scene")
    cf.start_block()
    cf.import_from_parentblock("materials")
    if a.meshformat != "egg": raise ValueError("panda can render only egg/bam meshes, not '%s'" % a.meshformat)
    cf.import_mesh_EGG(a.meshfilename)
    cf.add_actorclass_SPYDER(a.actorclassname, axissystem=a.axis, material=a.material)
    for m in a.animations:
        # TODO check if every name is used only once
        if m.format != "egg": raise ValueError("panda can render only egg/bam meshes, not '%s'" % m.format)
        cf.import_mesh_EGG(m.filename)
        cf.add_animation(m.pname)
    cf.end_block()
    return cf
Exemplo n.º 16
0
class pandalogichive2(pandalogichive):
    c_hivereg = bee.configure("hivereg")

    for name in pandadict:
        mode, data, box, image, hivemap = pandadict[name]

        hive = load_hive(hivemap)
        c_hivereg.register_hive(name, hive)

        p = pandalogicframe(name)
        connect(p.set_panda, "do_set_panda")
        connect(p.trig_spawn, "do_trig_spawn")
        locals()["pandalogicframe_%s" % name] = p

    del mode, data, box, image, hivemap, hive, p, name
Exemplo n.º 17
0
def reserve_slot(slot):
  import bee
  from bee.types import stringtupleparser
  from dragonfly.canvas import box2d
  c = bee.configure(slot.canvasname)
  b = slot.box
  box = box2d(b.x, b.y, b.sizex, b.sizey, b.mode)
  params = None
  col = slot.color
  if col is not None:
    params = parameters(color=(col.r,col.g,col.b,col.a))
  c.reserve (
   slot.slotname,
   stringtupleparser(slot.slottype),
   box=box,
   parameters=params,
  )
  return c
Exemplo n.º 18
0
    def make_combo(self):
        pandas = []
        c_hivereg = bee.configure("hivereg")
        pandalogics = [c_hivereg]
        for name in pandadict:
            panda = pandadict[name]
            pandasceneframe = generate_pandasceneframe(name, panda)(
                scene="scene", canvas="canvas", mousearea="mousearea")
            pandas.append(pandasceneframe)

            mode, data, box, image, hivemap = panda
            hive = load_hive(hivemap)
            c_hivereg.register_hive(name, hive)
            p = pandalogicframe(name)
            c1 = connect(p.set_panda, "do_set_panda")
            c2 = connect(p.trig_spawn, "do_trig_spawn")
            pandalogics += [p, c1, c2]
        return {"myscene": pandas, "pandalogic": pandalogics}
Exemplo n.º 19
0
    def make_combo(self):
        pandas = []
        c_hivereg = bee.configure("hivereg")
        pandalogics = [c_hivereg]
        for name in pandadict:
            panda = pandadict[name]
            pandasceneframe = generate_pandasceneframe(name, panda)(scene="scene", canvas="canvas",
                                                                    mousearea="mousearea")
            pandas.append(pandasceneframe)

            mode, data, box, image, hivemap = panda
            hive = load_hive(hivemap)
            c_hivereg.register_hive(name, hive)
            p = pandalogicframe(name)
            c1 = connect(p.set_panda, "do_set_panda")
            c2 = connect(p.trig_spawn, "do_trig_spawn")
            pandalogics += [p, c1, c2]
        return {"myscene": pandas, "pandalogic": pandalogics}
Exemplo n.º 20
0
def load_panda(mpanda):
    pandas = []
    c_hivereg = bee.configure("hivereg")
    pandalogics = [c_hivereg]

    pandas.append(mpanda.model[0])
    icon = Spyder.Icon(mpanda.image,
                       mpanda.pname,
                       mpanda.box,
                       transparency=mpanda.transparency)
    pandas.append(icon)

    hive = load_hive(mpanda.hivemap)
    c_hivereg.register_hive(mpanda.pname, hive)
    p = pandalogicframe(mpanda.pname)
    c1 = connect(p.set_panda, "do_set_panda")
    c2 = connect(p.trig_spawn, "do_trig_spawn")
    pandalogics += [p, c1, c2]

    return {"myscene": pandas, "pandalogic": pandalogics}
Exemplo n.º 21
0
class pandalogichive(bee.frame):
    do_set_panda = dragonfly.std.pushconnector("id")()
    set_panda = bee.output(do_set_panda.outp)

    do_trig_spawn = dragonfly.std.pushconnector("trigger")()
    trig_spawn = bee.output(do_trig_spawn.outp)

    c_hivereg = bee.configure("hivereg")

    for name in pandadict:
        mode, data, box, image, hivemap = pandadict[name]

        hive = load_hive(hivemap)
        c_hivereg.register_hive(name, hive)

        p = pandalogicframe(name)
        connect(p.set_panda, do_set_panda)
        connect(p.trig_spawn, do_trig_spawn)
        locals()["pandalogicframe_%s" % name] = p

    del mode, data, box, image, hivemap, hive, p, name
Exemplo n.º 22
0
def load_panda(mpanda):
    pandas = []
    c_hivereg = bee.configure("hivereg")
    pandalogics = [c_hivereg]

    pandas.append(mpanda.model[0])
    icon = Spyder.Icon(
        mpanda.image,
        mpanda.pname,
        mpanda.box,
        transparency=mpanda.transparency
    )
    pandas.append(icon)

    hive = load_hive(mpanda.hivemap)
    c_hivereg.register_hive(mpanda.pname, hive)
    p = pandalogicframe(mpanda.pname)
    c1 = connect(p.set_panda, "do_set_panda")
    c2 = connect(p.trig_spawn, "do_trig_spawn")
    pandalogics += [p, c1, c2]

    return {"myscene": pandas, "pandalogic": pandalogics}
Exemplo n.º 23
0
class mycombohive(bee.combohive):
    pandas = []
    c_hivereg = bee.configure("hivereg")
    pandalogics = [c_hivereg]
    for name in pandadict:
        panda = pandadict[name]
        pandasceneframe = generate_pandasceneframe(name, panda)(scene="scene", canvas="canvas", mousearea="mousearea")
        pandas.append(pandasceneframe)

        mode, data, box, image, hivemap = panda
        hive = load_hive(hivemap)
        c_hivereg.register_hive(name, hive)
        p = pandalogicframe(name)
        c1 = connect(p.set_panda, "do_set_panda")
        c2 = connect(p.trig_spawn, "do_trig_spawn")
        pandalogics += [p, c1, c2]
        del pandasceneframe

    cb = bee.combodronewrapper({"myscene": pandas, "pandalogic": pandalogics})

    del name, panda, pandas, pandalogics
    del mode, data, box, image, hivemap
    del hive, p, c1, c2
    del c_hivereg
Exemplo n.º 24
0
class myhive(dragonfly.pandahive.pandahive):
    pandaclassname = "pandaclass"
    pandaclassname_ = bee.attribute("pandaclassname")

    canvas = dragonfly.pandahive.pandacanvas()
    mousearea = dragonfly.canvas.mousearea()
    raiser = bee.raiser()
    connect("evexc", raiser)

    camerabind = camerabind().worker()
    camcenter = dragonfly.std.variable("id")("camcenter")
    connect(camcenter, camerabind.bindname)

    startsensor = dragonfly.sys.startsensor()
    cam = dragonfly.scene.get_camera()
    camparent = dragonfly.scene.unbound.parent()
    connect(cam, camparent.entityname)
    connect(camcenter, camparent.entityparentname)
    connect(startsensor, camparent)
    cphide = dragonfly.scene.unbound.hide()
    connect(camcenter, cphide)
    connect(startsensor, cphide)

    v_marker = dragonfly.std.variable("id")("marker")
    hide_marker = dragonfly.scene.unbound.hide()
    connect(v_marker, hide_marker)
    show_marker = dragonfly.scene.unbound.show()
    connect(v_marker, show_marker)
    parent_marker = dragonfly.scene.unbound.parent()
    connect(v_marker, parent_marker.entityname)
    connect(startsensor, hide_marker)

    pandaspawn = dragonfly.scene.spawn_actor()
    v_panda = dragonfly.std.variable("id")(pandaclassname_)
    connect(v_panda, pandaspawn)

    panda_id_gen = dragonfly.std.generator("id", id_generator)()
    panda_id = dragonfly.std.variable("id")("")
    t_panda_id_gen = dragonfly.std.transistor("id")()
    connect(panda_id_gen, t_panda_id_gen)
    connect(t_panda_id_gen, panda_id)
    random_matrix = dragonfly.std.generator(("object", "matrix"),
                                            random_matrix_generator)()
    w_spawn = dragonfly.std.weaver(("id", ("object", "matrix")))()
    connect(panda_id, w_spawn.inp1)
    connect(random_matrix, w_spawn.inp2)

    hivereg = dragonfly.bind.hiveregister()
    c_hivereg = bee.configure("hivereg")
    c_hivereg.register_hive("pandawalk", pandawalkhive)

    pandabinder = pandabind().worker()
    v_hivename = dragonfly.std.variable("id")("pandawalk")
    w_bind = dragonfly.std.weaver(("id", "id"))()
    connect(panda_id, w_bind.inp1)
    connect(v_hivename, w_bind.inp2)
    t_bind = dragonfly.std.transistor("id")()
    connect(panda_id, t_bind)
    t_bind2 = dragonfly.std.transistor(("id", "id"))()
    connect(w_bind, t_bind2)
    connect(t_bind2, pandabinder.bind)

    sel = dragonfly.logic.selector()
    connect(t_bind, sel.register_and_select)
    selected = dragonfly.std.variable("id")("")
    connect(t_bind, selected)

    t_get_selected = dragonfly.logic.filter("trigger")()
    connect(sel.empty, t_get_selected)
    tt_get_selected = dragonfly.std.transistor("id")()
    do_select = dragonfly.std.pushconnector("trigger")()
    connect(t_get_selected.false, do_select)
    connect(do_select, tt_get_selected)
    connect(sel.selected, tt_get_selected)
    connect(tt_get_selected, selected)
    disp_sel = dragonfly.io.display("id")("Selected: ")
    connect(tt_get_selected, disp_sel)
    connect(selected, parent_marker.entityparentname)
    connect(do_select, show_marker)
    connect(do_select, parent_marker)

    key_tab = dragonfly.io.keyboardsensor_trigger("TAB")
    connect(key_tab, sel.select_next)
    connect(key_tab, t_get_selected)
    key_bsp = dragonfly.io.keyboardsensor_trigger("BACKSPACE")
    connect(key_bsp, sel.select_prev)
    connect(key_bsp, t_get_selected)

    kill = dragonfly.std.pushconnector("trigger")()
    t_kill = dragonfly.std.transistor("id")()
    connect(selected, t_kill)
    connect(t_kill, pandabinder.stop)
    remove = dragonfly.scene.unbound.remove_actor_or_entity()
    connect(t_kill, remove)
    disp_kill = dragonfly.io.display("id")("Killed: ")
    connect(t_kill, disp_kill)
    connect(kill, t_kill)
    connect(kill, sel.unregister)
    connect(kill, hide_marker)
    connect(kill, t_get_selected)
    testkill = dragonfly.logic.filter("trigger")()
    connect(sel.empty, testkill)
    connect(testkill.false, kill)
    key_k = dragonfly.io.keyboardsensor_trigger("K")
    connect(key_k, testkill)

    do_spawn = dragonfly.std.transistor(("id", ("object", "matrix")))()
    connect(w_spawn, do_spawn)
    connect(do_spawn, pandaspawn.spawn_matrix)
    trig_spawn = dragonfly.std.pushconnector("trigger")()
    connect(trig_spawn, t_panda_id_gen)
    connect(trig_spawn, do_spawn)
    connect(trig_spawn, t_bind)
    connect(trig_spawn, t_bind2)
    connect(trig_spawn, do_select)

    key_z = dragonfly.io.keyboardsensor_trigger("Z")
    connect(key_z, trig_spawn)

    pandaicon_click = dragonfly.io.mouseareasensor("pandaicon")
    connect(pandaicon_click, trig_spawn)

    myscene = myscene(
        scene="scene",
        canvas=canvas,
        mousearea=mousearea,
    )

    wininit = bee.init("window")
    wininit.camera.setPos(0, 45, 25)
    wininit.camera.setHpr(180, -20, 0)

    keyboardevents = dragonfly.event.sensor_match_leader("keyboard")
    add_head = dragonfly.event.add_head()
    head = dragonfly.convert.pull.duck("id", "event")()
    connect(selected, head)
    connect(keyboardevents, add_head)
    connect(head, add_head)
    connect(add_head, pandabinder.event)
Exemplo n.º 25
0
class main(dragonfly.pandahive.pandahive):
    blocks = blocks
    gridx = 10
    gridy = 20
    mainarea = box2d(100, 150, 225, 375)
    mainarea_id = "main"
    mainarea_parameters = parameters(color=(0.5, 0.5, 0.5, 0))
    scorearea = box2d(170, 100, 80, 40)
    scorearea_id = "score"

    canvas = dragonfly.pandahive.pandacanvas()

    blocks_ = attribute("blocks")
    gridx_ = attribute("gridx")
    gridy_ = attribute("gridy")
    mainarea_ = attribute("mainarea")
    mainarea_parameters_ = attribute("mainarea_parameters")
    mainarea_id_ = attribute("mainarea_id")
    scorearea_ = attribute("scorearea")
    scorearea_id_ = attribute("scorearea_id")

    c0 = configure("canvas")  # must have a lower-alphabet name than "canvas"
    c0.reserve(mainarea_id_, ("object", "bgrid"),
               box=mainarea_,
               parameters=mainarea_parameters_)

    maingrid = dragonfly.std.variable(("object", "bgrid"))(emptygrid)
    maingridcontrol = dragonfly.grid.bgridcontrol()
    connect(maingrid, maingridcontrol.grid)

    blockgrid = dragonfly.std.variable(("object", "bgrid"))(emptygrid)
    blockgridcontrol = dragonfly.grid.bgridcontrol()
    connect(blockgrid, blockgridcontrol.grid)

    select_block = tetris_select_block(blocks=blocks_)
    connect(select_block, blockgridcontrol.set)
    init_main = tetris_init_main(gridx_, gridy_)
    connect(init_main, maingridcontrol.set)
    draw = tetris_draw()
    connect(maingrid, draw.maingrid)
    connect(blockgrid, draw.blockgrid)

    control = tetris_control()
    connect(maingrid, control.maingrid)
    connect(blockgrid, control.blockgrid)

    start = dragonfly.sys.startsensor()
    connect(start, select_block)
    connect(start, init_main.start)
    connect(start, control.place_init)
    connect(start, draw.start)
    connect(start, draw.draw)

    period = dragonfly.std.variable("float")(0.3)
    cycle = dragonfly.time.cycle()
    connect(period, cycle)

    connect(cycle, control.move_down)
    connect(cycle, draw.draw)
    connect(control.dropped, select_block)
    connect(control.dropped, control.place_init)
    connect(control.lost, "exitactuator")

    k_left = dragonfly.io.keyboardsensor_trigger("LEFT")
    connect(k_left, control.move_left)
    connect(k_left, draw.draw)
    k_right = dragonfly.io.keyboardsensor_trigger("RIGHT")
    connect(k_right, control.move_right)
    connect(k_right, draw.draw)

    k_return = dragonfly.io.keyboardsensor_trigger("RETURN")
    connect(k_return, control.rotate_cw)
    connect(k_return, draw.draw)
    k_space = dragonfly.io.keyboardsensor_trigger("SPACE")
    connect(k_space, control.rotate_ccw)
    connect(k_space, draw.draw)

    k_down = dragonfly.io.keyboardsensor_trigger("DOWN")
    connect(k_down, control.drop)
    connect(k_down, draw.draw)

    raiser = bee.raiser()
    connect("evexc", raiser)
Exemplo n.º 26
0
def create_material(mat):
    # only for color materials
    cf = configure("scene")
    c = mat.color
    cf.create_material_COLOR(mat.pname, (c.r / 255.0, c.g / 255.0, c.b / 255.0))
    return cf