OSDN Git Service

Merge release/v2.103.2
[mikutoga/Vmd2XML.git] / src / main / java / jp / sfjp / mikutoga / vmd / model / ShadowMode.java
1 /*
2  * shadow mode
3  *
4  * License : The MIT License
5  * Copyright(c) 2011 MikuToga Partners
6  */
7
8 package jp.sfjp.mikutoga.vmd.model;
9
10 /**
11  * セルフシャドウ描画モード。
12  */
13 public enum ShadowMode {
14
15     /**
16      * シャドウを描画しないモード。
17      */
18     NONE(0x00),
19
20     /**
21      * シャドウ描画の質がカメラからの距離の影響をあまり受けないモード。
22      *
23      * <p>※MMDのUIにおけるデフォルト。
24      */
25     MODE_1(0x01),
26
27     /**
28      * シャドウ描画の質をカメラからの距離に応じて劣化させることにより、
29      * カメラに近いオブジェクトのシャドウ描画の質を向上させるモード。
30      */
31     MODE_2(0x02),
32
33     ;
34
35
36     private static final int MASK_8 = 0xff;
37
38
39     private final byte code;
40
41
42     /**
43      * コンストラクタ。
44      *
45      * @param code 割り当て番号(byte)
46      */
47     ShadowMode(byte code){
48         this.code = code;
49         return;
50     }
51
52     /**
53      * コンストラクタ。
54      *
55      * @param iVal 割り当て番号(int)
56      *     ※上位24bitは捨てられる。
57      */
58     ShadowMode(int iVal){
59         this((byte)(iVal & MASK_8));
60         return;
61     }
62
63
64     /**
65      * byte型値に符号化された時の値を返す。
66      *
67      * @return byte型値に符号化された時の値
68      */
69     public byte getEncodedByte(){
70         return this.code;
71     }
72
73     /**
74      * byte型値から描画モードを復号する。
75      *
76      * @param bVal byte型値
77      * @return 描画モード。未定義の値が与えられた場合はnull。
78      */
79     public static ShadowMode decode(byte bVal){
80         ShadowMode result = null;
81
82         if     (bVal == NONE  .code) result = NONE;
83         else if(bVal == MODE_1.code) result = MODE_1;
84         else if(bVal == MODE_2.code) result = MODE_2;
85
86         return result;
87     }
88
89     /**
90      * int型値から描画モードを復号する。
91      *
92      * <p>上位24bitは無視される。
93      *
94      * @param iVal int型値
95      * @return 描画モード。未定義の値が与えられた場合はnull。
96      */
97     public static ShadowMode decode(int iVal){
98         return decode((byte)(iVal & MASK_8));
99     }
100
101 }