Fix crash in recent changes to instancing
[blender.git] / release / scripts / templates_py / gamelogic.py
1 # This script must be assigned to a python controller
2 # where it can access the object that owns it and the sensors/actuators that it connects to.
3
4 import bge
5
6 # support for Vector(), Matrix() types and advanced functions like Matrix.Scale(...) and Matrix.Rotation(...)
7 # import mathutils
8
9 # for functions like getWindowWidth(), getWindowHeight()
10 # import Rasterizer
11
12
13 def main():
14     cont = bge.logic.getCurrentController()
15
16     # The KX_GameObject that owns this controller.
17     own = cont.owner
18
19     # for scripts that deal with spacial logic
20     own_pos = own.worldPosition
21
22     # Some example functions, remove to write your own script.
23     # check for a positive sensor, will run on any object without errors.
24     print("Logic info for KX_GameObject", own.name)
25     input = False
26
27     for sens in cont.sensors:
28         # The sensor can be on another object, we may want to use it
29         own_sens = sens.owner
30         print("    sensor:", sens.name, end=" ")
31         if sens.positive:
32             print("(true)")
33             input = True
34         else:
35             print("(false)")
36
37     for actu in cont.actuators:
38         # The actuator can be on another object, we may want to use it
39         own_actu = actu.owner
40         print("    actuator:", actu.name)
41
42         # This runs the actuator or turns it off
43         # note that actuators will continue to run unless explicitly turned off.
44         if input:
45             cont.activate(actu)
46         else:
47             cont.deactivate(actu)
48
49     # Its also good practice to get sensors and actuators by name
50     # rather then index so any changes to their order wont break the script.
51
52     # sens_key = cont.sensors["key_sensor"]
53     # actu_motion = cont.actuators["motion"]
54
55     # Loop through all other objects in the scene
56     sce = bge.logic.getCurrentScene()
57     print("Scene Objects:", sce.name)
58     for ob in sce.objects:
59         print("   ", ob.name, ob.worldPosition)
60
61     # Example where collision objects are checked for their properties
62     # adding to our objects "life" property
63     """
64     actu_collide = cont.sensors["collision_sens"]
65     for ob in actu_collide.objectHitList:
66         # Check to see the object has this property
67         if "life" in ob:
68             own["life"] += ob["life"]
69             ob["life"] = 0
70     print(own["life"])
71     """
72
73 main()