Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
R
RhythmKata
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
13정준영
RhythmKata
Commits
c44545c1
Commit
c44545c1
authored
Nov 03, 2019
by
Lokan Chung
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bms parser
parent
41566948
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
502 additions
and
5 deletions
+502
-5
Resources.meta
RhythmKata/Assets/Resources.meta
+2
-3
PlayEngineScene.unity
RhythmKata/Assets/Scenes/PlayEngineScene.unity
+296
-0
PlayEngineScene.unity.meta
RhythmKata/Assets/Scenes/PlayEngineScene.unity.meta
+7
-0
BmsImporter.cs
RhythmKata/Assets/Scripts/BmsImporter.cs
+17
-0
BmsImporter.cs.meta
RhythmKata/Assets/Scripts/BmsImporter.cs.meta
+11
-0
Core.meta
RhythmKata/Assets/Scripts/Core.meta
+3
-1
BMS.cs
RhythmKata/Assets/Scripts/Core/BMS.cs
+104
-0
BMS.cs.meta
RhythmKata/Assets/Scripts/Core/BMS.cs.meta
+11
-0
Level.cs
RhythmKata/Assets/Scripts/Core/Level.cs
+9
-0
Level.cs.meta
RhythmKata/Assets/Scripts/Core/Level.cs.meta
+11
-0
PlayEngine.cs
RhythmKata/Assets/Scripts/PlayEngine.cs
+19
-0
PlayEngine.cs.meta
RhythmKata/Assets/Scripts/PlayEngine.cs.meta
+11
-0
Resources.meta
RhythmKata/Assets/SteamVR_Resources/Resources.meta
+1
-1
No files found.
RhythmKata/Assets/
SteamVR/Input/Editor/
Resources.meta
→
RhythmKata/Assets/Resources.meta
View file @
c44545c1
fileFormatVersion: 2
guid:
7d5e740d15d7ca249b884d30ff558bc1
guid:
4db589ffc5bd1fe4aa0302d48e45c4cb
folderAsset: yes
timeCreated: 1547747995
licenseType: Store
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
RhythmKata/Assets/Scenes/PlayEngineScene.unity
0 → 100644
View file @
c44545c1
%YAML
1.1
%TAG
!u!
tag:unity3d.com,2011:
---
!u!29
&1
OcclusionCullingSettings
:
m_ObjectHideFlags
:
0
serializedVersion
:
2
m_OcclusionBakeSettings
:
smallestOccluder
:
5
smallestHole
:
0.25
backfaceThreshold
:
100
m_SceneGUID
:
00000000000000000000000000000000
m_OcclusionCullingData
:
{
fileID
:
0
}
---
!u!104
&2
RenderSettings
:
m_ObjectHideFlags
:
0
serializedVersion
:
9
m_Fog
:
0
m_FogColor
:
{
r
:
0.5
,
g
:
0.5
,
b
:
0.5
,
a
:
1
}
m_FogMode
:
3
m_FogDensity
:
0.01
m_LinearFogStart
:
0
m_LinearFogEnd
:
300
m_AmbientSkyColor
:
{
r
:
0.212
,
g
:
0.227
,
b
:
0.259
,
a
:
1
}
m_AmbientEquatorColor
:
{
r
:
0.114
,
g
:
0.125
,
b
:
0.133
,
a
:
1
}
m_AmbientGroundColor
:
{
r
:
0.047
,
g
:
0.043
,
b
:
0.035
,
a
:
1
}
m_AmbientIntensity
:
1
m_AmbientMode
:
0
m_SubtractiveShadowColor
:
{
r
:
0.42
,
g
:
0.478
,
b
:
0.627
,
a
:
1
}
m_SkyboxMaterial
:
{
fileID
:
10304
,
guid
:
0000000000000000f000000000000000
,
type
:
0
}
m_HaloStrength
:
0.5
m_FlareStrength
:
1
m_FlareFadeSpeed
:
3
m_HaloTexture
:
{
fileID
:
0
}
m_SpotCookie
:
{
fileID
:
10001
,
guid
:
0000000000000000e000000000000000
,
type
:
0
}
m_DefaultReflectionMode
:
0
m_DefaultReflectionResolution
:
128
m_ReflectionBounces
:
1
m_ReflectionIntensity
:
1
m_CustomReflection
:
{
fileID
:
0
}
m_Sun
:
{
fileID
:
0
}
m_IndirectSpecularColor
:
{
r
:
0
,
g
:
0
,
b
:
0
,
a
:
1
}
m_UseRadianceAmbientProbe
:
0
---
!u!157
&3
LightmapSettings
:
m_ObjectHideFlags
:
0
serializedVersion
:
11
m_GIWorkflowMode
:
1
m_GISettings
:
serializedVersion
:
2
m_BounceScale
:
1
m_IndirectOutputScale
:
1
m_AlbedoBoost
:
1
m_EnvironmentLightingMode
:
0
m_EnableBakedLightmaps
:
1
m_EnableRealtimeLightmaps
:
1
m_LightmapEditorSettings
:
serializedVersion
:
12
m_Resolution
:
2
m_BakeResolution
:
40
m_AtlasSize
:
1024
m_AO
:
0
m_AOMaxDistance
:
1
m_CompAOExponent
:
1
m_CompAOExponentDirect
:
0
m_ExtractAmbientOcclusion
:
0
m_Padding
:
2
m_LightmapParameters
:
{
fileID
:
0
}
m_LightmapsBakeMode
:
1
m_TextureCompression
:
1
m_FinalGather
:
0
m_FinalGatherFiltering
:
1
m_FinalGatherRayCount
:
256
m_ReflectionCompression
:
2
m_MixedBakeMode
:
2
m_BakeBackend
:
1
m_PVRSampling
:
1
m_PVRDirectSampleCount
:
32
m_PVRSampleCount
:
512
m_PVRBounces
:
2
m_PVREnvironmentSampleCount
:
256
m_PVREnvironmentReferencePointCount
:
2048
m_PVRFilteringMode
:
1
m_PVRDenoiserTypeDirect
:
1
m_PVRDenoiserTypeIndirect
:
1
m_PVRDenoiserTypeAO
:
1
m_PVRFilterTypeDirect
:
0
m_PVRFilterTypeIndirect
:
0
m_PVRFilterTypeAO
:
0
m_PVREnvironmentMIS
:
1
m_PVRCulling
:
1
m_PVRFilteringGaussRadiusDirect
:
1
m_PVRFilteringGaussRadiusIndirect
:
5
m_PVRFilteringGaussRadiusAO
:
2
m_PVRFilteringAtrousPositionSigmaDirect
:
0.5
m_PVRFilteringAtrousPositionSigmaIndirect
:
2
m_PVRFilteringAtrousPositionSigmaAO
:
1
m_ExportTrainingData
:
0
m_TrainingDataDestination
:
TrainingData
m_LightingDataAsset
:
{
fileID
:
0
}
m_UseShadowmask
:
1
---
!u!196
&4
NavMeshSettings
:
serializedVersion
:
2
m_ObjectHideFlags
:
0
m_BuildSettings
:
serializedVersion
:
2
agentTypeID
:
0
agentRadius
:
0.5
agentHeight
:
2
agentSlope
:
45
agentClimb
:
0.4
ledgeDropHeight
:
0
maxJumpAcrossDistance
:
0
minRegionArea
:
2
manualCellSize
:
0
cellSize
:
0.16666667
manualTileSize
:
0
tileSize
:
256
accuratePlacement
:
0
debug
:
m_Flags
:
0
m_NavMeshData
:
{
fileID
:
0
}
---
!u!1
&554177699
GameObject
:
m_ObjectHideFlags
:
0
m_CorrespondingSourceObject
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
serializedVersion
:
6
m_Component
:
-
component
:
{
fileID
:
554177702
}
-
component
:
{
fileID
:
554177701
}
-
component
:
{
fileID
:
554177700
}
m_Layer
:
0
m_Name
:
Main Camera
m_TagString
:
MainCamera
m_Icon
:
{
fileID
:
0
}
m_NavMeshLayer
:
0
m_StaticEditorFlags
:
0
m_IsActive
:
1
---
!u!81
&554177700
AudioListener
:
m_ObjectHideFlags
:
0
m_CorrespondingSourceObject
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
554177699
}
m_Enabled
:
1
---
!u!20
&554177701
Camera
:
m_ObjectHideFlags
:
0
m_CorrespondingSourceObject
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
554177699
}
m_Enabled
:
1
serializedVersion
:
2
m_ClearFlags
:
1
m_BackGroundColor
:
{
r
:
0.19215687
,
g
:
0.3019608
,
b
:
0.4745098
,
a
:
0
}
m_projectionMatrixMode
:
1
m_GateFitMode
:
2
m_FOVAxisMode
:
0
m_SensorSize
:
{
x
:
36
,
y
:
24
}
m_LensShift
:
{
x
:
0
,
y
:
0
}
m_FocalLength
:
50
m_NormalizedViewPortRect
:
serializedVersion
:
2
x
:
0
y
:
0
width
:
1
height
:
1
near clip plane
:
0.3
far clip plane
:
1000
field of view
:
60
orthographic
:
0
orthographic size
:
5
m_Depth
:
-1
m_CullingMask
:
serializedVersion
:
2
m_Bits
:
4294967295
m_RenderingPath
:
-1
m_TargetTexture
:
{
fileID
:
0
}
m_TargetDisplay
:
0
m_TargetEye
:
3
m_HDR
:
1
m_AllowMSAA
:
1
m_AllowDynamicResolution
:
0
m_ForceIntoRT
:
0
m_OcclusionCulling
:
1
m_StereoConvergence
:
10
m_StereoSeparation
:
0.022
---
!u!4
&554177702
Transform
:
m_ObjectHideFlags
:
0
m_CorrespondingSourceObject
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
554177699
}
m_LocalRotation
:
{
x
:
0
,
y
:
0
,
z
:
0
,
w
:
1
}
m_LocalPosition
:
{
x
:
0
,
y
:
1
,
z
:
-10
}
m_LocalScale
:
{
x
:
1
,
y
:
1
,
z
:
1
}
m_Children
:
[]
m_Father
:
{
fileID
:
0
}
m_RootOrder
:
0
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
---
!u!1
&1656085082
GameObject
:
m_ObjectHideFlags
:
0
m_CorrespondingSourceObject
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
serializedVersion
:
6
m_Component
:
-
component
:
{
fileID
:
1656085084
}
-
component
:
{
fileID
:
1656085083
}
m_Layer
:
0
m_Name
:
Directional Light
m_TagString
:
Untagged
m_Icon
:
{
fileID
:
0
}
m_NavMeshLayer
:
0
m_StaticEditorFlags
:
0
m_IsActive
:
1
---
!u!108
&1656085083
Light
:
m_ObjectHideFlags
:
0
m_CorrespondingSourceObject
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
1656085082
}
m_Enabled
:
1
serializedVersion
:
9
m_Type
:
1
m_Color
:
{
r
:
1
,
g
:
0.95686275
,
b
:
0.8392157
,
a
:
1
}
m_Intensity
:
1
m_Range
:
10
m_SpotAngle
:
30
m_InnerSpotAngle
:
21.80208
m_CookieSize
:
10
m_Shadows
:
m_Type
:
2
m_Resolution
:
-1
m_CustomResolution
:
-1
m_Strength
:
1
m_Bias
:
0.05
m_NormalBias
:
0.4
m_NearPlane
:
0.2
m_CullingMatrixOverride
:
e00
:
1
e01
:
0
e02
:
0
e03
:
0
e10
:
0
e11
:
1
e12
:
0
e13
:
0
e20
:
0
e21
:
0
e22
:
1
e23
:
0
e30
:
0
e31
:
0
e32
:
0
e33
:
1
m_UseCullingMatrixOverride
:
0
m_Cookie
:
{
fileID
:
0
}
m_DrawHalo
:
0
m_Flare
:
{
fileID
:
0
}
m_RenderMode
:
0
m_CullingMask
:
serializedVersion
:
2
m_Bits
:
4294967295
m_RenderingLayerMask
:
1
m_Lightmapping
:
4
m_LightShadowCasterMode
:
0
m_AreaSize
:
{
x
:
1
,
y
:
1
}
m_BounceIntensity
:
1
m_ColorTemperature
:
6570
m_UseColorTemperature
:
0
m_BoundingSphereOverride
:
{
x
:
0
,
y
:
0
,
z
:
0
,
w
:
0
}
m_UseBoundingSphereOverride
:
0
m_ShadowRadius
:
0
m_ShadowAngle
:
0
---
!u!4
&1656085084
Transform
:
m_ObjectHideFlags
:
0
m_CorrespondingSourceObject
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
1656085082
}
m_LocalRotation
:
{
x
:
0.40821788
,
y
:
-0.23456968
,
z
:
0.10938163
,
w
:
0.8754261
}
m_LocalPosition
:
{
x
:
0
,
y
:
3
,
z
:
0
}
m_LocalScale
:
{
x
:
1
,
y
:
1
,
z
:
1
}
m_Children
:
[]
m_Father
:
{
fileID
:
0
}
m_RootOrder
:
1
m_LocalEulerAnglesHint
:
{
x
:
50
,
y
:
-30
,
z
:
0
}
RhythmKata/Assets/Scenes/PlayEngineScene.unity.meta
0 → 100644
View file @
c44545c1
fileFormatVersion: 2
guid: d7ad222e50666d1429ebca57a0f5c1ea
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
RhythmKata/Assets/Scripts/BmsImporter.cs
0 → 100644
View file @
c44545c1
using
System.Collections
;
using
System.Collections.Generic
;
using
UnityEngine
;
using
UnityEditor.Experimental.AssetImporters
;
using
System.IO
;
[
ScriptedImporter
(
1
,
"bms"
)]
public
class
BmsImporter
:
ScriptedImporter
{
public
override
void
OnImportAsset
(
AssetImportContext
ctx
)
{
var
textAsset
=
new
TextAsset
(
File
.
ReadAllText
(
ctx
.
assetPath
));
ctx
.
AddObjectToAsset
(
ctx
.
assetPath
,
textAsset
);
ctx
.
SetMainObject
(
textAsset
);
}
}
RhythmKata/Assets/Scripts/BmsImporter.cs.meta
0 → 100644
View file @
c44545c1
fileFormatVersion: 2
guid: ee6f618bc43a08e44b3b2906bfdcf282
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
RhythmKata/Assets/S
teamVR/Resources
.meta
→
RhythmKata/Assets/S
cripts/Core
.meta
View file @
c44545c1
fileFormatVersion: 2
guid:
40af2f692be87864ba388a27fcac9ed8
guid:
52ff476f202a19c4a8b7079ca51d20d1
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
RhythmKata/Assets/Scripts/Core/BMS.cs
0 → 100644
View file @
c44545c1
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Text.RegularExpressions
;
using
System.Threading.Tasks
;
using
UnityEngine
;
class
BMS
{
// metadata
public
string
title
;
public
double
bpm
;
public
string
genre
;
public
string
author
;
public
List
<
BmsNote
>
notes
=
new
List
<
BmsNote
>();
public
Level
ToLevel
()
{
return
new
Level
();
}
}
class
BmsNote
{
public
string
num
;
public
string
lane
;
public
double
barTime
;
}
class
BmsParser
{
private
static
char
[]
SEP_NEWLINE
=
{
'\n'
};
private
static
char
[]
SEP_SPACE
=
{
' '
};
private
static
char
[]
SEP_COLON
=
{
':'
};
private
static
Regex
RX_DATALINE
=
new
Regex
(
@"#[0-9]{5}"
);
public
BMS
Parse
(
string
raw
)
{
var
lines
=
raw
.
Split
(
SEP_NEWLINE
);
var
bms
=
new
BMS
();
foreach
(
var
line
in
lines
)
{
// metadata
if
(
line
.
StartsWith
(
"#TITLE"
))
bms
.
title
=
line
.
Substring
(
line
.
IndexOf
(
' '
)
+
1
);
if
(
line
.
StartsWith
(
"#GENRE"
))
bms
.
genre
=
line
.
Substring
(
line
.
IndexOf
(
' '
)
+
1
);
if
(
line
.
StartsWith
(
"#BPM"
))
bms
.
bpm
=
double
.
Parse
(
line
.
Substring
(
line
.
IndexOf
(
' '
)
+
1
));
if
(
line
.
StartsWith
(
"#ARTIST"
))
bms
.
author
=
line
.
Substring
(
line
.
IndexOf
(
' '
)
+
1
);
// data lane
if
(
RX_DATALINE
.
IsMatch
(
line
))
{
var
bar
=
int
.
Parse
(
line
.
Substring
(
1
,
3
));
var
lane
=
line
.
Substring
(
4
,
2
);
var
data
=
line
.
Substring
(
7
).
Trim
();
// no support for variable bar length or bpm yet
if
((
data
.
Length
&
1
)
==
1
||
data
.
Contains
(
"."
))
{
// ignore these lines
}
var
denominator
=
data
.
Length
/
2
;
// process notes in the bar
for
(
int
i
=
0
;
i
<
data
.
Length
;
i
+=
2
)
{
var
num
=
line
.
Substring
(
i
,
2
);
var
barTime
=
bar
+
i
/
(
double
)
denominator
;
// ignore empty notes
if
(
num
!=
"00"
)
{
var
note
=
new
BmsNote
();
note
.
num
=
num
;
note
.
lane
=
lane
;
note
.
barTime
=
barTime
;
bms
.
notes
.
Add
(
note
);
}
}
}
}
Debug
.
Log
(
bms
.
author
);
Debug
.
Log
(
bms
.
bpm
);
Debug
.
Log
(
bms
.
title
);
Debug
.
Log
(
bms
.
genre
);
return
bms
;
}
}
\ No newline at end of file
RhythmKata/Assets/Scripts/Core/BMS.cs.meta
0 → 100644
View file @
c44545c1
fileFormatVersion: 2
guid: f31159f38d2d6e041810a2a0b1feb949
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
RhythmKata/Assets/Scripts/Core/Level.cs
0 → 100644
View file @
c44545c1
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
class
Level
{
}
RhythmKata/Assets/Scripts/Core/Level.cs.meta
0 → 100644
View file @
c44545c1
fileFormatVersion: 2
guid: c149c1db9056bde4db8a201b0d09a605
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
RhythmKata/Assets/Scripts/PlayEngine.cs
0 → 100644
View file @
c44545c1
using
System.Collections
;
using
System.Collections.Generic
;
using
UnityEngine
;
public
class
PlayEngine
:
MonoBehaviour
{
public
void
Awake
()
{
loadAndPlay
(
"Level/test"
);
}
public
void
loadAndPlay
(
string
assetPath
)
{
Debug
.
Log
(
string
.
Format
(
"LOADING LEVEL: {0}"
,
assetPath
));
var
raw
=
Resources
.
Load
<
TextAsset
>(
assetPath
);
var
bms
=
new
BmsParser
().
Parse
(
raw
.
text
);
var
level
=
bms
.
ToLevel
();
}
}
RhythmKata/Assets/Scripts/PlayEngine.cs.meta
0 → 100644
View file @
c44545c1
fileFormatVersion: 2
guid: cb855524a23a32a43a730dbccc41c251
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
RhythmKata/Assets/SteamVR_Resources/Resources.meta
View file @
c44545c1
fileFormatVersion: 2
guid:
53e7865ed14c65d4587a4fa922c6d0d7
guid:
65d67098ad8184b4fb4dfbe9dd84b76f
folderAsset: yes
DefaultImporter:
externalObjects: {}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment