123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import bge
- from mathutils import Vector
- from collections import OrderedDict
-
- try:
- from custom_shaders import wind as w
- logic = bge.logic
-
- except (ImportError, AttributeError):
- pass
-
-
- class Wind(bge.types.KX_PythonComponent):
- """
- Assign a wind shader to a material.
-
- Args:
- Material: The object material to which the shader should be assigned.
- Fast Lighting: Activate per vertex lighting instead of per pixel lighting.
- Wind Strength: The strength of the wind.
- Wind Speed: The speed of the wind movement.
- Object Deforming: The deforming value that set how much the geometry will be deformed.
- Object Bending: The bending of higher gemometry in comparison to lower level geometry.
- Ground Level: The height (distance from the object origin) where the geometry begins to move.
- Material Type: Sets the type of the material.
- Texture Slot: The texture slot for the diffuse texture.
- Normalmap Slot: The texture slot for the normalmap texture.
- Normal Factor: Amount normalmap affects normal values. (Similar to the setting in the texture tab)
- Texture Scale: The size of the texture.
- """
-
-
- args = OrderedDict([
- ("Material", "Material"),
- ("Material Type", {"Diffuse Texture", "Material Color", "Diffuse Texture (Fast Lighting)", "Material Color (Fast Lighting)", "Diffuse Texture + Normalmap", "Material Color + Normalmap"}),
- ("Texture Slot", 0),
- ("Normalmap Slot", 1),
- ("Normal Factor", 0.0),
- ("Texture Scale", Vector((1.0, 1.0))),
- ("Wind Strength", 0.1),
- ("Wind Speed", 1.0),
- ("Object Deforming", 0.0),
- ("Object Bending", 0.0),
- ("Ground Level", 0.0),
- ])
-
- def start(self, args):
- material = args['Material']
- scale = None
- lighting = False
- texture = None
- normalmap = None
- normal_factor = 0.0
-
- if args['Material Type'] in ["Diffuse Texture (Fast Lighting)", "Material Color (Fast Lighting)"]:
- lighting = True
-
- if args['Material Type'] in ["Diffuse Texture", "Diffuse Texture (Fast Lighting)", "Diffuse Texture + Normalmap"]:
- texture = args['Texture Slot']
- scale = args['Texture Scale']
-
- if args['Material Type'] in ["Diffuse Texture + Normalmap", "Material Color + Normalmap"]:
- normalmap = args['Normalmap Slot']
- normal_factor = args['Normal Factor']
- scale = args['Texture Scale']
-
- m = w.shader_utils.get_material(self.object, material)
- self.shader = w.WindShader(m, texture=texture, scale=scale, vertex_lighting=lighting, normalmap=normalmap, normal_factor=normal_factor)
-
- self.shader.strength = args['Wind Strength']
- self.shader.speed = args['Wind Speed']
- self.shader.deforming = args['Object Deforming']
- self.shader.bending = args['Object Bending']
- self.shader.ground = args['Ground Level']
-
- def update(self):
- #pass
- self.shader.update()
|