mirror of
https://gitlab.com/ProcyonLotor/vrchat-template.git
synced 2026-08-25 18:53:53 +05:00
Compare commits
4 Commits
project-st
...
7ca0e2faa4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7ca0e2faa4 | ||
|
|
198471b5d3 | ||
|
|
41345c2979 | ||
|
|
9babc05256 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -28,6 +28,9 @@
|
||||
# Visual Studio cache directory
|
||||
.vs/
|
||||
|
||||
# Visual Studio Code trash
|
||||
.vscode/
|
||||
|
||||
# Gradle cache directory
|
||||
.gradle/
|
||||
|
||||
@@ -90,6 +93,7 @@ crashlytics-build.properties
|
||||
/[Aa]ssets/UdonSharp/Scripts/Editor/
|
||||
/[Aa]ssets/UdonSharp/Scripts/Editor.meta
|
||||
/[Aa]ssets/SerializedUdonPrograms*
|
||||
/ClientSimStorage/
|
||||
|
||||
# UdonSharp trash
|
||||
/[Aa]ssets/UdonSharp
|
||||
|
||||
347
.vscode/settings.json
vendored
Normal file
347
.vscode/settings.json
vendored
Normal 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
|
||||
]
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -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()
|
||||
Binary file not shown.
@@ -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()
|
||||
@@ -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()
|
||||
@@ -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.
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
20
README.md
20
README.md
@@ -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
6
vpm-repositories.txt
Normal 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
|
||||
Reference in New Issue
Block a user