203a693de5ac070ab15368211504cf7ccc05b968
[blender-staging.git] / release / scripts / templates / gamelogic.py
1 # ##### BEGIN GPL LICENSE BLOCK #####
2 #
3 #  This program is free software; you can redistribute it and/or
4 #  modify it under the terms of the GNU General Public License
5 #  as published by the Free Software Foundation; either version 2
6 #  of the License, or (at your option) any later version.
7
8 #  This program is distributed in the hope that it will be useful,
9 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
10 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 #  GNU General Public License for more details.
12
13 #  You should have received a copy of the GNU General Public License
14 #  along with this program; if not, write to the Free Software Foundation,
15 #  Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
16 #
17 # ##### END GPL LICENSE BLOCK #####
18
19 # This script must be assigned to a python controller
20 # where it can access the object that owns it and the sensors/actuators that it connects to.
21
22 # GameLogic has been added to the global namespace no need to import
23
24 # for keyboard event comparison
25 # import GameKeys
26
27 # support for Vector(), Matrix() types and advanced functions like AngleBetweenVecs(v1,v2) and RotationMatrix(...)
28 # import Mathutils
29
30 # for functions like getWindowWidth(), getWindowHeight()
31 # import Rasterizer
32
33 def main():
34     cont = GameLogic.getCurrentController()
35
36     # The KX_GameObject that owns this controller.
37     own = cont.owner
38
39     # for scripts that deal with spacial logic
40     own_pos = own.worldPosition
41
42
43     # Some example functions, remove to write your own script.
44     # check for a positive sensor, will run on any object without errors.
45     print 'Logic info for KX_GameObject', own.name
46     input = False
47
48     for sens in cont.sensors:
49         # The sensor can be on another object, we may want to use it
50         own_sens = sens.owner
51         print '    sensor:', sens.name,
52         if sens.positive:
53             print '(true)'
54             input = True
55         else:
56             print '(false)'
57
58     for actu in cont.actuators:
59         # The actuator can be on another object, we may want to use it
60         own_actu = actu.owner
61         print '    actuator:', actu.name
62
63         # This runs the actuator or turns it off
64         # note that actuators will continue to run unless explicitly turned off.
65         if input:
66             cont.activate(actu)
67         else:
68             cont.deactivate(actu)
69
70     # Its also good practice to get sensors and actuators by name
71     # rather then index so any changes to their order wont break the script.
72
73     # sens_key = cont.sensors['key_sensor']
74     # actu_motion = cont.actuators['motion']
75
76
77     # Loop through all other objects in the scene
78     sce = GameLogic.getCurrentScene()
79     print 'Scene Objects:', sce.name
80     for ob in sce.objects:
81         print '   ', ob.name, ob.worldPosition
82
83
84     # Example where collision objects are checked for their properties
85     # adding to our objects "life" property
86     """
87     actu_collide = cont.sensors['collision_sens']
88     for ob in actu_collide.objectHitList:
89         # Check to see the object has this property
90         if ob.has_key('life'):
91             own['life'] += ob['life']
92             ob['life'] = 0
93     print own['life']
94     """
95
96 main()