Revision b041d424
Added by Leszek Koltunski over 7 years ago
src/main/java/org/distorted/examples/wind/WindEffectsManager.java | ||
---|---|---|
22 | 22 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
23 | 23 |
|
24 | 24 |
import org.distorted.library.DistortedObject; |
25 |
import org.distorted.library.type.Dynamic; |
|
25 | 26 |
import org.distorted.library.type.Dynamic3D; |
27 |
import org.distorted.library.type.Dynamic5D; |
|
26 | 28 |
import org.distorted.library.type.Static3D; |
29 |
import org.distorted.library.type.Static4D; |
|
30 |
import org.distorted.library.type.Static5D; |
|
27 | 31 |
|
28 | 32 |
class WindEffectsManager |
29 | 33 |
{ |
30 |
private Static3D shearFactor; |
|
34 |
private Static3D shearFactor;
|
|
31 | 35 |
private Dynamic3D shearDynamic; |
32 |
private Static3D scaleFactor; |
|
36 |
private Static3D scaleFactor;
|
|
33 | 37 |
private Dynamic3D scaleDynamic; |
38 |
private Static3D deformForce; |
|
39 |
private Static5D windFactor1, windFactor2; |
|
40 |
private Dynamic5D windDynamic; |
|
34 | 41 |
|
35 | 42 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
36 | 43 |
|
37 |
WindEffectsManager() |
|
44 |
WindEffectsManager(DistortedObject obj)
|
|
38 | 45 |
{ |
46 |
int h = obj.getHeight(); |
|
47 |
int w = obj.getWidth(); |
|
48 |
|
|
39 | 49 |
shearFactor = new Static3D(0,0,0); |
40 | 50 |
shearDynamic= new Dynamic3D(); |
41 | 51 |
shearDynamic.add(shearFactor); |
... | ... | |
43 | 53 |
scaleFactor = new Static3D(1,1,1); |
44 | 54 |
scaleDynamic= new Dynamic3D(); |
45 | 55 |
scaleDynamic.add(scaleFactor); |
56 |
|
|
57 |
deformForce = new Static3D(w/3,0,0); |
|
58 |
|
|
59 |
windFactor1 = new Static5D(h/10,h/5, 180, 0, 90); |
|
60 |
windFactor2 = new Static5D(h/10,h/5,-180, 0, 90); |
|
61 |
windDynamic = new Dynamic5D(1000,0.0f); |
|
62 |
windDynamic.add(windFactor1); |
|
63 |
windDynamic.add(windFactor2); |
|
64 |
windDynamic.setMode(Dynamic.MODE_JUMP); |
|
46 | 65 |
} |
47 | 66 |
|
48 | 67 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
49 | 68 |
|
50 | 69 |
synchronized void apply(DistortedObject obj, int wind) |
51 | 70 |
{ |
52 |
Static3D center = new Static3D(0,obj.getHeight()/2,0); |
|
71 |
int h = obj.getHeight(); |
|
72 |
int w = obj.getWidth(); |
|
73 |
|
|
74 |
Static3D midLeft = new Static3D(0,h/2,0); |
|
75 |
Static3D midRight = new Static3D(w,h/2,0); |
|
76 |
Static4D windRegion = new Static4D(0,0,w,h); |
|
77 |
|
|
53 | 78 |
setWind(wind); |
54 | 79 |
|
55 |
obj.shear(shearDynamic,center);
|
|
80 |
obj.shear(shearDynamic,midLeft);
|
|
56 | 81 |
obj.scale(scaleDynamic); |
82 |
obj.deform(deformForce,midRight); |
|
83 |
obj.wave(windDynamic, midRight, windRegion); |
|
57 | 84 |
} |
58 | 85 |
|
59 | 86 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
64 | 91 |
|
65 | 92 |
shearFactor.set2(tanAngle); |
66 | 93 |
scaleFactor.set1(1/(float)Math.sqrt(1+tanAngle*tanAngle)); |
94 |
windDynamic.setDuration( wind > 0 ? 100000/wind : Long.MAX_VALUE); |
|
67 | 95 |
} |
68 | 96 |
} |
Also available in: Unified diff
Minor details