3 Commits

Author SHA1 Message Date
raccoon
308c7bd793 Added Avatars settings and package 2025-09-22 21:57:27 +05:00
raccoon
41345c2979 Added Unity files associations for VSCode 2025-09-22 21:50:20 +05:00
raccoon
9babc05256 Added steps for existing project 2025-09-22 21:49:36 +05:00
59 changed files with 414 additions and 645 deletions

347
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,347 @@
{
"files.associations": {
"*.anim": "yaml",
"*.asset": "yaml",
"*.controller": "yaml",
"*.cubemap": "yaml",
"*.flare": "yaml",
"*.lighting": "yaml",
"*.mask": "yaml",
"*.mat": "yaml",
"*.meta": "yaml",
"*.prefab": "yaml",
"*.unity": "yaml"
},
"yaml.customTags": [
"tag:unity3d.com,2011:0 mapping", // object
"tag:unity3d.com,2011:1 mapping", // GameObject
"tag:unity3d.com,2011:2 mapping", // Component
"tag:unity3d.com,2011:3 mapping", // LevelGameManager
"tag:unity3d.com,2011:4 mapping", // Transform
"tag:unity3d.com,2011:5 mapping", // TimeManager
"tag:unity3d.com,2011:6 mapping", // GlobalGameManager
"tag:unity3d.com,2011:8 mapping", // Behaviour
"tag:unity3d.com,2011:9 mapping", // GameManager
"tag:unity3d.com,2011:11 mapping", // AudioManager
"tag:unity3d.com,2011:13 mapping", // InputManager
"tag:unity3d.com,2011:18 mapping", // EditorExtension
"tag:unity3d.com,2011:19 mapping", // Physics2DSettings
"tag:unity3d.com,2011:20 mapping", // Camera
"tag:unity3d.com,2011:21 mapping", // Material
"tag:unity3d.com,2011:23 mapping", // MeshRenderer
"tag:unity3d.com,2011:25 mapping", // Renderer
"tag:unity3d.com,2011:27 mapping", // Texture
"tag:unity3d.com,2011:28 mapping", // Texture2D
"tag:unity3d.com,2011:29 mapping", // OcclusionCullingSettings
"tag:unity3d.com,2011:30 mapping", // GraphicsSettings
"tag:unity3d.com,2011:33 mapping", // MeshFilter
"tag:unity3d.com,2011:41 mapping", // OcclusionPortal
"tag:unity3d.com,2011:43 mapping", // Mesh
"tag:unity3d.com,2011:45 mapping", // Skybox
"tag:unity3d.com,2011:47 mapping", // QualitySettings
"tag:unity3d.com,2011:48 mapping", // Shader
"tag:unity3d.com,2011:49 mapping", // TextAsset
"tag:unity3d.com,2011:50 mapping", // Rigidbody2D
"tag:unity3d.com,2011:53 mapping", // Collider2D
"tag:unity3d.com,2011:54 mapping", // Rigidbody
"tag:unity3d.com,2011:55 mapping", // PhysicsManager
"tag:unity3d.com,2011:56 mapping", // Collider
"tag:unity3d.com,2011:57 mapping", // Joint
"tag:unity3d.com,2011:58 mapping", // CircleCollider2D
"tag:unity3d.com,2011:59 mapping", // HingeJoint
"tag:unity3d.com,2011:60 mapping", // PolygonCollider2D
"tag:unity3d.com,2011:61 mapping", // BoxCollider2D
"tag:unity3d.com,2011:62 mapping", // PhysicsMaterial2D
"tag:unity3d.com,2011:64 mapping", // MeshCollider
"tag:unity3d.com,2011:65 mapping", // BoxCollider
"tag:unity3d.com,2011:66 mapping", // CompositeCollider2D
"tag:unity3d.com,2011:68 mapping", // EdgeCollider2D
"tag:unity3d.com,2011:70 mapping", // CapsuleCollider2D
"tag:unity3d.com,2011:72 mapping", // ComputeShader
"tag:unity3d.com,2011:74 mapping", // AnimationClip
"tag:unity3d.com,2011:75 mapping", // ConstantForce
"tag:unity3d.com,2011:78 mapping", // TagManager
"tag:unity3d.com,2011:81 mapping", // AudioListener
"tag:unity3d.com,2011:82 mapping", // AudioSource
"tag:unity3d.com,2011:83 mapping", // AudioClip
"tag:unity3d.com,2011:84 mapping", // RenderTexture
"tag:unity3d.com,2011:86 mapping", // CustomRenderTexture
"tag:unity3d.com,2011:89 mapping", // Cubemap
"tag:unity3d.com,2011:90 mapping", // Avatar
"tag:unity3d.com,2011:91 mapping", // AnimatorController
"tag:unity3d.com,2011:93 mapping", // RuntimeAnimatorController
"tag:unity3d.com,2011:94 mapping", // ShaderNameRegistry
"tag:unity3d.com,2011:95 mapping", // Animator
"tag:unity3d.com,2011:96 mapping", // TrailRenderer
"tag:unity3d.com,2011:98 mapping", // DelayedCallManager
"tag:unity3d.com,2011:102 mapping", // TextMesh
"tag:unity3d.com,2011:104 mapping", // RenderSettings
"tag:unity3d.com,2011:108 mapping", // Light
"tag:unity3d.com,2011:109 mapping", // ShaderInclude
"tag:unity3d.com,2011:110 mapping", // BaseAnimationTrack
"tag:unity3d.com,2011:111 mapping", // Animation
"tag:unity3d.com,2011:114 mapping", // MonoBehaviour
"tag:unity3d.com,2011:115 mapping", // MonoScript
"tag:unity3d.com,2011:116 mapping", // MonoManager
"tag:unity3d.com,2011:117 mapping", // Texture3D
"tag:unity3d.com,2011:118 mapping", // NewAnimationTrack
"tag:unity3d.com,2011:119 mapping", // Projector
"tag:unity3d.com,2011:120 mapping", // LineRenderer
"tag:unity3d.com,2011:121 mapping", // Flare
"tag:unity3d.com,2011:122 mapping", // Halo
"tag:unity3d.com,2011:123 mapping", // LensFlare
"tag:unity3d.com,2011:124 mapping", // FlareLayer
"tag:unity3d.com,2011:126 mapping", // NavMeshProjectSettings
"tag:unity3d.com,2011:128 mapping", // Font
"tag:unity3d.com,2011:129 mapping", // PlayerSettings
"tag:unity3d.com,2011:130 mapping", // NamedObject
"tag:unity3d.com,2011:134 mapping", // PhysicMaterial
"tag:unity3d.com,2011:135 mapping", // SphereCollider
"tag:unity3d.com,2011:136 mapping", // CapsuleCollider
"tag:unity3d.com,2011:137 mapping", // SkinnedMeshRenderer
"tag:unity3d.com,2011:138 mapping", // FixedJoint
"tag:unity3d.com,2011:141 mapping", // BuildSettings
"tag:unity3d.com,2011:142 mapping", // AssetBundle
"tag:unity3d.com,2011:143 mapping", // CharacterController
"tag:unity3d.com,2011:144 mapping", // CharacterJoint
"tag:unity3d.com,2011:145 mapping", // SpringJoint
"tag:unity3d.com,2011:146 mapping", // WheelCollider
"tag:unity3d.com,2011:147 mapping", // ResourceManager
"tag:unity3d.com,2011:150 mapping", // PreloadData
"tag:unity3d.com,2011:152 mapping", // MovieTexture
"tag:unity3d.com,2011:153 mapping", // ConfigurableJoint
"tag:unity3d.com,2011:154 mapping", // TerrainCollider
"tag:unity3d.com,2011:156 mapping", // TerrainData
"tag:unity3d.com,2011:157 mapping", // LightmapSettings
"tag:unity3d.com,2011:158 mapping", // WebCamTexture
"tag:unity3d.com,2011:159 mapping", // EditorSettings
"tag:unity3d.com,2011:162 mapping", // EditorUserSettings
"tag:unity3d.com,2011:164 mapping", // AudioReverbFilter
"tag:unity3d.com,2011:165 mapping", // AudioHighPassFilter
"tag:unity3d.com,2011:166 mapping", // AudioChorusFilter
"tag:unity3d.com,2011:167 mapping", // AudioReverbZone
"tag:unity3d.com,2011:168 mapping", // AudioEchoFilter
"tag:unity3d.com,2011:169 mapping", // AudioLowPassFilter
"tag:unity3d.com,2011:170 mapping", // AudioDistortionFilter
"tag:unity3d.com,2011:171 mapping", // SparseTexture
"tag:unity3d.com,2011:180 mapping", // AudioBehaviour
"tag:unity3d.com,2011:181 mapping", // AudioFilter
"tag:unity3d.com,2011:182 mapping", // WindZone
"tag:unity3d.com,2011:183 mapping", // Cloth
"tag:unity3d.com,2011:184 mapping", // SubstanceArchive
"tag:unity3d.com,2011:185 mapping", // ProceduralMaterial
"tag:unity3d.com,2011:186 mapping", // ProceduralTexture
"tag:unity3d.com,2011:187 mapping", // Texture2DArray
"tag:unity3d.com,2011:188 mapping", // CubemapArray
"tag:unity3d.com,2011:191 mapping", // OffMeshLink
"tag:unity3d.com,2011:192 mapping", // OcclusionArea
"tag:unity3d.com,2011:193 mapping", // Tree
"tag:unity3d.com,2011:195 mapping", // NavMeshAgent
"tag:unity3d.com,2011:196 mapping", // NavMeshSettings
"tag:unity3d.com,2011:198 mapping", // ParticleSystem
"tag:unity3d.com,2011:199 mapping", // ParticleSystemRenderer
"tag:unity3d.com,2011:200 mapping", // ShaderVariantCollection
"tag:unity3d.com,2011:205 mapping", // LODGroup
"tag:unity3d.com,2011:206 mapping", // BlendTree
"tag:unity3d.com,2011:207 mapping", // Motion
"tag:unity3d.com,2011:208 mapping", // NavMeshObstacle
"tag:unity3d.com,2011:210 mapping", // SortingGroup
"tag:unity3d.com,2011:212 mapping", // SpriteRenderer
"tag:unity3d.com,2011:213 mapping", // Sprite
"tag:unity3d.com,2011:214 mapping", // CachedSpriteAtlas
"tag:unity3d.com,2011:215 mapping", // ReflectionProbe
"tag:unity3d.com,2011:218 mapping", // Terrain
"tag:unity3d.com,2011:220 mapping", // LightProbeGroup
"tag:unity3d.com,2011:221 mapping", // AnimatorOverrideController
"tag:unity3d.com,2011:222 mapping", // CanvasRenderer
"tag:unity3d.com,2011:223 mapping", // Canvas
"tag:unity3d.com,2011:224 mapping", // RectTransform
"tag:unity3d.com,2011:225 mapping", // CanvasGroup
"tag:unity3d.com,2011:226 mapping", // BillboardAsset
"tag:unity3d.com,2011:227 mapping", // BillboardRenderer
"tag:unity3d.com,2011:228 mapping", // SpeedTreeWindAsset
"tag:unity3d.com,2011:229 mapping", // AnchoredJoint2D
"tag:unity3d.com,2011:230 mapping", // Joint2D
"tag:unity3d.com,2011:231 mapping", // SpringJoint2D
"tag:unity3d.com,2011:232 mapping", // DistanceJoint2D
"tag:unity3d.com,2011:233 mapping", // HingeJoint2D
"tag:unity3d.com,2011:234 mapping", // SliderJoint2D
"tag:unity3d.com,2011:235 mapping", // WheelJoint2D
"tag:unity3d.com,2011:236 mapping", // ClusterInputManager
"tag:unity3d.com,2011:237 mapping", // BaseVideoTexture
"tag:unity3d.com,2011:238 mapping", // NavMeshData
"tag:unity3d.com,2011:240 mapping", // AudioMixer
"tag:unity3d.com,2011:241 mapping", // AudioMixerController
"tag:unity3d.com,2011:243 mapping", // AudioMixerGroupController
"tag:unity3d.com,2011:244 mapping", // AudioMixerEffectController
"tag:unity3d.com,2011:245 mapping", // AudioMixerSnapshotController
"tag:unity3d.com,2011:246 mapping", // PhysicsUpdateBehaviour2D
"tag:unity3d.com,2011:247 mapping", // ConstantForce2D
"tag:unity3d.com,2011:248 mapping", // Effector2D
"tag:unity3d.com,2011:249 mapping", // AreaEffector2D
"tag:unity3d.com,2011:250 mapping", // PointEffector2D
"tag:unity3d.com,2011:251 mapping", // PlatformEffector2D
"tag:unity3d.com,2011:252 mapping", // SurfaceEffector2D
"tag:unity3d.com,2011:253 mapping", // BuoyancyEffector2D
"tag:unity3d.com,2011:254 mapping", // RelativeJoint2D
"tag:unity3d.com,2011:255 mapping", // FixedJoint2D
"tag:unity3d.com,2011:256 mapping", // FrictionJoint2D
"tag:unity3d.com,2011:257 mapping", // TargetJoint2D
"tag:unity3d.com,2011:258 mapping", // LightProbes
"tag:unity3d.com,2011:259 mapping", // LightProbeProxyVolume
"tag:unity3d.com,2011:271 mapping", // SampleClip
"tag:unity3d.com,2011:272 mapping", // AudioMixerSnapshot
"tag:unity3d.com,2011:273 mapping", // AudioMixerGroup
"tag:unity3d.com,2011:290 mapping", // AssetBundleManifest
"tag:unity3d.com,2011:300 mapping", // RuntimeInitializeOnLoadManager
"tag:unity3d.com,2011:310 mapping", // UnityConnectSettings
"tag:unity3d.com,2011:319 mapping", // AvatarMask
"tag:unity3d.com,2011:320 mapping", // PlayableDirector
"tag:unity3d.com,2011:328 mapping", // VideoPlayer
"tag:unity3d.com,2011:329 mapping", // VideoClip
"tag:unity3d.com,2011:330 mapping", // ParticleSystemForceField
"tag:unity3d.com,2011:331 mapping", // SpriteMask
"tag:unity3d.com,2011:363 mapping", // OcclusionCullingData
"tag:unity3d.com,2011:1001 mapping", // PrefabInstance
"tag:unity3d.com,2011:1002 mapping", // EditorExtensionImpl
"tag:unity3d.com,2011:1003 mapping", // AssetImporter
"tag:unity3d.com,2011:1005 mapping", // Mesh3DSImporter
"tag:unity3d.com,2011:1006 mapping", // TextureImporter
"tag:unity3d.com,2011:1007 mapping", // ShaderImporter
"tag:unity3d.com,2011:1008 mapping", // ComputeShaderImporter
"tag:unity3d.com,2011:1020 mapping", // AudioImporter
"tag:unity3d.com,2011:1026 mapping", // HierarchyState
"tag:unity3d.com,2011:1028 mapping", // AssetMetaData
"tag:unity3d.com,2011:1029 mapping", // DefaultAsset
"tag:unity3d.com,2011:1030 mapping", // DefaultImporter
"tag:unity3d.com,2011:1031 mapping", // TextScriptImporter
"tag:unity3d.com,2011:1032 mapping", // SceneAsset
"tag:unity3d.com,2011:1034 mapping", // NativeFormatImporter
"tag:unity3d.com,2011:1035 mapping", // MonoImporter
"tag:unity3d.com,2011:1038 mapping", // LibraryAssetImporter
"tag:unity3d.com,2011:1040 mapping", // ModelImporter
"tag:unity3d.com,2011:1041 mapping", // FBXImporter
"tag:unity3d.com,2011:1042 mapping", // TrueTypeFontImporter
"tag:unity3d.com,2011:1045 mapping", // EditorBuildSettings
"tag:unity3d.com,2011:1048 mapping", // InspectorExpandedState
"tag:unity3d.com,2011:1049 mapping", // AnnotationManager
"tag:unity3d.com,2011:1050 mapping", // PluginImporter
"tag:unity3d.com,2011:1051 mapping", // EditorUserBuildSettings
"tag:unity3d.com,2011:1055 mapping", // IHVImageFormatImporter
"tag:unity3d.com,2011:1101 mapping", // AnimatorStateTransition
"tag:unity3d.com,2011:1102 mapping", // AnimatorState
"tag:unity3d.com,2011:1105 mapping", // HumanTemplate
"tag:unity3d.com,2011:1107 mapping", // AnimatorStateMachine
"tag:unity3d.com,2011:1108 mapping", // PreviewAnimationClip
"tag:unity3d.com,2011:1109 mapping", // AnimatorTransition
"tag:unity3d.com,2011:1110 mapping", // SpeedTreeImporter
"tag:unity3d.com,2011:1111 mapping", // AnimatorTransitionBase
"tag:unity3d.com,2011:1112 mapping", // SubstanceImporter
"tag:unity3d.com,2011:1113 mapping", // LightmapParameters
"tag:unity3d.com,2011:1120 mapping", // LightingDataAsset
"tag:unity3d.com,2011:1124 mapping", // SketchUpImporter
"tag:unity3d.com,2011:1125 mapping", // BuildReport
"tag:unity3d.com,2011:1126 mapping", // PackedAssets
"tag:unity3d.com,2011:1127 mapping", // VideoClipImporter
"tag:unity3d.com,2011:100000 mapping", // int
"tag:unity3d.com,2011:100001 mapping", // bool
"tag:unity3d.com,2011:100002 mapping", // float
"tag:unity3d.com,2011:100003 mapping", // MonoObject
"tag:unity3d.com,2011:100004 mapping", // Collision
"tag:unity3d.com,2011:100005 mapping", // Vector3f
"tag:unity3d.com,2011:100006 mapping", // RootMotionData
"tag:unity3d.com,2011:100007 mapping", // Collision2D
"tag:unity3d.com,2011:100008 mapping", // AudioMixerLiveUpdateFloat
"tag:unity3d.com,2011:100009 mapping", // AudioMixerLiveUpdateBool
"tag:unity3d.com,2011:100010 mapping", // Polygon2D
"tag:unity3d.com,2011:100011 mapping", // void
"tag:unity3d.com,2011:19719996 mapping", // TilemapCollider2D
"tag:unity3d.com,2011:41386430 mapping", // ImportLog
"tag:unity3d.com,2011:55640938 mapping", // GraphicsStateCollection
"tag:unity3d.com,2011:73398921 mapping", // VFXRenderer
"tag:unity3d.com,2011:156049354 mapping", // Grid
"tag:unity3d.com,2011:156483287 mapping", // ScenesUsingAssets
"tag:unity3d.com,2011:171741748 mapping", // ArticulationBody
"tag:unity3d.com,2011:181963792 mapping", // Preset
"tag:unity3d.com,2011:285090594 mapping", // IConstraint
"tag:unity3d.com,2011:294290339 mapping", // AssemblyDefinitionReferenceImporter
"tag:unity3d.com,2011:355983997 mapping", // AudioResource
"tag:unity3d.com,2011:369655926 mapping", // AssetImportInProgressProxy
"tag:unity3d.com,2011:382020655 mapping", // PluginBuildInfo
"tag:unity3d.com,2011:387306366 mapping", // MemorySettings
"tag:unity3d.com,2011:403037116 mapping", // BuildMetaDataImporter
"tag:unity3d.com,2011:403037117 mapping", // BuildInstructionImporter
"tag:unity3d.com,2011:426301858 mapping", // EditorProjectAccess
"tag:unity3d.com,2011:468431735 mapping", // PrefabImporter
"tag:unity3d.com,2011:483693784 mapping", // TilemapRenderer
"tag:unity3d.com,2011:612988286 mapping", // SpriteAtlasAsset
"tag:unity3d.com,2011:638013454 mapping", // SpriteAtlasDatabase
"tag:unity3d.com,2011:641289076 mapping", // AudioBuildInfo
"tag:unity3d.com,2011:644342135 mapping", // CachedSpriteAtlasRuntimeData
"tag:unity3d.com,2011:655991488 mapping", // MultiplayerManager
"tag:unity3d.com,2011:662584278 mapping", // AssemblyDefinitionReferenceAsset
"tag:unity3d.com,2011:668709126 mapping", // BuiltAssetBundleInfoSet
"tag:unity3d.com,2011:687078895 mapping", // SpriteAtlas
"tag:unity3d.com,2011:747330370 mapping", // RayTracingShaderImporter
"tag:unity3d.com,2011:780535461 mapping", // BuildArchiveImporter
"tag:unity3d.com,2011:815301076 mapping", // PreviewImporter
"tag:unity3d.com,2011:825902497 mapping", // RayTracingShader
"tag:unity3d.com,2011:850595691 mapping", // LightingSettings
"tag:unity3d.com,2011:877146078 mapping", // PlatformModuleSetup
"tag:unity3d.com,2011:890905787 mapping", // VersionControlSettings
"tag:unity3d.com,2011:893571522 mapping", // CustomCollider2D
"tag:unity3d.com,2011:895512359 mapping", // AimConstraint
"tag:unity3d.com,2011:937362698 mapping", // VFXManager
"tag:unity3d.com,2011:947337230 mapping", // RoslynAnalyzerConfigAsset
"tag:unity3d.com,2011:954905827 mapping", // RuleSetFileAsset
"tag:unity3d.com,2011:994735392 mapping", // VisualEffectSubgraph
"tag:unity3d.com,2011:994735403 mapping", // VisualEffectSubgraphOperator
"tag:unity3d.com,2011:994735404 mapping", // VisualEffectSubgraphBlock
"tag:unity3d.com,2011:1001480554 mapping", // Prefab
"tag:unity3d.com,2011:1027052791 mapping", // LocalizationImporter
"tag:unity3d.com,2011:1114811875 mapping", // ReferencesArtifactGenerator
"tag:unity3d.com,2011:1152215463 mapping", // AssemblyDefinitionAsset
"tag:unity3d.com,2011:1154873562 mapping", // SceneVisibilityState
"tag:unity3d.com,2011:1183024399 mapping", // LookAtConstraint
"tag:unity3d.com,2011:1210832254 mapping", // SpriteAtlasImporter
"tag:unity3d.com,2011:1233149941 mapping", // AudioContainerElement
"tag:unity3d.com,2011:1268269756 mapping", // GameObjectRecorder
"tag:unity3d.com,2011:1307931743 mapping", // AudioRandomContainer
"tag:unity3d.com,2011:1325145578 mapping", // LightingDataAssetParent
"tag:unity3d.com,2011:1386491679 mapping", // PresetManager
"tag:unity3d.com,2011:1403656975 mapping", // StreamingManager
"tag:unity3d.com,2011:1480428607 mapping", // LowerResBlitTexture
"tag:unity3d.com,2011:1521398425 mapping", // VideoBuildInfo
"tag:unity3d.com,2011:1541671625 mapping", // C4DImporter
"tag:unity3d.com,2011:1542919678 mapping", // StreamingController
"tag:unity3d.com,2011:1557264870 mapping", // ShaderContainer
"tag:unity3d.com,2011:1597193336 mapping", // RoslynAdditionalFileAsset
"tag:unity3d.com,2011:1642787288 mapping", // RoslynAdditionalFileImporter
"tag:unity3d.com,2011:1652712579 mapping", // MultiplayerRolesData
"tag:unity3d.com,2011:1660057539 mapping", // SceneRoots
"tag:unity3d.com,2011:1731078267 mapping", // BrokenPrefabAsset
"tag:unity3d.com,2011:1736697216 mapping", // AndroidAssetPackImporter
"tag:unity3d.com,2011:1742807556 mapping", // GridLayout
"tag:unity3d.com,2011:1766753193 mapping", // AssemblyDefinitionImporter
"tag:unity3d.com,2011:1773428102 mapping", // ParentConstraint
"tag:unity3d.com,2011:1777034230 mapping", // RuleSetFileImporter
"tag:unity3d.com,2011:1818360608 mapping", // PositionConstraint
"tag:unity3d.com,2011:1818360609 mapping", // RotationConstraint
"tag:unity3d.com,2011:1818360610 mapping", // ScaleConstraint
"tag:unity3d.com,2011:1839735485 mapping", // Tilemap
"tag:unity3d.com,2011:1896753125 mapping", // PackageManifest
"tag:unity3d.com,2011:1896753126 mapping", // PackageManifestImporter
"tag:unity3d.com,2011:1903396204 mapping", // RoslynAnalyzerConfigImporter
"tag:unity3d.com,2011:1931382933 mapping", // UIRenderer
"tag:unity3d.com,2011:1953259897 mapping", // TerrainLayer
"tag:unity3d.com,2011:1971053207 mapping", // SpriteShapeRenderer
"tag:unity3d.com,2011:2058629509 mapping", // VisualEffectAsset
"tag:unity3d.com,2011:2058629510 mapping", // VisualEffectImporter
"tag:unity3d.com,2011:2058629511 mapping", // VisualEffectResource
"tag:unity3d.com,2011:2059678085 mapping", // VisualEffectObject
"tag:unity3d.com,2011:2083052967 mapping", // VisualEffect
"tag:unity3d.com,2011:2083778819 mapping", // LocalizationAsset
"tag:unity3d.com,2011:2089858483 mapping", // ScriptedImporter
"tag:unity3d.com,2011:2103361453 mapping", // ShaderIncludeImporter
]
}

View File

@@ -1 +0,0 @@

View File

@@ -1 +0,0 @@

View File

@@ -1 +0,0 @@

View File

@@ -1,72 +0,0 @@
from math import pi
import bpy
from bpy.types import Context, Operator
def create_triplanar_setup(context: Context) -> None:
"""
Creates triplanar setup - a mesh cube with UVProject modifier and 6 UV projectors
:param context: Current context
:type context: bpy.types.Context
"""
bpy.ops.object.empty_add(type='CUBE', radius=1.6, location=(1.6, 1.6, 1.6), rotation=(0, 0, 0))
anchor_empty = context.active_object
anchor_empty.name = "UV_anchor"
bpy.ops.mesh.primitive_cube_add(radius=1, calc_uvs=True)
cube_obj = context.active_object
bpy.ops.object.modifier_add(type='UV_PROJECT')
uv_mod = cube_obj.modifiers["UVProject"]
rotations_list = [
("top", (0, 0, 0)),
("front", (pi/2, 0, 0)),
("back", (pi/2, 0, pi)),
("left", (pi/2, 0, pi/2)),
("right", (pi/2, 0, -pi/2)),
("bottom", (pi, 0, 0)),
]
uv_mod.projector_count = len(rotations_list)
for i, (name, rotation) in enumerate(rotations_list):
bpy.ops.object.empty_add(type='SINGLE_ARROW', radius=1.6, location=(0, 0, 0), rotation=rotation)
uv_projector = context.active_object
uv_projector.name = "UV_%s" % name
uv_projector.parent = anchor_empty
uv_mod.projectors[i].object = uv_projector
class MESH_OT_AddTriplanarSetup(Operator):
bl_idname = "mesh.setup_triplanar_add"
bl_label = "Triplanar UV Setup"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context: Context):
try:
create_triplanar_setup(context)
except Exception as e:
self.report({'ERROR'}, str(e))
return {'CANCELLED'}
return {'FINISHED'}
def draw_triplanar_setup(self, context):
self.layout.operator(MESH_OT_AddTriplanarSetup.bl_idname, icon='MOD_UVPROJECT')
def register():
bpy.utils.register_class(MESH_OT_AddTriplanarSetup)
if draw_triplanar_setup.__name__ not in [f.__name__ for f in bpy.types.INFO_MT_mesh_add._dyn_ui_initialize()]:
bpy.types.INFO_MT_mesh_add.append(draw_triplanar_setup)
def unregister():
bpy.types.INFO_MT_mesh_add.remove(draw_triplanar_setup)
bpy.utils.unregister_class(MESH_OT_AddTriplanarSetup)
register()

View File

@@ -1,288 +0,0 @@
import os
from datetime import datetime
import bpy
_FUTURE = bpy.app.version >= (2, 80, 0)
from bpy.props import BoolProperty, EnumProperty, IntProperty, StringProperty
from bpy.types import Context, Operator, Panel, Scene, UIList
if _FUTURE:
from bpy.types import Collection as Group
else:
from bpy.types import Group as Group
def message_box(message: str, title: str = "Message", icon: str = 'INFO') -> None:
"""Shows modal window with a message
:param message: Message text
:param title: Window title
:param icon: Window icon
"""
def draw(self, context):
col = self.layout.column(align=True)
for line in message.strip().split("\n"):
col.label(text=line)
bpy.context.window_manager.popup_menu(draw, title=title, icon=icon)
def name_as_path(name: str) -> str:
"""Converts and sanitizes an arbitrary string to a canonical path with OS-specific separator
:param name: Some name
:returns: Canonical path
"""
return os.path.join(*[bpy.path.clean_name(n) for n in name.replace("\\", "/").split("/") if n]) + ".fbx"
def fbx_export(context: Context) -> None:
"""
Export all objects Groups to ASCII FBX
"""
print("[%s] Batch FBX export begin" % datetime.now())
settings_ascii = dict(
# Common
version='ASCII6100',
axis_forward='-Z',
axis_up='Y',
global_scale=1.0,
object_types=context.scene.fbx_object_types,
use_selection=True,
# Mesh
mesh_smooth_type='FACE',
use_mesh_edges=False,
use_mesh_modifiers=context.scene.fbx_use_modifiers,
use_tspace=False,
# Armature
add_leaf_bones=False,
armature_nodetype='NULL',
primary_bone_axis='Y',
secondary_bone_axis='X',
use_armature_deform_only=True,
# Animation
use_anim=context.scene.fbx_use_anim,
use_default_take=False,
# File
batch_mode='OFF',
path_mode='RELATIVE',
)
settings_binary = dict(
# Common
version='BIN7400',
axis_forward='-Z',
axis_up='Y',
apply_scale_options='FBX_SCALE_ALL',
apply_unit_scale=True,
bake_space_transform=True,
global_scale=1.0,
object_types=context.scene.fbx_object_types,
use_custom_props=True,
use_selection=True,
# Mesh
mesh_smooth_type='FACE',
use_mesh_edges=False,
use_mesh_modifiers=context.scene.fbx_use_modifiers,
use_mesh_modifiers_render=True,
use_tspace=False,
# Armature
add_leaf_bones=False,
armature_nodetype='NULL',
primary_bone_axis='Y',
secondary_bone_axis='X',
use_armature_deform_only=True,
# Animation
bake_anim=context.scene.fbx_use_anim,
bake_anim_force_startend_keying=True,
bake_anim_simplify_factor=1.0,
bake_anim_step=1.0,
bake_anim_use_all_actions=True,
bake_anim_use_all_bones=True,
bake_anim_use_nla_strips=True,
# File
batch_mode='OFF',
embed_textures=False,
path_mode='RELATIVE',
)
settings = settings_binary if _FUTURE or context.scene.fbx_force_binary else settings_ascii
if _FUTURE:
settings.pop('version')
rootpath = os.path.normpath(bpy.path.abspath(context.scene.fbx_export_dir))
groups = bpy.data.collections if _FUTURE else bpy.data.groups
override = context.copy()
for group in [g for g in groups if g.fbx_exportable]:
filepath = os.path.join(rootpath, name_as_path(group.name))
basepath = os.path.dirname(filepath)
if not os.path.exists(basepath):
os.makedirs(basepath)
override.update(
{
"selected_objects": group.objects
}
)
settings.update(
{
"filepath": filepath
}
)
if bpy.app.version >= (4, 0, 0):
with context.temp_override(**override):
bpy.ops.export_scene.fbx(**settings)
else:
bpy.ops.export_scene.fbx(override, **settings)
print("\n[%s] Batch FBX export end." % datetime.now())
class FBX_OT_ManualExport(Operator):
bl_idname = "fbx.manual_export"
bl_label = "Manual Export"
bl_description = "Export FBX manualy"
def execute(self, context):
try:
fbx_export(context)
except Exception as e:
self.report({'ERROR'}, str(e))
return {'CANCELLED'}
return {'FINISHED'}
class FBX_UL_ExportItems(UIList):
def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
row = layout.row(align=True)
row.prop(item, "fbx_exportable", icon='CHECKBOX_HLT' if item.fbx_exportable else 'CHECKBOX_DEHLT', text="", emboss=False)
row.prop(item, "name", text="", emboss=False, icon='GROUP')
class SCENE_PT_fbx_autoexport(Panel):
"""Creates a Panel in the scene context of the properties editor"""
bl_label = "FBX Auto-Export"
bl_idname = "SCENE_PT_fbx_autoexport"
bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW'
bl_context = "scene"
def draw(self, context):
layout = self.layout
scene = context.scene
col = layout.column()
split = col.split()
sub = split.column()
sub.label(text="Filter groups:")
sub.template_list("FBX_UL_ExportItems", "", bpy.data, "collections" if _FUTURE else "groups", scene, "fbx_group_index", rows=5)
sub = split.column()
sub.label(text="Filter object types:")
sub.prop(scene, "fbx_object_types")
col.separator()
if _FUTURE:
col.use_property_split = True
col.use_property_decorate = False
col.prop(scene, "fbx_on_save")
col.prop(scene, "fbx_use_anim")
col.prop(scene, "fbx_use_modifiers")
if not _FUTURE:
col.prop(scene, "fbx_force_binary")
col.separator()
col.prop(scene, "fbx_export_dir")
col.operator(FBX_OT_ManualExport.bl_idname)
def on_save(*args, **kwargs) -> None:
"""
Runs when Blender file is being saved
"""
if not bpy.context.scene.fbx_on_save:
return
try:
fbx_export(bpy.context)
except Exception as e:
message_box(str(e), "Export error", 'ERROR')
classes = [
FBX_OT_ManualExport,
FBX_UL_ExportItems,
SCENE_PT_fbx_autoexport,
]
def register() -> None:
for cls in classes:
bpy.utils.register_class(cls)
Scene.fbx_export_dir = StringProperty(
name="FBX Export Dir",
description="FBX Export Directory",
subtype="DIR_PATH",
default="//../fbx/",
)
Scene.fbx_on_save = BoolProperty(
name="Export on save",
description="Export FBX on Blender file save",
default=False
)
Scene.fbx_object_types = EnumProperty(
name="Object Types",
options={'ENUM_FLAG'},
items=(
('EMPTY', "Empty", ""),
('CAMERA', "Camera", ""),
('LAMP', "Lamp", ""),
('ARMATURE', "Armature", "WARNING: not supported in dupli/group instances"),
('MESH', "Mesh", ""),
('OTHER', "Other", "Other geometry types, like curve, metaball, etc. (converted to meshes)"),
),
description="Which kind of object to export",
default={'ARMATURE', 'EMPTY', 'MESH', 'OTHER'},
)
Scene.fbx_group_index = IntProperty(default=0)
Scene.fbx_force_binary = BoolProperty(
name="Binary Format",
description="Force export FBX file as binary",
default=False
)
Scene.fbx_use_anim = BoolProperty(
name="Include Animation",
description="Export baked keyframe animation",
default=False
)
Scene.fbx_use_modifiers = BoolProperty(
name="Apply Modifiers",
description="Apply modifiers to mesh objects.\n** WARNING: Breaks exporting shape keys",
default=False,
)
Group.fbx_exportable = BoolProperty(
name="Export Group",
description="Mark group as FBX exportable",
default=False
)
bpy.app.handlers.save_pre.append(on_save)
def unregister() -> None:
bpy.app.handlers.save_pre.remove(on_save)
del Group.fbx_exportable
del Scene.fbx_use_modifiers
del Scene.fbx_use_anim
del Scene.fbx_force_binary
del Scene.fbx_group_index
del Scene.fbx_object_types
del Scene.fbx_on_save
del Scene.fbx_export_dir
for cls in reversed(classes):
bpy.utils.unregister_class(cls)
register()

View File

@@ -1,91 +0,0 @@
import bpy
from bpy.props import FloatProperty
from bpy.types import Context, Operator, Panel
class ArmEditOperator:
@classmethod
def poll(cls, context: Context):
return (
context.active_object
and context.active_object.type == 'ARMATURE'
and context.active_bone
and context.mode == 'EDIT_ARMATURE'
)
class ARMATURE_OT_ReadBoneLength(ArmEditOperator, Operator):
"""Make length property equal to actual bone length"""
bl_idname = "armature.read_bone_length"
bl_label = "Read Bone Length"
bl_options = {'UNDO'}
def execute(self, context):
context.active_bone.bbone_y = context.active_bone.length
return {'FINISHED'}
class ARMATURE_OT_MakeBoneSquare(ArmEditOperator, Operator):
"""Make bone's width and depth equal to it's length"""
bl_idname = "armature.make_bone_square"
bl_label = "Make Bone Square"
bl_options = {'UNDO'}
def execute(self, context):
context.active_bone.bbone_x = context.active_bone.bbone_z = context.active_bone.length * 0.5
return {'FINISHED'}
class VIEW3D_PT_bone_size(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "Bone Size"
bl_options = {'DEFAULT_CLOSED'}
@classmethod
def poll(cls, context: Context):
scene = context.space_data
ob = context.active_object
return scene and ob and ob.type == 'ARMATURE' and ob.mode == 'EDIT'
def draw(self, context: Context):
layout = self.layout
col = layout.column()
col.prop(context.active_bone, "bbone_x", text="Bone Width")
col.prop(context.active_bone, "bbone_z", text="Bone Depth")
sub = col.row(align=True)
sub.operator(ARMATURE_OT_ReadBoneLength.bl_idname, icon="COPYDOWN", text="")
sub.prop(context.active_bone, "bbone_y", text="Bone Length")
col.operator(ARMATURE_OT_MakeBoneSquare.bl_idname, icon="MESH_PLANE")
def update_length(self, context) -> None:
context.active_bone.length = self.bbone_y
def register():
bpy.types.EditBone.bbone_y = FloatProperty(
name="B-Bone Display Y Length",
description="B-Bone Y size",
default=1.0,
min=0.0,
soft_min=0.001,
step=10,
precision=3,
options={'HIDDEN'},
update=update_length,
)
bpy.utils.register_class(ARMATURE_OT_ReadBoneLength)
bpy.utils.register_class(ARMATURE_OT_MakeBoneSquare)
bpy.utils.register_class(VIEW3D_PT_bone_size)
def unregister():
bpy.utils.unregister_class(VIEW3D_PT_bone_size)
bpy.utils.unregister_class(ARMATURE_OT_MakeBoneSquare)
bpy.utils.unregister_class(ARMATURE_OT_ReadBoneLength)
del bpy.types.EditBone.bbone_y
register()

View File

@@ -1,113 +0,0 @@
import math
import bpy
from bpy.props import EnumProperty, IntProperty
HU_TO_METERS_RATIO = 0.025 # 1hu = 2.5cm
GRID_SUBDIVISIONS = 8
class VIEW3D_OT_ResetGrid(bpy.types.Operator):
"""Reset grid settings to defaults"""
bl_idname = "screen.reset_grid"
bl_label = "Reset Grid"
bl_options = {'UNDO'}
def execute(self, context):
context.space_data.grid_lines = 16
context.space_data.grid_scale = 1.0
context.space_data.grid_subdivisions = 10
return {'FINISHED'}
class VIEW3D_PT_grid_level(bpy.types.Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "Grid Level"
def draw(self, context):
layout = self.layout
row = layout.row()
row.prop(context.scene, "grid_type", expand=True)
col = layout.column()
if context.scene.grid_type == 'HAMMER':
col.prop(context.scene, "grid_hu")
grid_size = pow(2, context.scene.grid_hu)
split = col.split(align=True)
col_l = split.column()
col_l.alignment = 'RIGHT'
col_l.label("Hammer Units:")
col_l.label("Meters:")
col_r = split.column()
col_r.label("%i hu" % grid_size)
col_r.label("%.3f m" % (grid_size * HU_TO_METERS_RATIO))
elif context.scene.grid_type == 'POWEROF2':
col.prop(context.scene, "grid_po2")
layout.operator(VIEW3D_OT_ResetGrid.bl_idname)
def update_grid_hu(self, context) -> None:
grid_size = pow(2, self.grid_hu)
context.space_data.grid_lines = max(3, math.ceil(1024 / grid_size))
context.space_data.grid_scale = grid_size * HU_TO_METERS_RATIO
context.space_data.grid_subdivisions = GRID_SUBDIVISIONS
def update_grid_po2(self, context) -> None:
context.space_data.grid_lines = max(3, pow(2, self.grid_po2 + 5))
context.space_data.grid_scale = 1 / pow(2, self.grid_po2)
context.space_data.grid_subdivisions = GRID_SUBDIVISIONS
def update_type(self, context) -> None:
if self.grid_type == 'HAMMER':
update_grid_hu(self, context)
elif self.grid_type == 'POWEROF2':
update_grid_po2(self, context)
def register():
bpy.types.Scene.grid_type = EnumProperty(
items=(
('HAMMER', "Hammer Units", "Main basic settings"),
('POWEROF2', "Power Of 2", "Armature-related settings"),
),
name="Grid type",
description="",
update=update_type,
)
bpy.types.Scene.grid_hu = IntProperty(
name="Grid level",
description="Hammer Units grid level",
min=0,
max=9,
default=6,
update=update_grid_hu,
)
bpy.types.Scene.grid_po2 = IntProperty(
name="Grid divisions",
description="Grid divisions in power of 2",
min=-4,
max=4,
default=0,
update=update_grid_po2,
)
bpy.utils.register_class(VIEW3D_OT_ResetGrid)
bpy.utils.register_class(VIEW3D_PT_grid_level)
def unregister():
bpy.utils.unregister_class(VIEW3D_PT_grid_level)
bpy.utils.register_class(VIEW3D_OT_ResetGrid)
del bpy.types.Scene.grid_po2
del bpy.types.Scene.grid_hu
del bpy.types.Scene.grid_type
register()

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,5 +1,8 @@
{
"dependencies": {
"com.vrchat.avatars": {
"version": "3.x"
},
"com.vrchat.core.vpm-resolver": {
"version": "0.1.x"
}

View File

@@ -4,13 +4,13 @@
QualitySettings:
m_ObjectHideFlags: 0
serializedVersion: 5
m_CurrentQuality: 2
m_CurrentQuality: 3
m_QualitySettings:
- serializedVersion: 2
name: VRC Low
pixelLightCount: 4
shadows: 2
shadowResolution: 1
shadowResolution: 2
shadowProjection: 1
shadowCascades: 2
shadowDistance: 75
@@ -58,7 +58,7 @@ QualitySettings:
skinWeights: 4
textureQuality: 0
anisotropicTextures: 2
antiAliasing: 2
antiAliasing: 4
softParticles: 1
softVegetation: 1
realtimeReflectionProbes: 1
@@ -86,6 +86,43 @@ QualitySettings:
shadows: 2
shadowResolution: 3
shadowProjection: 1
shadowCascades: 2
shadowDistance: 75
shadowNearPlaneOffset: 2
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
skinWeights: 4
textureQuality: 0
anisotropicTextures: 2
antiAliasing: 4
softParticles: 1
softVegetation: 1
realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
vSyncCount: 0
lodBias: 2
maximumLODLevel: 0
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 4096
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 128
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
customRenderPipeline: {fileID: 0}
excludedTargetPlatforms:
- Android
- serializedVersion: 2
name: VRC Ultra
pixelLightCount: 8
shadows: 2
shadowResolution: 3
shadowProjection: 1
shadowCascades: 4
shadowDistance: 150
shadowNearPlaneOffset: 2

View File

@@ -1,8 +1,11 @@
# VRChat Unity project template
Omni-template for making VRChat content
## Synopsis
The template have:
- Unity Editor settings for work with Git
- Git settings for work with Unity Editor
- Git LFS attributes
@@ -14,7 +17,8 @@ The template have:
The repository have separate branches for separate content types, the only difference between them is default packages in `Packages/vpm-manifest.json`
> Branches structure
> ```
>
> ```text
> -master-+---------------------->
> |\
> | \-world-------------->
@@ -22,7 +26,8 @@ The repository have separate branches for separate content types, the only diffe
> \-avatar------------->
> ```
## How to use
## How to use for a new project
1. `git init` a new repo from the branch you want
2. Init Git LFS with `git lfs install`
3. Open the project in Unity
@@ -31,10 +36,21 @@ The repository have separate branches for separate content types, the only diffe
> After opening the project in Unity Editor you might want to add **all** new files to Git.
## How to work with existing project
1. Check that you have git-lfs installed `git lfs status`
2. Pull existing repo `git pull https://gitlab.com/ProcyonLotor/vrchat-template.git` and optionally pull all LFS objects `git lfs fetch --all`
(repo will take much more disk space, but will have complete project history)
3. (Optional) Some VPM packages might come from Community Repositories,
add them from project's [vpm-repositories.txt](./vpm-repositories.txt) file to CreatorCompanion,
or run this command in project's folder `FOR /F %L IN (.\vpm-repositories.txt) DO vpm add repo %L`
(command requires `vpm` tool installed, see [vpm cli](https://vcc.docs.vrchat.com/vpm/cli/))
> **IMPORTANT**: When opening a previously worked on project on a new machine, Unity may warn you about script errors and suggest you enter Safe Mode,
> this is because VPM has not loaded yet and didn't resolved the required packages, ignore the errors and continue loading.
> Sometimes you may need to reopen the project couple times for all packages to resolve and scripts to recompile.
## License
For project's license see [LICENSE](./LICENSE) file.
Project contains `com.vrchat.core.bootstrap` package, for license see [Packages/com.vrchat.core.bootstrap/License.md](./Packages/com.vrchat.core.bootstrap/License.md) file.

6
vpm-repositories.txt Normal file
View File

@@ -0,0 +1,6 @@
https://adjerry91.github.io/VRCFaceTracking-Templates/index.json
https://poiyomi.github.io/vpm/index.json
https://redsim.github.io/vpmlisting/index.json
https://spokeek.github.io/goloco/index.json
https://vcc.vrcfury.com/
https://wholesomevr.github.io/SPS-Configurator/index.json