diff --git a/lib/linguist/generated.rb b/lib/linguist/generated.rb index 12987196..ccbaba85 100644 --- a/lib/linguist/generated.rb +++ b/lib/linguist/generated.rb @@ -68,6 +68,7 @@ module Linguist generated_protocol_buffer_go? || generated_protocol_buffer? || generated_jni_header? || + generated_unity3d_meta? || vcr_cassette? end @@ -311,5 +312,18 @@ module Linguist return false unless lines.count > 1 return lines[0].include?("Generated by Cython") end + + # Internal: Is this a metadata file from Unity3D? + # + # Unity3D Meta files start with: + # fileFormatVersion: X + # guid: XXXXXXXXXXXXXXX + # + # Return true or false + def generated_unity3d_meta? + return false unless extname == '.meta' + return false unless lines.count > 1 + return lines[0].include?("fileFormatVersion: ") + end end end diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 63f6b252..ca88446f 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -3290,6 +3290,19 @@ Unified Parallel C: - .upc tm_scope: source.c +Unity3D Asset: + type: data + ace_mode: yaml + color: "#ab69a1" + extensions: + - .anim + - .asset + - .mat + - .meta + - .prefab + - .unity + tm_scope: source.yaml + UnrealScript: type: programming color: "#a54c4d" diff --git a/samples/Unity3D Asset/GapTile.mat b/samples/Unity3D Asset/GapTile.mat new file mode 100644 index 00000000..07078927 --- /dev/null +++ b/samples/Unity3D Asset/GapTile.mat @@ -0,0 +1,28 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: GapTile + m_Shader: {fileID: 10750, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: [] + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: e503f0c932121ce4881ab1605349488b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: {} + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/samples/Unity3D Asset/Hover.anim b/samples/Unity3D Asset/Hover.anim new file mode 100644 index 00000000..c2c5cfab --- /dev/null +++ b/samples/Unity3D Asset/Hover.anim @@ -0,0 +1,157 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Hover + serializedVersion: 4 + m_AnimationType: 1 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_PositionCurves: [] + m_ScaleCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .25, y: .25, z: .25} + inSlope: {x: 1.15384614, y: 1.15384614, z: 1.15384614} + outSlope: {x: 1.15384614, y: 1.15384614, z: 1.15384614} + tangentMode: 823140368 + - time: .649999976 + value: {x: 1, y: 1, z: 1} + inSlope: {x: 1.15384614, y: 1.15384614, z: 1.15384614} + outSlope: {x: 1.15384614, y: 1.15384614, z: 1.15384614} + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: Radius + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: -1.53846157 + outSlope: -1.53846157 + tangentMode: 10 + - time: .649999976 + value: 0 + inSlope: -1.53846157 + outSlope: -1.53846157 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_Color.a + path: Radius + classID: 212 + script: {fileID: 0} + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: [] + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: .649999976 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .25 + inSlope: 1.15384614 + outSlope: 1.15384614 + tangentMode: 10 + - time: .649999976 + value: 1 + inSlope: 1.15384614 + outSlope: 1.15384614 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalScale.x + path: Radius + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .25 + inSlope: 1.15384614 + outSlope: 1.15384614 + tangentMode: 10 + - time: .649999976 + value: 1 + inSlope: 1.15384614 + outSlope: 1.15384614 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalScale.y + path: Radius + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .25 + inSlope: 1.15384614 + outSlope: 1.15384614 + tangentMode: 10 + - time: .649999976 + value: 1 + inSlope: 1.15384614 + outSlope: 1.15384614 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalScale.z + path: Radius + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: -1.53846157 + outSlope: -1.53846157 + tangentMode: 10 + - time: .649999976 + value: 0 + inSlope: -1.53846157 + outSlope: -1.53846157 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_Color.a + path: Radius + classID: 212 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_Events: [] diff --git a/samples/Unity3D Asset/Tiles.meta b/samples/Unity3D Asset/Tiles.meta new file mode 100644 index 00000000..61ec47d5 --- /dev/null +++ b/samples/Unity3D Asset/Tiles.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 9e5c401e9d1d5415fbf2854b29c004c4 +folderAsset: yes +DefaultImporter: + userData: diff --git a/samples/Unity3D Asset/TimeManager.asset b/samples/Unity3D Asset/TimeManager.asset new file mode 100644 index 00000000..f0e494b6 --- /dev/null +++ b/samples/Unity3D Asset/TimeManager.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!5 &1 +TimeManager: + m_ObjectHideFlags: 0 + Fixed Timestep: .0199999996 + Maximum Allowed Timestep: .333333343 + m_TimeScale: 1 diff --git a/samples/Unity3D Asset/canvas_Fullscreen_Fader.prefab b/samples/Unity3D Asset/canvas_Fullscreen_Fader.prefab new file mode 100644 index 00000000..0664d47e --- /dev/null +++ b/samples/Unity3D Asset/canvas_Fullscreen_Fader.prefab @@ -0,0 +1,157 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400000} + - 222: {fileID: 22200000} + - 114: {fileID: 11400004} + - 114: {fileID: 11400002} + - 114: {fileID: 11400000} + m_Layer: 5 + m_Name: Fader_Tint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100002 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400002} + - 223: {fileID: 22300000} + m_Layer: 5 + m_Name: canvas_Fullscreen_Fader + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0e5786b8fa0564f23a168e1c45671759, type: 3} + m_Name: + m_EditorClassIdentifier: + fadeOut: 1 + alwaysUseClearAsStartColor: 0 + _fadeOnStart: 1 + _startFaded: 0 + _fadeOnStartDelay: 1 + _fadeTime: .800000012 +--- !u!114 &11400002 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6d2a81ac2fb947e8a9aa86b4133fafd, type: 3} + m_Name: + m_EditorClassIdentifier: + _toDeactivate: [] +--- !u!114 &11400004 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 0} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .996078432, g: .949019611, b: .862745106, a: 1} + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &22200000 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} +--- !u!223 &22300000 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingLayerID: 0 + m_SortingOrder: 1 +--- !u!224 &22400000 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400002} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400002 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22400000} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 100002} + m_IsPrefabParent: 1 + m_IsExploded: 1 diff --git a/test/test_blob.rb b/test/test_blob.rb index 138eef8e..f2efbd5f 100644 --- a/test/test_blob.rb +++ b/test/test_blob.rb @@ -243,6 +243,9 @@ class TestBlob < Minitest::Test # Cython-generated C/C++ assert sample_blob("C/sgd_fast.c").generated? assert sample_blob("C++/wrapper_inner.cpp").generated? + + # Unity3D-generated metadata + assert sample_blob("Unity3D Asset/Tiles.meta").generated? end def test_vendored