@@ -17,28 +17,35 @@ open System.IO
1717module SnapshotProfile =
1818 let private log = Logging.getLogger( " SnapshotProfile" )
1919
20- type Profile ( name , posX , uvX , flipTangent , vecEncoding : string ) =
21- let vecEncoding = vecEncoding.Trim()
22- let isPacked = vecEncoding.ToLowerInvariant() = " packed"
23- let isOcta = vecEncoding.ToLowerInvariant() = " octa"
24-
25- do
26- if vecEncoding = " " && not isPacked && not isOcta then
27- log.Warn " Illegal vector encoding for specified profile %A : %A " name vecEncoding
28-
29- member x.Name with get() = name
30- member x.PosXForm with get() = posX
31- member x.UVXForm with get() = uvX
32- member x.FlipTang with get() = flipTangent
33- member x.VecEncoding with get() = vecEncoding
34-
35- member x.IsPackedVec () = isPacked
36- member x.IsOctaVec () = isOcta
20+ type Profile () =
21+ let mutable name : string = " " ;
22+ let mutable posX : ResizeArray < String > = new ResizeArray< string>();
23+ let mutable uvX : ResizeArray < String > = new ResizeArray< string>();
24+ let mutable flipTangent : bool = false ;
25+ let mutable vecEncoding : string = " " ;
26+
27+ static member Create ( name , posX , uvX , flipTangent , vecEncoding : string ): Profile =
28+ let p = new Profile()
29+ p.Name <- name
30+ p.PosXForm <- posX
31+ p.UVXForm <- uvX
32+ p.FlipTang <- flipTangent
33+ p.VecEncoding <- vecEncoding
34+ p
35+
36+ member x.Name with get() = name and set v = name <- v
37+ member x.PosXForm with get() = posX and set v = posX <- v
38+ member x.UVXForm with get() = uvX and set v = uvX <- v
39+ member x.FlipTang with get() = flipTangent and set v = flipTangent <- v
40+ member x.VecEncoding with get() = vecEncoding and set v = vecEncoding <- v
41+
42+ member x.IsPackedVec () = vecEncoding.Trim() .ToLowerInvariant() = " packed"
43+ member x.IsOctaVec () = vecEncoding.Trim() .ToLowerInvariant() = " octa"
3744
3845 override x.ToString () =
3946 sprintf " [SnapshotProfile: %s ; pos: %A ; uv: %A , fliptangent: %A , vecencoding: %A ]" name posX uvX flipTangent vecEncoding
4047
41- let EmptyProfile = Profile( " " ,[],[] , false , " " )
48+ let EmptyProfile = Profile.Create ( " " , new ResizeArray < string >(), new ResizeArray < string >() ,false , " " )
4249
4350 /// This profile should always exist in SnapshotProfiles.yaml.
4451 /// If it does not, new game profiles will be created with an empty snapshot profile (not an error, but not desirable either)
@@ -62,13 +69,13 @@ module SnapshotProfile =
6269 let pname = p.Key |> Yaml.toString
6370 let pvals = p.Value |> Yaml.toMapping " expected a mapping"
6471
65- let getStrList def key =
72+ let getStrArray def key =
6673 pvals
6774 |> Yaml.getOptionalValue key
6875 |> Yaml.toOptionalSequence
6976 |> function
7077 | None -> def
71- | Some s -> s |> Seq.map Yaml.toString |> List .ofSeq
78+ | Some s -> s |> Seq.map Yaml.toString |> Array .ofSeq |> fun a -> new ResizeArray < string >( a )
7279
7380 let getBool def key =
7481 pvals
@@ -87,12 +94,12 @@ module SnapshotProfile =
8794 | Some s -> s
8895
8996
90- let posX = getStrList [] " pos"
91- let uvX = getStrList [] " uv"
97+ let posX = getStrArray ( new ResizeArray < string >()) " pos"
98+ let uvX = getStrArray ( new ResizeArray < string >()) " uv"
9299 let flipTang = getBool false " flipTangent"
93100 let vecEncoding = getString " " " vecEncoding"
94101
95- profiles.Add( pname, Profile( pname, posX, uvX, flipTang, vecEncoding))
102+ profiles.Add( pname, Profile.Create ( pname, posX, uvX, flipTang, vecEncoding))
96103 )
97104 profiles.ToArray() |> Map.ofArray
98105
0 commit comments