Hopefully a working merge with trunk (could be one error left in raytrace.c - will...
[blender.git] / release / scripts / scripttemplate_gamelogic.py
1 #!BPY
2 """
3 Name: 'GameLogic Example'
4 Blender: 245
5 Group: 'ScriptTemplate'
6 Tooltip: 'Script template with examples of how to use game logic'
7 """
8
9 from Blender import Window
10 import bpy
11
12 script_data = \
13 '''
14 # This script must be assigned to a python controller
15 # where it can access the object that owns it and the sensors/actuators that it connects to.
16
17 # GameLogic has been added to the global namespace no need to import
18
19 # for keyboard event comparison
20 # import GameKeys 
21
22 # support for Vector(), Matrix() types and advanced functions like AngleBetweenVecs(v1,v2) and RotationMatrix(...)
23 # import Mathutils 
24
25 # for functions like getWindowWidth(), getWindowHeight()
26 # import Rasterizer
27
28 def main():
29         cont = GameLogic.getCurrentController()
30         
31         # The KX_GameObject that owns this controller.
32         own = cont.getOwner()
33         
34         # for scripts that deal with spacial logic
35         own_pos = own.getPosition() 
36         
37         
38         # Some example functions, remove to write your own script.
39         # check for a positive sensor, will run on any object without errors.
40         print 'Logic info for KX_GameObject', own.getName()
41         input = False
42         
43         for sens in cont.getSensors():
44                 # The sensor can be on another object, we may want to use it
45                 own_sens = sens.getOwner()
46                 print '    sensor:', sens.getName(),
47                 if sens.isPositive():
48                         print '(true)'
49                         input = True
50                 else:
51                         print '(false)'
52         
53         for actu in cont.getActuators():
54                 # The actuator can be on another object, we may want to use it
55                 own_actu = actu.getOwner()
56                 print '    actuator:', actu.getName()
57                 
58                 # This runs the actuator or turns it off
59                 # note that actuators will continue to run unless explicitly turned off.
60                 if input:
61                         GameLogic.addActiveActuator(actu, True)
62                 else:
63                         GameLogic.addActiveActuator(actu, False)
64         
65         # Its also good practice to get sensors and actuators by names
66         # so any changes to their order wont break the script.
67         
68         # sens_key = cont.getSensor('key_sensor')
69         # actu_motion = cont.getActuator('motion')
70         
71         
72         # Loop through all other objects in the scene
73         sce = GameLogic.getCurrentScene()
74         print 'Scene Objects:', sce.getName()
75         for ob in sce.getObjectList():
76                 print '   ', ob.getName(), ob.getPosition()
77         
78         
79         # Example where collision objects are checked for their properties
80         # adding to our objects "life" property
81         """
82         actu_collide = cont.getSensor('collision_sens')
83         for ob in actu_collide.getHitObjectList():
84                 # Check to see the object has this property
85                 if hasattr(ob, 'life'):
86                         own.life += ob.life
87                         ob.life = 0
88         print own.life
89         """\r
90 main()
91 '''
92
93 new_text = bpy.data.texts.new('gamelogic_example.py')
94 new_text.write(script_data)
95 bpy.data.texts.active = new_text
96 Window.RedrawAll()