Project

General

Profile

Download (4.12 KB) Statistics
| Branch: | Revision:

library / src / main / java / org / distorted / library / effect / VertexEffect.java @ 310e14fb

1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2017 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Distorted.                                                               //
5
//                                                                                               //
6
// Distorted is free software: you can redistribute it and/or modify                             //
7
// it under the terms of the GNU General Public License as published by                          //
8
// the Free Software Foundation, either version 2 of the License, or                             //
9
// (at your option) any later version.                                                           //
10
//                                                                                               //
11
// Distorted is distributed in the hope that it will be useful,                                  //
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
14
// GNU General Public License for more details.                                                  //
15
//                                                                                               //
16
// You should have received a copy of the GNU General Public License                             //
17
// along with Distorted.  If not, see <http://www.gnu.org/licenses/>.                            //
18
///////////////////////////////////////////////////////////////////////////////////////////////////
19

    
20
package org.distorted.library.effect;
21

    
22
import org.distorted.library.type.Data3D;
23
import org.distorted.library.type.Data4D;
24
import org.distorted.library.type.Dynamic;
25
import org.distorted.library.type.Static;
26

    
27
///////////////////////////////////////////////////////////////////////////////////////////////////
28
// VERTEX EFFECTS
29
// 12 Uniforms: 5 per-effect interpolated values, 3-dimensional center, 4-dimensional Region
30

    
31
public abstract class VertexEffect extends Effect
32
  {
33
  public static final int DISTORT    =0;
34
  public static final int DEFORM     =1;
35
  public static final int SINK       =2;
36
  public static final int PINCH      =3;
37
  public static final int SWIRL      =4;
38
  public static final int WAVE       =5;
39
  public static final int NUM_EFFECTS=6;
40

    
41
  static final int MAX = 5;
42
  private static final int MAX_UNITY_DIM = 3;
43

    
44
  Dynamic mDynamic0;
45
  Static mStatic0;
46
  Data3D mCenter;
47
  Data4D mRegion;
48

    
49
  private final static float[] mUnity= new float[MAX_UNITY_DIM*NUM_EFFECTS];
50
  private final static int[]   mUnityDim = new int[NUM_EFFECTS];
51

    
52
///////////////////////////////////////////////////////////////////////////////////////////////////
53

    
54
  public VertexEffect(int name, float[] unity, int dimension, boolean center, boolean region)
55
    {
56
    super(VERTEX,name,dimension,center,region);
57

    
58
    for(int i=0; i<unity.length; i++)
59
      {
60
      mUnity[name*MAX_UNITY_DIM+i] = unity[i];
61
      }
62

    
63
    mUnityDim[name] = unity.length;
64
    }
65

    
66
///////////////////////////////////////////////////////////////////////////////////////////////////
67

    
68
  public static boolean isUnity(int name, float[] buffer, int index)
69
    {
70
    switch(mUnityDim[name])
71
      {
72
      case 0: return true;
73
      case 1: return buffer[index  ]==mUnity[MAX_UNITY_DIM*name  ];
74
      case 2: return buffer[index  ]==mUnity[MAX_UNITY_DIM*name  ] &&
75
                     buffer[index+1]==mUnity[MAX_UNITY_DIM*name+1];
76
      case 3: return buffer[index  ]==mUnity[MAX_UNITY_DIM*name  ] &&
77
                     buffer[index+1]==mUnity[MAX_UNITY_DIM*name+1] &&
78
                     buffer[index+2]==mUnity[MAX_UNITY_DIM*name+2];
79
      case 4: return buffer[index  ]==mUnity[MAX_UNITY_DIM*name  ] &&
80
                     buffer[index+1]==mUnity[MAX_UNITY_DIM*name+1] &&
81
                     buffer[index+2]==mUnity[MAX_UNITY_DIM*name+2] &&
82
                     buffer[index+3]==mUnity[MAX_UNITY_DIM*name+3];
83
      }
84

    
85
    return false;
86
    }
87
  }
(23-23/29)