Revision e7a26998
Added by Leszek Koltunski about 8 years ago
src/main/java/org/distorted/examples/wind/WindEffectsManager.java | ||
---|---|---|
31 | 31 |
|
32 | 32 |
class WindEffectsManager |
33 | 33 |
{ |
34 |
private int mHeight, mWidth; |
|
35 |
|
|
34 | 36 |
private Static3D shearFactor; |
35 | 37 |
private Dynamic3D shearDynamic; |
36 | 38 |
private Static3D scaleFactor; |
37 | 39 |
private Dynamic3D scaleDynamic; |
38 | 40 |
private Static3D deformForce; |
39 |
private Static5D windFactor1, windFactor2; |
|
40 |
private Dynamic5D windDynamic; |
|
41 |
private Static5D windFactor11, windFactor12; |
|
42 |
private Dynamic5D windDynamic1; |
|
43 |
private Static5D windFactor21, windFactor22; |
|
44 |
private Dynamic5D windDynamic2; |
|
45 |
private Static5D windFactor31, windFactor32; |
|
46 |
private Dynamic5D windDynamic3; |
|
41 | 47 |
|
42 | 48 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
43 | 49 |
|
44 | 50 |
WindEffectsManager(DistortedObject obj) |
45 | 51 |
{ |
46 |
int h = obj.getHeight();
|
|
47 |
int w = obj.getWidth();
|
|
52 |
mHeight = obj.getHeight();
|
|
53 |
mWidth = obj.getWidth();
|
|
48 | 54 |
|
49 | 55 |
shearFactor = new Static3D(0,0,0); |
50 | 56 |
shearDynamic= new Dynamic3D(); |
... | ... | |
54 | 60 |
scaleDynamic= new Dynamic3D(); |
55 | 61 |
scaleDynamic.add(scaleFactor); |
56 | 62 |
|
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); |
|
65 |
windDynamic.setAccessMode(Dynamic.ACCESS_SEQUENTIAL); |
|
63 |
deformForce = new Static3D(mWidth/3,0,0); |
|
64 |
|
|
65 |
windFactor11 = new Static5D(mHeight/10,mHeight/5, 180, 0, 90); |
|
66 |
windFactor12 = new Static5D(mHeight/10,mHeight/5,-180, 0, 90); |
|
67 |
windDynamic1 = new Dynamic5D(1000,0.0f); |
|
68 |
windDynamic1.add(windFactor11); |
|
69 |
windDynamic1.add(windFactor12); |
|
70 |
windDynamic1.setMode(Dynamic.MODE_JUMP); |
|
71 |
windDynamic1.setAccessMode(Dynamic.ACCESS_SEQUENTIAL); |
|
72 |
|
|
73 |
windFactor21 = new Static5D(mHeight/10,mHeight/5,-180, 90, 10); |
|
74 |
windFactor22 = new Static5D(mHeight/10,mHeight/5,+180, 90, 10); |
|
75 |
windDynamic2 = new Dynamic5D(1000,0.0f); |
|
76 |
windDynamic2.add(windFactor21); |
|
77 |
windDynamic2.add(windFactor22); |
|
78 |
windDynamic2.setMode(Dynamic.MODE_JUMP); |
|
79 |
windDynamic2.setAccessMode(Dynamic.ACCESS_SEQUENTIAL); |
|
80 |
|
|
81 |
windFactor31 = new Static5D(mHeight/10,mHeight/10,-180, 90, 90); |
|
82 |
windFactor32 = new Static5D(mHeight/10,mHeight/10,+180, 90, 90); |
|
83 |
windDynamic3 = new Dynamic5D(1000,0.0f); |
|
84 |
windDynamic3.add(windFactor31); |
|
85 |
windDynamic3.add(windFactor32); |
|
86 |
windDynamic3.setMode(Dynamic.MODE_JUMP); |
|
87 |
windDynamic3.setAccessMode(Dynamic.ACCESS_SEQUENTIAL); |
|
66 | 88 |
} |
67 | 89 |
|
68 | 90 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
69 | 91 |
|
70 | 92 |
synchronized void apply(DistortedObject obj, int wind) |
71 | 93 |
{ |
72 |
int h = obj.getHeight(); |
|
73 |
int w = obj.getWidth(); |
|
74 |
|
|
75 |
Static3D midLeft = new Static3D(0,h/2,0); |
|
76 |
Static3D midRight = new Static3D(w,h/2,0); |
|
77 |
Static4D windRegion = new Static4D(0,0,w,h); |
|
94 |
Static3D midLeft = new Static3D(0,mHeight/2,0); |
|
95 |
Static3D midRight = new Static3D(mWidth,mHeight/2,0); |
|
96 |
Static4D windRegion = new Static4D(0,0,mWidth,mHeight); |
|
78 | 97 |
|
79 | 98 |
setWind(wind); |
80 | 99 |
|
81 | 100 |
obj.shear(shearDynamic,midLeft); |
82 | 101 |
obj.scale(scaleDynamic); |
83 | 102 |
obj.deform(deformForce,midRight); |
84 |
obj.wave(windDynamic, midRight, windRegion); |
|
103 |
obj.wave(windDynamic1, midRight, windRegion); |
|
104 |
obj.wave(windDynamic2, midRight, windRegion); |
|
105 |
obj.wave(windDynamic3, midRight, windRegion); |
|
85 | 106 |
} |
86 | 107 |
|
87 | 108 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
92 | 113 |
|
93 | 114 |
shearFactor.set2(tanAngle); |
94 | 115 |
scaleFactor.set1(1/(float)Math.sqrt(1+tanAngle*tanAngle)); |
95 |
windDynamic.setDuration( wind > 0 ? 100000/wind : Long.MAX_VALUE); |
|
116 |
windDynamic1.setDuration( wind > 0 ? 100000/wind : Long.MAX_VALUE); |
|
117 |
windDynamic2.setDuration( wind > 0 ? 80000/wind : Long.MAX_VALUE); |
|
118 |
windDynamic3.setDuration( wind > 0 ? 100000/wind : Long.MAX_VALUE); |
|
119 |
|
|
120 |
float waveA = (mHeight/(20.0f-0.15f*wind)); |
|
121 |
windFactor21.set1(waveA); |
|
122 |
windFactor22.set1(waveA); |
|
123 |
|
|
124 |
float waveB = (mHeight/(wind+5.0f)); |
|
125 |
windFactor31.set1(waveB); |
|
126 |
windFactor32.set1(waveB); |
|
96 | 127 |
} |
97 | 128 |
} |
Also available in: Unified diff
Progress with WindManager.