├── .gitignore ├── Brushes.meta ├── Brushes ├── AllPrimitives.asset ├── AllPrimitives.asset.meta ├── Sphere.asset └── Sphere.asset.meta ├── Content.meta ├── Content ├── Materials.meta ├── Materials │ ├── Capsule.mat │ ├── Capsule.mat.meta │ ├── Cube.mat │ ├── Cube.mat.meta │ ├── Cylinder.mat │ ├── Cylinder.mat.meta │ ├── PlaneGrid.mat │ ├── PlaneGrid.mat.meta │ ├── Sphere.mat │ └── Sphere.mat.meta ├── Shaders.meta ├── Shaders │ ├── BrushShape.shader │ ├── BrushShape.shader.meta │ ├── BrushShapeZ.shader │ ├── BrushShapeZ.shader.meta │ ├── Lines.shader │ └── Lines.shader.meta ├── Textures.meta └── Textures │ ├── BlobShape.png │ ├── BlobShape.png.meta │ ├── CircleOutlineShape.png │ ├── CircleOutlineShape.png.meta │ ├── GridShape.png │ ├── GridShape.png.meta │ ├── LinesShape.png │ ├── LinesShape.png.meta │ ├── SquareBlobOutlineShape.png │ ├── SquareBlobOutlineShape.png.meta │ ├── SquareOutlineShape.png │ ├── SquareOutlineShape.png.meta │ ├── SquareShape.png │ ├── SquareShape.png.meta │ ├── StarShape.png │ ├── StarShape.png.meta │ ├── StarburstShape.png │ ├── StarburstShape.png.meta │ ├── _PlaneTiles.png │ └── _PlaneTiles.png.meta ├── Demo.unity ├── Demo.unity.meta ├── Editor.meta ├── Editor ├── Resources.meta ├── Resources │ ├── BrushTool.png │ ├── BrushTool.png.meta │ ├── EraserTool.png │ ├── EraserTool.png.meta │ ├── FillTool.png │ ├── FillTool.png.meta │ ├── LineTool.png │ ├── LineTool.png.meta │ ├── MagicWandTool.png │ ├── MagicWandTool.png.meta │ ├── MagnetTool.png │ ├── MagnetTool.png.meta │ ├── Parameter.cs.txt │ ├── Parameter.cs.txt.meta │ ├── PolygonalLassoTool.png │ ├── PolygonalLassoTool.png.meta │ ├── PrefabshopIcon.png │ ├── PrefabshopIcon.png.meta │ ├── SmudgeTool.png │ ├── SmudgeTool.png.meta │ ├── Tool.cs.txt │ └── Tool.cs.txt.meta ├── Scripts.meta └── Scripts │ ├── Geometry.meta │ ├── Geometry │ ├── Geometry.cs │ ├── Geometry.cs.meta │ ├── Triangulator.cs │ ├── Triangulator.cs.meta │ ├── UvCalculator.cs │ └── UvCalculator.cs.meta │ ├── MarchingSquares.meta │ ├── MarchingSquares │ ├── MarchingSquares.cs │ └── MarchingSquares.cs.meta │ ├── Packages.Prefabshop.asmdef │ ├── Packages.Prefabshop.asmdef.meta │ ├── PrefabSetInfo.cs │ ├── PrefabSetInfo.cs.meta │ ├── Prefabshop.cs │ ├── Prefabshop.cs.meta │ ├── PrefabshopSettings.cs │ ├── PrefabshopSettings.cs.meta │ ├── Tools.meta │ ├── Tools │ ├── BrushTool.cs │ ├── BrushTool.cs.meta │ ├── EraserTool.cs │ ├── EraserTool.cs.meta │ ├── FillTool.cs │ ├── FillTool.cs.meta │ ├── LineTool.cs │ ├── LineTool.cs.meta │ ├── MagicWandTool.cs │ ├── MagicWandTool.cs.meta │ ├── MagnetTool.cs │ ├── MagnetTool.cs.meta │ ├── Parameters.meta │ ├── Parameters │ │ ├── ButtonParameter.cs │ │ ├── ButtonParameter.cs.meta │ │ ├── CachedGameObjects.cs │ │ ├── CachedGameObjects.cs.meta │ │ ├── Count.cs │ │ ├── Count.cs.meta │ │ ├── FilterObject.cs │ │ ├── FilterObject.cs.meta │ │ ├── FirstObjectFilter.cs │ │ ├── FirstObjectFilter.cs.meta │ │ ├── FloatParameter.cs │ │ ├── FloatParameter.cs.meta │ │ ├── Gap.cs │ │ ├── Gap.cs.meta │ │ ├── IParameter.cs │ │ ├── IParameter.cs.meta │ │ ├── Ignore.cs │ │ ├── Ignore.cs.meta │ │ ├── InstatiatePrefab.cs │ │ ├── InstatiatePrefab.cs.meta │ │ ├── Layer.cs │ │ ├── Layer.cs.meta │ │ ├── ListOfObjects.cs │ │ ├── ListOfObjects.cs.meta │ │ ├── Mask.cs │ │ ├── Mask.cs.meta │ │ ├── Outer.cs │ │ ├── Outer.cs.meta │ │ ├── Parameter.cs │ │ ├── Parameter.cs.meta │ │ ├── Parent.cs │ │ ├── Parent.cs.meta │ │ ├── PrefabListInfo.cs │ │ ├── PrefabListInfo.cs.meta │ │ ├── PrefabSelector.cs │ │ ├── PrefabSelector.cs.meta │ │ ├── PrefabsSet.cs │ │ ├── PrefabsSet.cs.meta │ │ ├── Radius.cs │ │ ├── Radius.cs.meta │ │ ├── Rotation.cs │ │ ├── Rotation.cs.meta │ │ ├── Scale.cs │ │ ├── Scale.cs.meta │ │ ├── SelectToolBar.cs │ │ ├── SelectToolBar.cs.meta │ │ ├── Shape.cs │ │ ├── Shape.cs.meta │ │ ├── Step.cs │ │ ├── Step.cs.meta │ │ ├── Tag.cs │ │ ├── Tag.cs.meta │ │ ├── ToggleParameter.cs │ │ └── ToggleParameter.cs.meta │ ├── PolygonalLassoTool.cs │ ├── PolygonalLassoTool.cs.meta │ ├── Tool.cs │ └── Tool.cs.meta │ ├── VectorExtensions.cs │ └── VectorExtensions.cs.meta ├── Prefabs.meta ├── Prefabs ├── Capsule.prefab ├── Capsule.prefab.meta ├── Cube.prefab ├── Cube.prefab.meta ├── Cylinder.prefab ├── Cylinder.prefab.meta ├── Sphere.prefab └── Sphere.prefab.meta ├── README.md ├── README.md.meta ├── demo.meta ├── demo ├── brushTool.gif ├── brushTool.gif.meta ├── eraserTool.gif ├── eraserTool.gif.meta ├── fillTool.gif ├── fillTool.gif.meta ├── lassoTool.gif ├── lassoTool.gif.meta ├── lineTool.gif ├── lineTool.gif.meta ├── magicWandTool.gif └── magicWandTool.gif.meta ├── package.json └── package.json.meta /.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Mm]emoryCaptures/ 12 | 13 | # Never ignore Asset meta data 14 | !/[Aa]ssets/**/*.meta 15 | 16 | # Uncomment this line if you wish to ignore the asset store tools plugin 17 | # /[Aa]ssets/AssetStoreTools* 18 | 19 | # TextMesh Pro files 20 | [Aa]ssets/TextMesh*Pro/ 21 | 22 | # Autogenerated Jetbrains Rider plugin 23 | [Aa]ssets/Plugins/Editor/JetBrains* 24 | 25 | # Visual Studio cache directory 26 | .vs/ 27 | 28 | # Gradle cache directory 29 | .gradle/ 30 | 31 | # Autogenerated VS/MD/Consulo solution and project files 32 | ExportedObj/ 33 | .consulo/ 34 | *.csproj 35 | *.unityproj 36 | *.sln 37 | *.suo 38 | *.tmp 39 | *.user 40 | *.userprefs 41 | *.pidb 42 | *.booproj 43 | *.svd 44 | *.pdb 45 | *.mdb 46 | *.opendb 47 | *.VC.db 48 | 49 | # Unity3D generated meta files 50 | *.pidb.meta 51 | *.pdb.meta 52 | *.mdb.meta 53 | 54 | # Unity3D generated file on crash reports 55 | sysinfo.txt 56 | 57 | # Builds 58 | *.apk 59 | *.unitypackage 60 | 61 | # Crashlytics generated file 62 | crashlytics-build.properties 63 | 64 | -------------------------------------------------------------------------------- /Brushes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 194513de51f7cb343a76c2dbb7fda3fd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Brushes/AllPrimitives.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: ed9450926247e834ea33411785b7899d, type: 3} 13 | m_Name: AllPrimitives 14 | m_EditorClassIdentifier: 15 | brushObjects: 16 | - {fileID: 579339887580297523, guid: 005efdac5518c174cb537f7fd5553aca, type: 3} 17 | - {fileID: 753119764481210622, guid: 879a8b884fd7363458a916a309746ec4, type: 3} 18 | - {fileID: 5590417543050163645, guid: 5b82bd61173444345aeeebca2342ff19, type: 3} 19 | - {fileID: 2602752127934446500, guid: c0da57286956eff4788385a1f7968c48, type: 3} 20 | -------------------------------------------------------------------------------- /Brushes/AllPrimitives.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e7296ce70596e0c4781b2f19e74bc3b7 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Brushes/Sphere.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: ed9450926247e834ea33411785b7899d, type: 3} 13 | m_Name: Sphere 14 | m_EditorClassIdentifier: 15 | brushObjects: 16 | - {fileID: 2602752127934446500, guid: c0da57286956eff4788385a1f7968c48, type: 3} 17 | -------------------------------------------------------------------------------- /Brushes/Sphere.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 95f2b4bb1d1f8e14db1b44cd1459650a 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Content.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a8b09649ea3cf2e4b9cb21d55d83e248 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Content/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 15260abff5887064bbdc076845662b8e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Content/Materials/Capsule.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Capsule 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: _ALPHABLEND_ON 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: 3000 17 | stringTagMap: 18 | RenderType: Transparent 19 | disabledShaderPasses: [] 20 | m_SavedProperties: 21 | serializedVersion: 3 22 | m_TexEnvs: 23 | - _BumpMap: 24 | m_Texture: {fileID: 0} 25 | m_Scale: {x: 1, y: 1} 26 | m_Offset: {x: 0, y: 0} 27 | - _DetailAlbedoMap: 28 | m_Texture: {fileID: 0} 29 | m_Scale: {x: 1, y: 1} 30 | m_Offset: {x: 0, y: 0} 31 | - _DetailMask: 32 | m_Texture: {fileID: 0} 33 | m_Scale: {x: 1, y: 1} 34 | m_Offset: {x: 0, y: 0} 35 | - _DetailNormalMap: 36 | m_Texture: {fileID: 0} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _EmissionMap: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 0.5, y: 0.5} 42 | m_Offset: {x: 0, y: 0} 43 | - _MainTex: 44 | m_Texture: {fileID: 0} 45 | m_Scale: {x: 0.5, y: 0.5} 46 | m_Offset: {x: 0, y: 0} 47 | - _MetallicGlossMap: 48 | m_Texture: {fileID: 0} 49 | m_Scale: {x: 1, y: 1} 50 | m_Offset: {x: 0, y: 0} 51 | - _OcclusionMap: 52 | m_Texture: {fileID: 0} 53 | m_Scale: {x: 1, y: 1} 54 | m_Offset: {x: 0, y: 0} 55 | - _ParallaxMap: 56 | m_Texture: {fileID: 0} 57 | m_Scale: {x: 1, y: 1} 58 | m_Offset: {x: 0, y: 0} 59 | m_Floats: 60 | - _BumpScale: 1 61 | - _ColorMask: 15 62 | - _Cutoff: 0.5 63 | - _DetailNormalMapScale: 1 64 | - _DstBlend: 10 65 | - _GlossMapScale: 1 66 | - _Glossiness: 0.097 67 | - _GlossyReflections: 1 68 | - _Metallic: 0 69 | - _Mode: 2 70 | - _OcclusionStrength: 1 71 | - _Parallax: 0.02 72 | - _SmoothnessTextureChannel: 0 73 | - _SpecularHighlights: 1 74 | - _SrcBlend: 5 75 | - _Stencil: 0 76 | - _StencilComp: 8 77 | - _StencilOp: 0 78 | - _StencilReadMask: 255 79 | - _StencilWriteMask: 255 80 | - _UVSec: 0 81 | - _UseUIAlphaClip: 0 82 | - _ZWrite: 0 83 | m_Colors: 84 | - _Color: {r: 0, g: 0.50425196, b: 1, a: 1} 85 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 86 | -------------------------------------------------------------------------------- /Content/Materials/Capsule.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6d57ded0234042b48afd70be50136ca1 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Content/Materials/Cube.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Cube 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 0.25, y: 0.25} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 0.25, y: 0.25} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.097 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.0023497343, g: 1, b: 0, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Content/Materials/Cube.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 877d8d0f6885f8241847f3b780862ba6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Content/Materials/Cylinder.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Cylinder 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 0.5, y: 0.5} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 0.5, y: 0.5} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.097 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.9963192, g: 1, b: 0, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Content/Materials/Cylinder.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe8841081a6a26343a0aa500f229ae82 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Content/Materials/PlaneGrid.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: PlaneGrid 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 33.5, y: 33.5} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 2800000, guid: 0ad14a6637d15d24d80c20495ec847e4, type: 3} 44 | m_Scale: {x: 33.5, y: 33.5} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 1, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Content/Materials/PlaneGrid.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 53ba65a4c4ddd8f44af45cf4eef5943a 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Content/Materials/Sphere.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Sphere 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 0, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 0.5, y: 0.5} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 0.5, y: 0.5} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.097 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 0, b: 0, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Content/Materials/Sphere.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 234b0acd507e04c4aaeb27d3aa914169 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Content/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8eac1250cabd4a3418fe57f726b9a750 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Content/Shaders/BrushShape.shader: -------------------------------------------------------------------------------- 1 | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 | 3 | Shader "Raptorij/BrushShape" { 4 | Properties { 5 | _MainTex ("Font Texture", 2D) = "white" {} 6 | _Color ("Text Color", Color) = (1,1,1,1) 7 | 8 | _StencilComp ("Stencil Comparison", Float) = 8 9 | _Stencil ("Stencil ID", Float) = 0 10 | _StencilOp ("Stencil Operation", Float) = 0 11 | _StencilWriteMask ("Stencil Write Mask", Float) = 255 12 | _StencilReadMask ("Stencil Read Mask", Float) = 255 13 | 14 | _ColorMask ("Color Mask", Float) = 15 15 | } 16 | 17 | SubShader { 18 | 19 | Tags 20 | { 21 | "Queue"="Transparent" 22 | "IgnoreProjector"="True" 23 | "RenderType"="Transparent" 24 | "PreviewType"="Plane" 25 | } 26 | 27 | Stencil 28 | { 29 | Ref [_Stencil] 30 | Comp [_StencilComp] 31 | Pass [_StencilOp] 32 | ReadMask [_StencilReadMask] 33 | WriteMask [_StencilWriteMask] 34 | } 35 | 36 | Lighting Off 37 | Cull Off 38 | ZTest Off 39 | ZWrite Off 40 | Blend SrcAlpha OneMinusSrcAlpha 41 | ColorMask [_ColorMask] 42 | 43 | Pass 44 | { 45 | CGPROGRAM 46 | #pragma vertex vert 47 | #pragma fragment frag 48 | 49 | #include "UnityCG.cginc" 50 | 51 | struct appdata_t { 52 | float4 vertex : POSITION; 53 | fixed4 color : COLOR; 54 | float2 texcoord : TEXCOORD0; 55 | }; 56 | 57 | struct v2f { 58 | float4 vertex : SV_POSITION; 59 | fixed4 color : COLOR; 60 | float2 texcoord : TEXCOORD0; 61 | }; 62 | 63 | sampler2D _MainTex; 64 | uniform float4 _MainTex_ST; 65 | uniform fixed4 _Color; 66 | 67 | v2f vert (appdata_t v) 68 | { 69 | v2f o; 70 | o.vertex = UnityObjectToClipPos(v.vertex); 71 | o.color = v.color * _Color; 72 | o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); 73 | #ifdef UNITY_HALF_TEXEL_OFFSET 74 | o.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1); 75 | #endif 76 | return o; 77 | } 78 | 79 | fixed4 frag (v2f i) : SV_Target 80 | { 81 | fixed4 col = i.color; 82 | col.a *= tex2D(_MainTex, i.texcoord).a; 83 | return col; 84 | } 85 | ENDCG 86 | } 87 | } 88 | } -------------------------------------------------------------------------------- /Content/Shaders/BrushShape.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8bc5710bbd928aa4bbb44b76c62b4cc7 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Content/Shaders/BrushShapeZ.shader: -------------------------------------------------------------------------------- 1 | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 | 3 | Shader "Raptorij/BrushShapeZ" { 4 | Properties { 5 | _MainTex ("Font Texture", 2D) = "white" {} 6 | _Color ("Text Color", Color) = (1,1,1,1) 7 | 8 | _StencilComp ("Stencil Comparison", Float) = 8 9 | _Stencil ("Stencil ID", Float) = 0 10 | _StencilOp ("Stencil Operation", Float) = 0 11 | _StencilWriteMask ("Stencil Write Mask", Float) = 255 12 | _StencilReadMask ("Stencil Read Mask", Float) = 255 13 | 14 | _ColorMask ("Color Mask", Float) = 15 15 | } 16 | 17 | SubShader { 18 | 19 | Tags 20 | { 21 | "Queue"="Transparent" 22 | "IgnoreProjector"="True" 23 | "RenderType"="Transparent" 24 | "PreviewType"="Plane" 25 | } 26 | 27 | Stencil 28 | { 29 | Ref [_Stencil] 30 | Comp [_StencilComp] 31 | Pass [_StencilOp] 32 | ReadMask [_StencilReadMask] 33 | WriteMask [_StencilWriteMask] 34 | } 35 | 36 | Lighting Off 37 | //Cull Front 38 | //ZTest Always 39 | ZWrite On 40 | Blend SrcAlpha OneMinusSrcAlpha 41 | ColorMask [_ColorMask] 42 | 43 | Pass 44 | { 45 | CGPROGRAM 46 | #pragma vertex vert 47 | #pragma fragment frag 48 | 49 | #include "UnityCG.cginc" 50 | 51 | struct appdata_t { 52 | float4 vertex : POSITION; 53 | fixed4 color : COLOR; 54 | float2 texcoord : TEXCOORD0; 55 | }; 56 | 57 | struct v2f { 58 | float4 vertex : SV_POSITION; 59 | fixed4 color : COLOR; 60 | float2 texcoord : TEXCOORD0; 61 | }; 62 | 63 | sampler2D _MainTex; 64 | uniform float4 _MainTex_ST; 65 | uniform fixed4 _Color; 66 | 67 | v2f vert (appdata_t v) 68 | { 69 | v2f o; 70 | o.vertex = UnityObjectToClipPos(v.vertex); 71 | o.color = v.color * _Color; 72 | o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); 73 | #ifdef UNITY_HALF_TEXEL_OFFSET 74 | o.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1); 75 | #endif 76 | return o; 77 | } 78 | 79 | fixed4 frag (v2f i) : SV_Target 80 | { 81 | fixed4 col = i.color; 82 | col.a *= tex2D(_MainTex, i.texcoord).a; 83 | return col; 84 | } 85 | ENDCG 86 | } 87 | } 88 | } -------------------------------------------------------------------------------- /Content/Shaders/BrushShapeZ.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7e05361a9481e9049b1ffef3e9fbbd57 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Content/Shaders/Lines.shader: -------------------------------------------------------------------------------- 1 | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 | 3 | Shader "Raptorij/Lines" { 4 | Properties{ 5 | _Color1("Color 1", Color) = (0,0,0,1) 6 | _Color2("Color 2", Color) = (1,1,1,1) 7 | _Tiling("Tiling", Range(0, 10)) = 1 8 | _Direction("Direction", Range(0, 1)) = 0 9 | _WarpScale("Warp Scale", Range(0, 1)) = 1 10 | _WarpTiling("Warp Tiling", Range(1, 10)) = 2 11 | 12 | 13 | _StencilComp("Stencil Comparison", Float) = 8 14 | _Stencil("Stencil ID", Float) = 0 15 | _StencilOp("Stencil Operation", Float) = 0 16 | _StencilWriteMask("Stencil Write Mask", Float) = 255 17 | _StencilReadMask("Stencil Read Mask", Float) = 255 18 | 19 | _ColorMask("Color Mask", Float) = 15 20 | _ScrollXSpeed("X Scroll Speed",Range(0,10)) = 10 21 | _ScrollYSpeed("Y Scroll Speed",Range(0,10)) = 10 22 | 23 | } 24 | 25 | SubShader 26 | { 27 | Tags 28 | { 29 | "Queue" = "Transparent" 30 | "IgnoreProjector" = "True" 31 | "RenderType" = "Transparent" 32 | "PreviewType" = "Plane" 33 | } 34 | 35 | Stencil 36 | { 37 | Ref[_Stencil] 38 | Comp[_StencilComp] 39 | Pass[_StencilOp] 40 | ReadMask[_StencilReadMask] 41 | WriteMask[_StencilWriteMask] 42 | } 43 | 44 | Lighting Off 45 | Cull Off 46 | ZTest Off 47 | ZWrite Off 48 | Blend SrcAlpha OneMinusSrcAlpha 49 | ColorMask[_ColorMask] 50 | 51 | Pass 52 | { 53 | CGPROGRAM 54 | #pragma vertex vert 55 | #pragma fragment frag 56 | 57 | #include "UnityCG.cginc" 58 | 59 | fixed4 _Color1; 60 | fixed4 _Color2; 61 | int _Tiling; 62 | float _Direction; 63 | float _WarpScale; 64 | float _WarpTiling; 65 | 66 | fixed _ScrollXSpeed; 67 | fixed _ScrollYSpeed; 68 | 69 | struct appdata 70 | { 71 | float4 vertex : POSITION; 72 | float2 uv : TEXCOORD0; 73 | }; 74 | 75 | struct v2f 76 | { 77 | float2 uv : TEXCOORD0; 78 | fixed4 color : COLOR; 79 | float4 vertex : SV_POSITION; 80 | }; 81 | 82 | v2f vert(appdata v) 83 | { 84 | v2f o; 85 | o.vertex = UnityObjectToClipPos(v.vertex); 86 | v.uv.x += _Time * _ScrollXSpeed; 87 | v.uv.y += _Time * _ScrollYSpeed; 88 | o.uv = v.uv; 89 | return o; 90 | } 91 | 92 | fixed4 frag(v2f i) : SV_Target 93 | { 94 | const float PI = 3.14159; 95 | 96 | float2 pos; 97 | pos.x = lerp(i.uv.x, i.uv.y, _Direction); 98 | pos.y = lerp(i.uv.y, 1 - i.uv.x, _Direction); 99 | 100 | //pos.x += sin(pos.y * _WarpTiling * PI * 2) * _WarpScale; 101 | pos.x *= _Tiling / _WarpTiling; 102 | 103 | fixed value = floor(frac(pos.x) + 0.5); 104 | return lerp(_Color1, _Color2, value); 105 | } 106 | ENDCG 107 | } 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /Content/Shaders/Lines.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 51c8d1cd225a8c6479eaea9a73421074 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Content/Textures.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 71c1a9b97c6538246979a273f1568e3f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Content/Textures/BlobShape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Content/Textures/BlobShape.png -------------------------------------------------------------------------------- /Content/Textures/BlobShape.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 39e4514e8eb2ab54a9456e435960fd59 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 256 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 256 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | spriteSheet: 86 | serializedVersion: 2 87 | sprites: [] 88 | outline: [] 89 | physicsShape: [] 90 | bones: [] 91 | spriteID: 92 | internalID: 0 93 | vertices: [] 94 | indices: 95 | edges: [] 96 | weights: [] 97 | secondaryTextures: [] 98 | spritePackingTag: 99 | pSDRemoveMatte: 0 100 | pSDShowRemoveMatteOption: 0 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Content/Textures/CircleOutlineShape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Content/Textures/CircleOutlineShape.png -------------------------------------------------------------------------------- /Content/Textures/CircleOutlineShape.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f6819b6d6255a2040a73a50e2e1b4138 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 256 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 256 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | spriteSheet: 86 | serializedVersion: 2 87 | sprites: [] 88 | outline: [] 89 | physicsShape: [] 90 | bones: [] 91 | spriteID: 92 | internalID: 0 93 | vertices: [] 94 | indices: 95 | edges: [] 96 | weights: [] 97 | secondaryTextures: [] 98 | spritePackingTag: 99 | pSDRemoveMatte: 0 100 | pSDShowRemoveMatteOption: 0 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Content/Textures/GridShape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Content/Textures/GridShape.png -------------------------------------------------------------------------------- /Content/Textures/GridShape.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8fe91ed14c6d19d418c75d4cfafbee53 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 256 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 256 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | spriteSheet: 86 | serializedVersion: 2 87 | sprites: [] 88 | outline: [] 89 | physicsShape: [] 90 | bones: [] 91 | spriteID: 92 | internalID: 0 93 | vertices: [] 94 | indices: 95 | edges: [] 96 | weights: [] 97 | secondaryTextures: [] 98 | spritePackingTag: 99 | pSDRemoveMatte: 0 100 | pSDShowRemoveMatteOption: 0 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Content/Textures/LinesShape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Content/Textures/LinesShape.png -------------------------------------------------------------------------------- /Content/Textures/LinesShape.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 278211c787081774aa74b9b4a33ea926 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 256 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 256 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | spriteSheet: 86 | serializedVersion: 2 87 | sprites: [] 88 | outline: [] 89 | physicsShape: [] 90 | bones: [] 91 | spriteID: 92 | internalID: 0 93 | vertices: [] 94 | indices: 95 | edges: [] 96 | weights: [] 97 | secondaryTextures: [] 98 | spritePackingTag: 99 | pSDRemoveMatte: 0 100 | pSDShowRemoveMatteOption: 0 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Content/Textures/SquareBlobOutlineShape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Content/Textures/SquareBlobOutlineShape.png -------------------------------------------------------------------------------- /Content/Textures/SquareBlobOutlineShape.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7f4a7b133e8fbf646ae2ec06a1322008 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 256 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 256 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | spriteSheet: 86 | serializedVersion: 2 87 | sprites: [] 88 | outline: [] 89 | physicsShape: [] 90 | bones: [] 91 | spriteID: 92 | internalID: 0 93 | vertices: [] 94 | indices: 95 | edges: [] 96 | weights: [] 97 | secondaryTextures: [] 98 | spritePackingTag: 99 | pSDRemoveMatte: 0 100 | pSDShowRemoveMatteOption: 0 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Content/Textures/SquareOutlineShape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Content/Textures/SquareOutlineShape.png -------------------------------------------------------------------------------- /Content/Textures/SquareOutlineShape.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 34f402bf5eef8db41ba7aa51153a7a5b 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 256 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 256 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | spriteSheet: 86 | serializedVersion: 2 87 | sprites: [] 88 | outline: [] 89 | physicsShape: [] 90 | bones: [] 91 | spriteID: 92 | internalID: 0 93 | vertices: [] 94 | indices: 95 | edges: [] 96 | weights: [] 97 | secondaryTextures: [] 98 | spritePackingTag: 99 | pSDRemoveMatte: 0 100 | pSDShowRemoveMatteOption: 0 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Content/Textures/SquareShape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Content/Textures/SquareShape.png -------------------------------------------------------------------------------- /Content/Textures/SquareShape.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e9ceb9e03c844ae48a3e7521ce299874 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 256 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 256 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | spriteSheet: 86 | serializedVersion: 2 87 | sprites: [] 88 | outline: [] 89 | physicsShape: [] 90 | bones: [] 91 | spriteID: 92 | internalID: 0 93 | vertices: [] 94 | indices: 95 | edges: [] 96 | weights: [] 97 | secondaryTextures: [] 98 | spritePackingTag: 99 | pSDRemoveMatte: 0 100 | pSDShowRemoveMatteOption: 0 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Content/Textures/StarShape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Content/Textures/StarShape.png -------------------------------------------------------------------------------- /Content/Textures/StarShape.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7ef463beefca7cc4b90cfbb305f01c8d 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 256 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 256 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | spriteSheet: 86 | serializedVersion: 2 87 | sprites: [] 88 | outline: [] 89 | physicsShape: [] 90 | bones: [] 91 | spriteID: 92 | internalID: 0 93 | vertices: [] 94 | indices: 95 | edges: [] 96 | weights: [] 97 | secondaryTextures: [] 98 | spritePackingTag: 99 | pSDRemoveMatte: 0 100 | pSDShowRemoveMatteOption: 0 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Content/Textures/StarburstShape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Content/Textures/StarburstShape.png -------------------------------------------------------------------------------- /Content/Textures/StarburstShape.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 12e51b4d4bf369141911a78e4c9e3cf4 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 256 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 256 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | spriteSheet: 86 | serializedVersion: 2 87 | sprites: [] 88 | outline: [] 89 | physicsShape: [] 90 | bones: [] 91 | spriteID: 92 | internalID: 0 93 | vertices: [] 94 | indices: 95 | edges: [] 96 | weights: [] 97 | secondaryTextures: [] 98 | spritePackingTag: 99 | pSDRemoveMatte: 0 100 | pSDShowRemoveMatteOption: 0 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Content/Textures/_PlaneTiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Content/Textures/_PlaneTiles.png -------------------------------------------------------------------------------- /Content/Textures/_PlaneTiles.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ad14a6637d15d24d80c20495ec847e4 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 1 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 1 35 | aniso: 16 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 256 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 256 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | - serializedVersion: 3 86 | buildTarget: Android 87 | maxTextureSize: 2048 88 | resizeAlgorithm: 0 89 | textureFormat: -1 90 | textureCompression: 1 91 | compressionQuality: 50 92 | crunchedCompression: 0 93 | allowsAlphaSplitting: 0 94 | overridden: 0 95 | androidETC2FallbackOverride: 0 96 | forceMaximumCompressionQuality_BC6H_BC7: 1 97 | spriteSheet: 98 | serializedVersion: 2 99 | sprites: [] 100 | outline: [] 101 | physicsShape: [] 102 | bones: [] 103 | spriteID: 104 | internalID: 0 105 | vertices: [] 106 | indices: 107 | edges: [] 108 | weights: [] 109 | secondaryTextures: [] 110 | spritePackingTag: 111 | pSDRemoveMatte: 0 112 | pSDShowRemoveMatteOption: 0 113 | userData: 114 | assetBundleName: 115 | assetBundleVariant: 116 | -------------------------------------------------------------------------------- /Demo.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6470c31dc2612af46a19cbcf9b1857b3 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d2b63b1755f76d54e98cad3a63aa34d5 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 49cb7fcd110ce8046be6d8468c6a5d67 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Resources/BrushTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Editor/Resources/BrushTool.png -------------------------------------------------------------------------------- /Editor/Resources/BrushTool.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c8f754c6929eb7a4885d1cd05cc3aeb3 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 2 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 32 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 32 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | - serializedVersion: 3 86 | buildTarget: iPhone 87 | maxTextureSize: 2048 88 | resizeAlgorithm: 0 89 | textureFormat: -1 90 | textureCompression: 1 91 | compressionQuality: 50 92 | crunchedCompression: 0 93 | allowsAlphaSplitting: 0 94 | overridden: 0 95 | androidETC2FallbackOverride: 0 96 | forceMaximumCompressionQuality_BC6H_BC7: 1 97 | - serializedVersion: 3 98 | buildTarget: Android 99 | maxTextureSize: 2048 100 | resizeAlgorithm: 0 101 | textureFormat: -1 102 | textureCompression: 1 103 | compressionQuality: 50 104 | crunchedCompression: 0 105 | allowsAlphaSplitting: 0 106 | overridden: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 1 109 | spriteSheet: 110 | serializedVersion: 2 111 | sprites: [] 112 | outline: [] 113 | physicsShape: [] 114 | bones: [] 115 | spriteID: 116 | internalID: 0 117 | vertices: [] 118 | indices: 119 | edges: [] 120 | weights: [] 121 | secondaryTextures: [] 122 | spritePackingTag: 123 | pSDRemoveMatte: 0 124 | pSDShowRemoveMatteOption: 0 125 | userData: 126 | assetBundleName: 127 | assetBundleVariant: 128 | -------------------------------------------------------------------------------- /Editor/Resources/EraserTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Editor/Resources/EraserTool.png -------------------------------------------------------------------------------- /Editor/Resources/EraserTool.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e6539f4e8987b1642889c9b0098159b1 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 2 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 32 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 32 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | - serializedVersion: 3 86 | buildTarget: iPhone 87 | maxTextureSize: 2048 88 | resizeAlgorithm: 0 89 | textureFormat: -1 90 | textureCompression: 1 91 | compressionQuality: 50 92 | crunchedCompression: 0 93 | allowsAlphaSplitting: 0 94 | overridden: 0 95 | androidETC2FallbackOverride: 0 96 | forceMaximumCompressionQuality_BC6H_BC7: 1 97 | - serializedVersion: 3 98 | buildTarget: Android 99 | maxTextureSize: 2048 100 | resizeAlgorithm: 0 101 | textureFormat: -1 102 | textureCompression: 1 103 | compressionQuality: 50 104 | crunchedCompression: 0 105 | allowsAlphaSplitting: 0 106 | overridden: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 1 109 | spriteSheet: 110 | serializedVersion: 2 111 | sprites: [] 112 | outline: [] 113 | physicsShape: [] 114 | bones: [] 115 | spriteID: 116 | internalID: 0 117 | vertices: [] 118 | indices: 119 | edges: [] 120 | weights: [] 121 | secondaryTextures: [] 122 | spritePackingTag: 123 | pSDRemoveMatte: 0 124 | pSDShowRemoveMatteOption: 0 125 | userData: 126 | assetBundleName: 127 | assetBundleVariant: 128 | -------------------------------------------------------------------------------- /Editor/Resources/FillTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Editor/Resources/FillTool.png -------------------------------------------------------------------------------- /Editor/Resources/FillTool.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9356334c184f32c43889eeaed8085b00 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 2 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 32 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 32 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | spriteSheet: 86 | serializedVersion: 2 87 | sprites: [] 88 | outline: [] 89 | physicsShape: [] 90 | bones: [] 91 | spriteID: 92 | internalID: 0 93 | vertices: [] 94 | indices: 95 | edges: [] 96 | weights: [] 97 | secondaryTextures: [] 98 | spritePackingTag: 99 | pSDRemoveMatte: 0 100 | pSDShowRemoveMatteOption: 0 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Editor/Resources/LineTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Editor/Resources/LineTool.png -------------------------------------------------------------------------------- /Editor/Resources/LineTool.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3033e8c90e6a3ff44bec85639fae2531 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 2 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 32 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 32 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | spriteSheet: 86 | serializedVersion: 2 87 | sprites: [] 88 | outline: [] 89 | physicsShape: [] 90 | bones: [] 91 | spriteID: 92 | internalID: 0 93 | vertices: [] 94 | indices: 95 | edges: [] 96 | weights: [] 97 | secondaryTextures: [] 98 | spritePackingTag: 99 | pSDRemoveMatte: 0 100 | pSDShowRemoveMatteOption: 0 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Editor/Resources/MagicWandTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Editor/Resources/MagicWandTool.png -------------------------------------------------------------------------------- /Editor/Resources/MagicWandTool.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f575a063b0359cf44a167fd082f8a3ed 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 2 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 32 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 32 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | spriteSheet: 86 | serializedVersion: 2 87 | sprites: [] 88 | outline: [] 89 | physicsShape: [] 90 | bones: [] 91 | spriteID: 92 | internalID: 0 93 | vertices: [] 94 | indices: 95 | edges: [] 96 | weights: [] 97 | secondaryTextures: [] 98 | spritePackingTag: 99 | pSDRemoveMatte: 0 100 | pSDShowRemoveMatteOption: 0 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Editor/Resources/MagnetTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Editor/Resources/MagnetTool.png -------------------------------------------------------------------------------- /Editor/Resources/MagnetTool.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 237423e1e0eed7642a7031f0de46e9d8 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 2 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 32 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 32 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 32 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 32 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | spriteSheet: 106 | serializedVersion: 2 107 | sprites: [] 108 | outline: [] 109 | physicsShape: [] 110 | bones: [] 111 | spriteID: 112 | internalID: 0 113 | vertices: [] 114 | indices: 115 | edges: [] 116 | weights: [] 117 | secondaryTextures: [] 118 | spritePackingTag: 119 | pSDRemoveMatte: 0 120 | pSDShowRemoveMatteOption: 0 121 | userData: 122 | assetBundleName: 123 | assetBundleVariant: 124 | -------------------------------------------------------------------------------- /Editor/Resources/Parameter.cs.txt: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | using UnityEditor; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class #SCRIPTNAME# : Parameter 10 | { 11 | public #SCRIPTNAME#(Type toolType) : base(toolType) 12 | { 13 | //Load parameter values 14 | //value = EditorPrefs.GetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value); 15 | } 16 | 17 | public override void DrawParameterGUI() 18 | { 19 | base.DrawParameterGUI(); 20 | EditorGUI.BeginChangeCheck(); 21 | //Draw changeable values 22 | 23 | if (EditorGUI.EndChangeCheck()) 24 | { 25 | //Save changes of parameter values 26 | //EditorPrefs.SetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value); 27 | } 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /Editor/Resources/Parameter.cs.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: eff30a377d88bdf49bad1a74f669a409 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Editor/Resources/PolygonalLassoTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Editor/Resources/PolygonalLassoTool.png -------------------------------------------------------------------------------- /Editor/Resources/PolygonalLassoTool.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2e02d667514c4cf4f818069fbb912526 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 2 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 32 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 32 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | spriteSheet: 86 | serializedVersion: 2 87 | sprites: [] 88 | outline: [] 89 | physicsShape: [] 90 | bones: [] 91 | spriteID: 92 | internalID: 0 93 | vertices: [] 94 | indices: 95 | edges: [] 96 | weights: [] 97 | secondaryTextures: [] 98 | spritePackingTag: 99 | pSDRemoveMatte: 0 100 | pSDShowRemoveMatteOption: 0 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Editor/Resources/PrefabshopIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Editor/Resources/PrefabshopIcon.png -------------------------------------------------------------------------------- /Editor/Resources/PrefabshopIcon.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e2afb8212e1a9864a82f264d4ae424ea 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 2 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 32 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 2 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 32 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 2 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 32 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 2 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 32 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 2 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | spriteSheet: 106 | serializedVersion: 2 107 | sprites: [] 108 | outline: [] 109 | physicsShape: [] 110 | bones: [] 111 | spriteID: 112 | internalID: 0 113 | vertices: [] 114 | indices: 115 | edges: [] 116 | weights: [] 117 | secondaryTextures: [] 118 | spritePackingTag: 119 | pSDRemoveMatte: 0 120 | pSDShowRemoveMatteOption: 0 121 | userData: 122 | assetBundleName: 123 | assetBundleVariant: 124 | -------------------------------------------------------------------------------- /Editor/Resources/SmudgeTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/Editor/Resources/SmudgeTool.png -------------------------------------------------------------------------------- /Editor/Resources/SmudgeTool.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e6ac9501a1fb17648949b3bf3d94449e 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 2 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 32 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 32 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | spriteSheet: 86 | serializedVersion: 2 87 | sprites: [] 88 | outline: [] 89 | physicsShape: [] 90 | bones: [] 91 | spriteID: 92 | internalID: 0 93 | vertices: [] 94 | indices: 95 | edges: [] 96 | weights: [] 97 | secondaryTextures: [] 98 | spritePackingTag: 99 | pSDRemoveMatte: 0 100 | pSDShowRemoveMatteOption: 0 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Editor/Resources/Tool.cs.txt: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace Packages.PrefabshopEditor 6 | { 7 | [ToolColor(ToolColorAttribute.ToolUseType.Paint)] 8 | //[ToolKeyCode(KeyCode)] 9 | public class #SCRIPTNAME# : Tool 10 | { 11 | public #SCRIPTNAME#() : base() 12 | { 13 | var type = this.GetType(); 14 | } 15 | 16 | public override void SelectTool() 17 | { 18 | base.SelectTool(); 19 | } 20 | 21 | public override void DeselectTool() 22 | { 23 | base.DeselectTool(); 24 | } 25 | 26 | protected override void DrawTool(Ray ray) 27 | { 28 | base.DrawTool(ray); 29 | } 30 | 31 | protected override void OnStartPaint(RaycastHit startPointHit) 32 | { 33 | base.OnStartPaint(startPointHit); 34 | } 35 | 36 | public override void Paint(RaycastHit drawPointHit) 37 | { 38 | base.Paint(drawPointHit); 39 | } 40 | 41 | protected override void OnEndPaint(RaycastHit endPointHit) 42 | { 43 | base.OnEndPaint(endPointHit); 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /Editor/Resources/Tool.cs.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fdd14ff759fe46342979d16d385cfab0 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Editor/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1fff6158750cc5d45928597cc0cd058b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Scripts/Geometry.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d153ff01954e5ce4495555730367ce22 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Scripts/Geometry/Geometry.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | public static class Geometry 5 | { 6 | public static Vector3[] GetSquareOverPoints(Vector3[] points) 7 | { 8 | float minX = Mathf.Infinity; 9 | float minZ = Mathf.Infinity; 10 | 11 | float maxX = -Mathf.Infinity; 12 | float maxZ = -Mathf.Infinity; 13 | 14 | for (int i = 0; i < points.Length; i++) 15 | { 16 | minX = points[i].x < minX ? points[i].x : minX; 17 | minZ = points[i].z < minZ ? points[i].z : minZ; 18 | 19 | maxX = points[i].x > maxX ? points[i].x : maxX; 20 | maxZ = points[i].z > maxZ ? points[i].z : maxZ; 21 | } 22 | 23 | Vector3 minXminZ = new Vector3(minX, 0, minZ); 24 | Vector3 maxXminZ = new Vector3(maxX, 0, minZ); 25 | Vector3 minXmaxZ = new Vector3(minX, 0, maxZ); 26 | Vector3 maxXmaxZ = new Vector3(maxX, 0, maxZ); 27 | 28 | return new Vector3[] { minXminZ, maxXminZ, minXmaxZ, maxXmaxZ }; 29 | } 30 | 31 | public static bool PointInPolygon(float X, float Z, Vector3[] points) 32 | { 33 | int max_point = points.Length - 1; 34 | float total_angle = GetAngle(points[max_point].x, points[max_point].z, 35 | X, Z, 36 | points[0].x, points[0].z); 37 | 38 | for (int i = 0; i < max_point; i++) 39 | { 40 | total_angle += GetAngle(points[i].x, points[i].z, 41 | X, Z, 42 | points[i + 1].x, points[i + 1].z); 43 | } 44 | //return (Math.Abs(total_angle) > 0.000001); 45 | return (Math.Abs(total_angle) > 1); 46 | } 47 | 48 | public static float GetAngle(float Ax, float Ay, 49 | float Bx, float By, 50 | float Cx, float Cy) 51 | { 52 | 53 | float dot_product = DotProduct(Ax, Ay, Bx, By, Cx, Cy); 54 | 55 | float cross_product = CrossProductLength(Ax, Ay, Bx, By, Cx, Cy); 56 | 57 | return (float)Math.Atan2(cross_product, dot_product); 58 | } 59 | 60 | private static float DotProduct(float Ax, float Ay, 61 | float Bx, float By, 62 | float Cx, float Cy) 63 | { 64 | float BAx = Ax - Bx; 65 | float BAy = Ay - By; 66 | float BCx = Cx - Bx; 67 | float BCy = Cy - By; 68 | 69 | return (BAx * BCx + BAy * BCy); 70 | } 71 | 72 | public static float CrossProductLength(float Ax, float Ay, 73 | float Bx, float By, 74 | float Cx, float Cy) 75 | { 76 | float BAx = Ax - Bx; 77 | float BAy = Ay - By; 78 | float BCx = Cx - Bx; 79 | float BCy = Cy - By; 80 | 81 | return (BAx * BCy - BAy * BCx); 82 | } 83 | 84 | public static Vector3 GetRandomPointOnMesh(Mesh mesh) 85 | { 86 | //if you're repeatedly doing this on a single mesh, you'll likely want to cache cumulativeSizes and total 87 | float[] sizes = GetTriSizes(mesh.triangles, mesh.vertices); 88 | float[] cumulativeSizes = new float[sizes.Length]; 89 | float total = 0; 90 | 91 | for (int i = 0; i < sizes.Length; i++) 92 | { 93 | total += sizes[i]; 94 | cumulativeSizes[i] = total; 95 | } 96 | 97 | //so everything above this point wants to be factored out 98 | 99 | float randomsample = UnityEngine.Random.value * total; 100 | 101 | int triIndex = -1; 102 | 103 | for (int i = 0; i < sizes.Length; i++) 104 | { 105 | if (randomsample <= cumulativeSizes[i]) 106 | { 107 | triIndex = i; 108 | break; 109 | } 110 | } 111 | 112 | if (triIndex == -1) 113 | Debug.LogError("triIndex should never be -1"); 114 | 115 | Vector3 a = mesh.vertices[mesh.triangles[triIndex * 3]]; 116 | Vector3 b = mesh.vertices[mesh.triangles[triIndex * 3 + 1]]; 117 | Vector3 c = mesh.vertices[mesh.triangles[triIndex * 3 + 2]]; 118 | 119 | //generate random barycentric coordinates 120 | 121 | float r = UnityEngine.Random.value; 122 | float s = UnityEngine.Random.value; 123 | 124 | if (r + s >= 1) 125 | { 126 | r = 1 - r; 127 | s = 1 - s; 128 | } 129 | //and then turn them back to a Vector3 130 | Vector3 pointOnMesh = a + r * (b - a) + s * (c - a); 131 | return pointOnMesh; 132 | 133 | } 134 | 135 | static float[] GetTriSizes(int[] tris, Vector3[] verts) 136 | { 137 | int triCount = tris.Length / 3; 138 | float[] sizes = new float[triCount]; 139 | for (int i = 0; i < triCount; i++) 140 | { 141 | sizes[i] = .5f * Vector3.Cross(verts[tris[i * 3 + 1]] - verts[tris[i * 3]], verts[tris[i * 3 + 2]] - verts[tris[i * 3]]).magnitude; 142 | } 143 | return sizes; 144 | } 145 | } -------------------------------------------------------------------------------- /Editor/Scripts/Geometry/Geometry.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bf6734ff90539244c9866f177b90f105 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Geometry/Triangulator.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections.Generic; 3 | 4 | public class Triangulator 5 | { 6 | private List m_points = new List(); 7 | 8 | public Triangulator(Vector2[] points) 9 | { 10 | m_points = new List(points); 11 | } 12 | 13 | public int[] Triangulate() 14 | { 15 | List indices = new List(); 16 | 17 | int n = m_points.Count; 18 | if (n < 3) 19 | return indices.ToArray(); 20 | 21 | int[] V = new int[n]; 22 | if (Area() > 0) 23 | { 24 | for (int v = 0; v < n; v++) 25 | V[v] = v; 26 | } 27 | else 28 | { 29 | for (int v = 0; v < n; v++) 30 | V[v] = (n - 1) - v; 31 | } 32 | 33 | int nv = n; 34 | int count = 2 * nv; 35 | for (int v = nv - 1; nv > 2;) 36 | { 37 | if ((count--) <= 0) 38 | return indices.ToArray(); 39 | 40 | int u = v; 41 | if (nv <= u) 42 | u = 0; 43 | v = u + 1; 44 | if (nv <= v) 45 | v = 0; 46 | int w = v + 1; 47 | if (nv <= w) 48 | w = 0; 49 | 50 | if (Snip(u, v, w, nv, V)) 51 | { 52 | int a, b, c, s, t; 53 | a = V[u]; 54 | b = V[v]; 55 | c = V[w]; 56 | indices.Add(a); 57 | indices.Add(b); 58 | indices.Add(c); 59 | for (s = v, t = v + 1; t < nv; s++, t++) 60 | V[s] = V[t]; 61 | nv--; 62 | count = 2 * nv; 63 | } 64 | } 65 | 66 | indices.Reverse(); 67 | return indices.ToArray(); 68 | } 69 | 70 | private float Area() 71 | { 72 | int n = m_points.Count; 73 | float A = 0.0f; 74 | for (int p = n - 1, q = 0; q < n; p = q++) 75 | { 76 | Vector2 pval = m_points[p]; 77 | Vector2 qval = m_points[q]; 78 | A += pval.x * qval.y - qval.x * pval.y; 79 | } 80 | return (A * 0.5f); 81 | } 82 | 83 | private bool Snip(int u, int v, int w, int n, int[] V) 84 | { 85 | int p; 86 | Vector2 A = m_points[V[u]]; 87 | Vector2 B = m_points[V[v]]; 88 | Vector2 C = m_points[V[w]]; 89 | if (Mathf.Epsilon > (((B.x - A.x) * (C.y - A.y)) - ((B.y - A.y) * (C.x - A.x)))) 90 | return false; 91 | for (p = 0; p < n; p++) 92 | { 93 | if ((p == u) || (p == v) || (p == w)) 94 | continue; 95 | Vector2 P = m_points[V[p]]; 96 | if (InsideTriangle(A, B, C, P)) 97 | return false; 98 | } 99 | return true; 100 | } 101 | 102 | private bool InsideTriangle(Vector2 A, Vector2 B, Vector2 C, Vector2 P) 103 | { 104 | float ax, ay, bx, by, cx, cy, apx, apy, bpx, bpy, cpx, cpy; 105 | float cCROSSap, bCROSScp, aCROSSbp; 106 | 107 | ax = C.x - B.x; ay = C.y - B.y; 108 | bx = A.x - C.x; by = A.y - C.y; 109 | cx = B.x - A.x; cy = B.y - A.y; 110 | apx = P.x - A.x; apy = P.y - A.y; 111 | bpx = P.x - B.x; bpy = P.y - B.y; 112 | cpx = P.x - C.x; cpy = P.y - C.y; 113 | 114 | aCROSSbp = ax * bpy - ay * bpx; 115 | cCROSSap = cx * apy - cy * apx; 116 | bCROSScp = bx * cpy - by * cpx; 117 | 118 | return ((aCROSSbp >= 0.0f) && (bCROSScp >= 0.0f) && (cCROSSap >= 0.0f)); 119 | } 120 | } -------------------------------------------------------------------------------- /Editor/Scripts/Geometry/Triangulator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 551d14e7ac2137147a3764eec350f0ea 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Geometry/UvCalculator.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public class UvCalculator 4 | { 5 | private enum Facing { Up, Forward, Right }; 6 | 7 | public static Vector2[] CalculateUVs(Vector3[] v/*vertices*/, float scale) 8 | { 9 | var uvs = new Vector2[v.Length]; 10 | 11 | for (int i = 0; i < uvs.Length; i += 3) 12 | { 13 | int i0 = i; 14 | int i1 = i + 1; 15 | int i2 = i + 2; 16 | 17 | if (i1 >= v.Length) 18 | { 19 | i1 = i1 - v.Length; 20 | } 21 | 22 | if (i2 >= v.Length) 23 | { 24 | i2 = i2 - v.Length; 25 | } 26 | 27 | Vector3 v0 = v[i0]; 28 | Vector3 v1 = v[i1]; 29 | Vector3 v2 = v[i2]; 30 | 31 | Vector3 side1 = v1 - v0; 32 | Vector3 side2 = v2 - v0; 33 | var direction = Vector3.Cross(side1, side2); 34 | var facing = FacingDirection(direction); 35 | switch (facing) 36 | { 37 | case Facing.Forward: 38 | uvs[i0] = ScaledUV(v0.x, v0.y, scale); 39 | uvs[i1] = ScaledUV(v1.x, v1.y, scale); 40 | uvs[i2] = ScaledUV(v2.x, v2.y, scale); 41 | break; 42 | case Facing.Up: 43 | uvs[i0] = ScaledUV(v0.x, v0.z, scale); 44 | uvs[i1] = ScaledUV(v1.x, v1.z, scale); 45 | uvs[i2] = ScaledUV(v2.x, v2.z, scale); 46 | break; 47 | case Facing.Right: 48 | uvs[i0] = ScaledUV(v0.y, v0.z, scale); 49 | uvs[i1] = ScaledUV(v1.y, v1.z, scale); 50 | uvs[i2] = ScaledUV(v2.y, v2.z, scale); 51 | break; 52 | } 53 | } 54 | return uvs; 55 | } 56 | 57 | private static bool FacesThisWay(Vector3 v, Vector3 dir, Facing p, ref float maxDot, ref Facing ret) 58 | { 59 | float t = Vector3.Dot(v, dir); 60 | if (t > maxDot) 61 | { 62 | ret = p; 63 | maxDot = t; 64 | return true; 65 | } 66 | return false; 67 | } 68 | 69 | private static Facing FacingDirection(Vector3 v) 70 | { 71 | var ret = Facing.Up; 72 | float maxDot = Mathf.NegativeInfinity; 73 | 74 | if (!FacesThisWay(v, Vector3.right, Facing.Right, ref maxDot, ref ret)) 75 | FacesThisWay(v, Vector3.left, Facing.Right, ref maxDot, ref ret); 76 | 77 | if (!FacesThisWay(v, Vector3.forward, Facing.Forward, ref maxDot, ref ret)) 78 | FacesThisWay(v, Vector3.back, Facing.Forward, ref maxDot, ref ret); 79 | 80 | if (!FacesThisWay(v, Vector3.up, Facing.Up, ref maxDot, ref ret)) 81 | FacesThisWay(v, Vector3.down, Facing.Up, ref maxDot, ref ret); 82 | 83 | return ret; 84 | } 85 | 86 | private static Vector2 ScaledUV(float uv1, float uv2, float scale) 87 | { 88 | return new Vector2(uv1 / scale, uv2 / scale); 89 | } 90 | } -------------------------------------------------------------------------------- /Editor/Scripts/Geometry/UvCalculator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e7f6f5ee13d933c4eb7453c5e9017824 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/MarchingSquares.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ada2ff5b7e92fdc4db1d97a69a104b69 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Scripts/MarchingSquares/MarchingSquares.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8d71ccd84446ac64e993e58a51789ffb 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Packages.Prefabshop.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Packages.Prefabshop", 3 | "rootNamespace": "", 4 | "references": [], 5 | "includePlatforms": [ 6 | "Editor" 7 | ], 8 | "excludePlatforms": [], 9 | "allowUnsafeCode": false, 10 | "overrideReferences": false, 11 | "precompiledReferences": [], 12 | "autoReferenced": true, 13 | "defineConstraints": [], 14 | "versionDefines": [], 15 | "noEngineReferences": false 16 | } -------------------------------------------------------------------------------- /Editor/Scripts/Packages.Prefabshop.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3e7dc0d57fa1b66418febc92043f316a 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Editor/Scripts/PrefabSetInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace Packages.PrefabshopEditor 6 | { 7 | [CreateAssetMenu(fileName = "PrefabSet", menuName = "Prefabshop/Prefab Set Info", order = 1)] 8 | public class PrefabSetInfo : ScriptableObject 9 | { 10 | public List brushObjects = new List(); 11 | } 12 | } -------------------------------------------------------------------------------- /Editor/Scripts/PrefabSetInfo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ed9450926247e834ea33411785b7899d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Prefabshop.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 06ba3a3e9ada32245b48e3e50d5bbd78 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/PrefabshopSettings.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f4998167ff0746b45b277cbf8bc94ea0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 92610909835c60944ae9042837b04e42 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/BrushTool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5b6f9e3860eed1a4fab967bc90167ea7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/EraserTool.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEditor; 4 | using UnityEngine; 5 | using System.Linq; 6 | using System; 7 | 8 | namespace Packages.PrefabshopEditor 9 | { 10 | [ToolColor(ToolColorAttribute.ToolUseType.Remove)] 11 | [ToolKeyCodeAttribute(KeyCode.C)] 12 | public class EraserTool : Tool 13 | { 14 | public bool byPrefabSet; 15 | Mesh shape; 16 | Material drawMat; 17 | 18 | public EraserTool() : base() 19 | { 20 | var type = this.GetType(); 21 | 22 | AddParameter(new SelectToolBar(type)); 23 | AddParameter(new PrefabsSet(type)); 24 | AddParameter(new Radius(type)); 25 | AddParameter(new Tag(type)); 26 | AddParameter(new Layer(type)); 27 | AddParameter(new Ignore(type)); 28 | AddParameter(new CachedGameObjects(type)); 29 | AddParameter(new Mask(type)); 30 | 31 | GetParameter().toolBar = new string[] { "By PrefabsSet", "All Prefabs" }; 32 | GetParameter().onChangeToolBar += OnChangeToolBar; 33 | OnChangeToolBar(GetParameter().idSelect); 34 | GetParameter().Activate(); 35 | } 36 | 37 | public void OnChangeToolBar(int id) 38 | { 39 | switch (id) 40 | { 41 | case 0: 42 | byPrefabSet = true; 43 | GetParameter().Enable = true; 44 | break; 45 | case 1: 46 | byPrefabSet = false; 47 | GetParameter().Enable = false; 48 | break; 49 | } 50 | } 51 | 52 | protected override void DrawTool(Ray ray) 53 | { 54 | base.DrawTool(ray); 55 | var casts = Physics.RaycastAll(ray, Mathf.Infinity, ~(GetParameter().layer)); 56 | if (casts.Length > 0) 57 | { 58 | var raycastHit = casts[casts.Length - 1]; 59 | 60 | if (shape == null) 61 | { 62 | var primitiveGo = GameObject.CreatePrimitive(PrimitiveType.Sphere); 63 | shape = primitiveGo.GetComponent().sharedMesh; 64 | primitiveGo.hideFlags = HideFlags.DontSave | HideFlags.NotEditable | HideFlags.HideInHierarchy; 65 | GameObject.DestroyImmediate(primitiveGo); 66 | } 67 | 68 | Matrix4x4 matrix = new Matrix4x4(); 69 | matrix.SetTRS(raycastHit.point, Quaternion.identity, Vector3.one * GetParameter().value * 2); 70 | if (drawMat == null) 71 | { 72 | drawMat = new Material(Shader.Find("Raptorij/BrushShapeZ")); 73 | } 74 | drawMat.SetColor("_Color", toolColor); 75 | drawMat.SetPass(0); 76 | Graphics.DrawMeshNow(shape, matrix, 0); 77 | 78 | Handles.color = Color.white; 79 | Handles.DrawWireDisc(raycastHit.point, raycastHit.normal, GetParameter().value); 80 | } 81 | } 82 | 83 | public override void Paint(RaycastHit drawPointHit) 84 | { 85 | base.Paint(drawPointHit); 86 | var transformArray = GameObject.FindObjectsOfType() 87 | .Where(t => Vector3.Distance(t.transform.position, drawPointHit.point) < GetParameter().value) 88 | .ToArray(); 89 | List onlyPrefabs = new List(); 90 | foreach (var coll in transformArray) 91 | { 92 | if (PrefabUtility.GetPrefabInstanceHandle(coll.gameObject) != null) 93 | { 94 | var prefab = PrefabUtility.GetOutermostPrefabInstanceRoot(coll.gameObject); 95 | if (!onlyPrefabs.Contains(prefab)) 96 | { 97 | onlyPrefabs.Add(prefab); 98 | } 99 | } 100 | } 101 | foreach (var go in onlyPrefabs) 102 | { 103 | //var prefabInstance = PrefabUtility.GetPrefabInstanceHandle(go); 104 | GameObject prefabAsset = PrefabUtility.GetCorrespondingObjectFromSource(go) as GameObject; 105 | if (byPrefabSet) 106 | { 107 | if (GetParameter().selectedPrefabs.Contains(prefabAsset)) 108 | { 109 | AddToCache(go); 110 | } 111 | } 112 | else 113 | { 114 | AddToCache(go); 115 | } 116 | } 117 | onlyPrefabs.Clear(); 118 | } 119 | 120 | private void AddToCache(GameObject go) 121 | { 122 | if (GetParameter().HaveMask) 123 | { 124 | if (GetParameter().CheckPoint(go.transform.position)) 125 | { 126 | go.hideFlags = HideFlags.HideAndDontSave | HideFlags.HideInInspector; 127 | go.SetActive(false); 128 | GetParameter().AddToСache(go); 129 | } 130 | } 131 | else 132 | { 133 | go.hideFlags = HideFlags.HideAndDontSave | HideFlags.HideInInspector; 134 | go.SetActive(false); 135 | GetParameter().AddToСache(go); 136 | } 137 | } 138 | 139 | protected override void OnEndPaint(RaycastHit endPointHit) 140 | { 141 | base.OnEndPaint(endPointHit); 142 | EditorApplication.update += RemoveCechedObjects; 143 | } 144 | 145 | void RemoveCechedObjects() 146 | { 147 | var cached = GetParameter().gameObjects; 148 | for (int i = 0; i < cached.Count; i++) 149 | { 150 | if (cached[i] == null) 151 | { 152 | cached.RemoveAt(i); 153 | i--; 154 | } 155 | } 156 | for (int i = 0; i < cached.Count; i++) 157 | { 158 | var go = cached[0]; 159 | if (go != null) 160 | { 161 | go.hideFlags = HideFlags.None; 162 | go.SetActive(true); 163 | Undo.DestroyObjectImmediate(go); 164 | } 165 | cached.RemoveAt(0); 166 | } 167 | if (cached.Count <= 0) 168 | { 169 | EditorApplication.update -= RemoveCechedObjects; 170 | } 171 | } 172 | } 173 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/EraserTool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 948ede52876440a48bee2ba000ed72b6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/FillTool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ecd3ce34b2e9d854996fa2b3e16fd11f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/LineTool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c339db14ec916214d8fa80123f49a25b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/MagicWandTool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a43e6f341d2914c46a0758e23c5f6386 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/MagnetTool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d23e0eb8a6382474c94080b3887f2173 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9a6be16b637c50d428239117b3a9cc6d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/ButtonParameter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | 6 | namespace Packages.PrefabshopEditor 7 | { 8 | public class ButtonParameter : Parameter 9 | { 10 | public string buttonName; 11 | public Action onButtonClick; 12 | 13 | public ButtonParameter(Type toolType) : base(toolType) 14 | { 15 | } 16 | 17 | public ButtonParameter(Type toolType, string name, int id) : base(toolType) 18 | { 19 | this.buttonName = name; 20 | this.Identifier = id; 21 | 22 | string saveId = $"[Prefabshop] {toolType.Name}.{this.GetType().Name}.{buttonName}.{Identifier}"; 23 | } 24 | 25 | public override void DrawParameterGUI() 26 | { 27 | base.DrawParameterGUI(); 28 | if (GUILayout.Button(buttonName)) 29 | { 30 | onButtonClick?.Invoke(buttonName); 31 | } 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/ButtonParameter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 749268a79333a804883a8963ea2cdec5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/CachedGameObjects.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace Packages.PrefabshopEditor 6 | { 7 | public class CachedGameObjects : Parameter 8 | { 9 | public override bool Hidden 10 | { 11 | get => true; 12 | } 13 | 14 | public List gameObjects = new List(); 15 | 16 | public CachedGameObjects(System.Type type) : base(type) 17 | { 18 | 19 | } 20 | 21 | public void AddToСache(GameObject obj) 22 | { 23 | if (!gameObjects.Contains(obj)) 24 | { 25 | gameObjects.Add(obj); 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/CachedGameObjects.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9f9d172f90b2c3146880030ce5aba4ba 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Count.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEditor; 5 | 6 | namespace Packages.PrefabshopEditor 7 | { 8 | public class Count : Parameter 9 | { 10 | public int value = 1; 11 | 12 | public Count(System.Type toolType) : base(toolType) 13 | { 14 | value = EditorPrefs.GetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value); 15 | } 16 | 17 | public override void DrawParameterGUI() 18 | { 19 | base.DrawParameterGUI(); 20 | EditorGUI.BeginChangeCheck(); 21 | value = (int)Mathf.Clamp(EditorGUILayout.IntField(this.GetType().Name, value), 1, Mathf.Infinity); 22 | if (EditorGUI.EndChangeCheck()) 23 | { 24 | EditorPrefs.SetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value); 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Count.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f96aef8942e7ab14ebf60996af3ecfd6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/FilterObject.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class FilterObject : Parameter 10 | { 11 | public GameObject value; 12 | 13 | public FilterObject(Type toolType) : base(toolType) 14 | { 15 | 16 | } 17 | 18 | public override void DrawParameterGUI() 19 | { 20 | base.DrawParameterGUI(); 21 | value = EditorGUILayout.ObjectField(this.GetType().Name, value, typeof(GameObject), true) as GameObject; 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/FilterObject.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f86ae65a07af5ec4ca25e24497adf64d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/FirstObjectFilter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class FirstObjectFilter : Parameter 10 | { 11 | public bool value; 12 | 13 | public FirstObjectFilter(Type toolType) : base(toolType) 14 | { 15 | value = EditorPrefs.GetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", 0) == 1; 16 | } 17 | 18 | public override void DrawParameterGUI() 19 | { 20 | base.DrawParameterGUI(); 21 | EditorGUI.BeginChangeCheck(); 22 | value = EditorGUILayout.Toggle(this.GetType().Name, value); 23 | if (EditorGUI.EndChangeCheck()) 24 | { 25 | EditorPrefs.SetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value ? 1 : 0); 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/FirstObjectFilter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f93f00dd7ad4f944e8e85ab7cdef152a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/FloatParameter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | using UnityEditor; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class FloatParameter : Parameter 10 | { 11 | public string name; 12 | public float value; 13 | 14 | public FloatParameter(Type toolType) : base(toolType) 15 | { 16 | //Load parameter values 17 | Load(); 18 | } 19 | 20 | public FloatParameter(Type toolType, string name, int id) : base(toolType) 21 | { 22 | this.name = name; 23 | this.Identifier = id; 24 | //Load parameter values 25 | Load(); 26 | } 27 | 28 | void Load() 29 | { 30 | value = EditorPrefs.GetFloat($"[Prefabshop] {toolType.Name}.{this.GetType().Name}.{name}.{Identifier}", value); 31 | } 32 | 33 | public override void DrawParameterGUI() 34 | { 35 | base.DrawParameterGUI(); 36 | EditorGUI.BeginChangeCheck(); 37 | //Draw changeable values 38 | value = EditorGUILayout.FloatField(name + ":", value); 39 | value = Mathf.Clamp(value, 0, Mathf.Infinity); 40 | if (EditorGUI.EndChangeCheck()) 41 | { 42 | //Save changes of parameter values 43 | EditorPrefs.SetFloat($"[Prefabshop] {toolType.Name}.{this.GetType().Name}.{name}.{Identifier}", value); 44 | } 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/FloatParameter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2e4c2013ecf297c4c8b874d3ad01a31a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Gap.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class Gap : Parameter 10 | { 11 | public float value = 0f; 12 | 13 | public Gap(Type toolType) : base(toolType) 14 | { 15 | value = EditorPrefs.GetFloat($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value); 16 | } 17 | 18 | public override void DrawParameterGUI() 19 | { 20 | base.DrawParameterGUI(); 21 | EditorGUI.BeginChangeCheck(); 22 | value = EditorGUILayout.FloatField(this.GetType().Name, value); 23 | if (EditorGUI.EndChangeCheck()) 24 | { 25 | EditorPrefs.SetFloat($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value); 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Gap.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 81cfe6af93a171e48b2793b62dc38005 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/IParameter.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace Packages.PrefabshopEditor 6 | { 7 | public interface IParameter 8 | { 9 | bool Hidden 10 | { 11 | get; 12 | set; 13 | } 14 | 15 | bool Enable 16 | { 17 | get; 18 | set; 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/IParameter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fa5afe1438072f6418b1bfc7cf048b30 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Ignore.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using UnityEditor; 6 | using UnityEngine; 7 | 8 | namespace Packages.PrefabshopEditor 9 | { 10 | public class Ignore : Parameter 11 | { 12 | public LayerMask layer; 13 | 14 | public bool ignorePrefabs; 15 | public int ignorePrefabsId; 16 | string[] ignorePrefabsTabs = new string[] {"Selected Prefabs", "All in PrefabSet", "All Prefabs" }; 17 | public System.Action onChangeToolBar; 18 | 19 | public Ignore(Type toolType) : base(toolType) 20 | { 21 | ignorePrefabs = EditorPrefs.GetBool($"[Prefabshop] {toolType.Name}.{this.GetType().Name} PrefabsIgnore", ignorePrefabs); 22 | layer = EditorPrefs.GetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name} Layer", layer); 23 | ignorePrefabsId = EditorPrefs.GetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name} IgnoreId", ignorePrefabsId); 24 | } 25 | 26 | public override void DrawParameterGUI() 27 | { 28 | base.DrawParameterGUI(); 29 | GUILayout.Label("Ignore Options"); 30 | EditorGUI.BeginChangeCheck(); 31 | layer = LayerMaskField("Layer:", layer); 32 | ignorePrefabs = EditorGUILayout.Toggle("Prefabs Ignore", ignorePrefabs); 33 | GUI.enabled = ignorePrefabs; 34 | ignorePrefabsId = GUILayout.Toolbar(ignorePrefabsId, ignorePrefabsTabs); 35 | GUI.enabled = true; 36 | if (EditorGUI.EndChangeCheck()) 37 | { 38 | EditorPrefs.SetBool($"[Prefabshop] {toolType.Name}.{this.GetType().Name} PrefabsIgnore", ignorePrefabs); 39 | EditorPrefs.SetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name} Layer", layer); 40 | EditorPrefs.SetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name} IgnoreId", ignorePrefabsId); 41 | onChangeToolBar?.Invoke(ignorePrefabsId); 42 | } 43 | } 44 | 45 | public RaycastHit GetHit(RaycastHit[] allHits) 46 | { 47 | int targetId = 0; 48 | System.Array.Sort(allHits, (x, y) => x.distance.CompareTo(y.distance)); 49 | for (int i = 0; i < allHits.Length; i++) 50 | { 51 | 52 | } 53 | 54 | return allHits[targetId]; 55 | } 56 | 57 | static LayerMask LayerMaskField(string label, LayerMask layerMask) 58 | { 59 | List layers = new List(); 60 | List layerNumbers = new List(); 61 | 62 | for (int i = 0; i < 32; i++) 63 | { 64 | string layerName = LayerMask.LayerToName(i); 65 | if (layerName != string.Empty) 66 | { 67 | layers.Add(layerName); 68 | layerNumbers.Add(i); 69 | } 70 | } 71 | int maskWithoutEmpty = 0; 72 | for (int i = 0; i < layerNumbers.Count; i++) 73 | { 74 | if (((1 << layerNumbers[i]) & layerMask.value) > 0) 75 | { 76 | maskWithoutEmpty |= (1 << i); 77 | } 78 | } 79 | maskWithoutEmpty = EditorGUILayout.MaskField(label, maskWithoutEmpty, layers.ToArray()); 80 | int mask = 0; 81 | for (int i = 0; i < layerNumbers.Count; i++) 82 | { 83 | if ((maskWithoutEmpty & (1 << i)) > 0) 84 | { 85 | mask |= (1 << layerNumbers[i]); 86 | } 87 | } 88 | layerMask.value = mask; 89 | return layerMask; 90 | } 91 | } 92 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Ignore.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 73983e198ea27d241bed5eb6a9a1d958 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/InstatiatePrefab.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | using Random = UnityEngine.Random; 7 | 8 | namespace Packages.PrefabshopEditor 9 | { 10 | public class InstatiatePrefab : Parameter 11 | { 12 | public override bool Hidden 13 | { 14 | get => true; 15 | } 16 | 17 | public InstatiatePrefab(Type toolType) : base(toolType) 18 | { 19 | 20 | } 21 | 22 | public void CreateObject(RaycastHit rayHit, Tool tool) 23 | { 24 | var newPos = rayHit.point + rayHit.normal.normalized * tool.GetParameter().value; 25 | var prefabs = tool.GetParameter().GetSelectedPrefabs(); 26 | if (prefabs.Count > 0) 27 | { 28 | var selectedPrefab = prefabs[Random.Range(0, prefabs.Count)]; 29 | GameObject osd = PrefabUtility.InstantiatePrefab(selectedPrefab) as GameObject; 30 | osd.transform.position = newPos; 31 | if (tool.GetParameter().randomScale) 32 | { 33 | osd.transform.localScale *= Random.Range(tool.GetParameter().minValue, tool.GetParameter().maxValue); 34 | } 35 | osd.transform.SetParent(tool.GetParameter().value); 36 | if (tool.GetParameter().useHitNormal) 37 | { 38 | osd.transform.up = rayHit.normal; 39 | } 40 | osd.transform.eulerAngles = tool.GetParameter().GetRotation(selectedPrefab); 41 | osd.tag = tool.GetParameter().value; 42 | osd.layer = tool.GetParameter().value; 43 | Undo.RegisterCreatedObjectUndo(osd, "Create Prefab Instance"); 44 | } 45 | } 46 | 47 | public void CreateObject(Vector3 pos, Tool tool) 48 | { 49 | var newPos = pos + Vector3.up * tool.GetParameter().value; 50 | var prefabs = tool.GetParameter().GetSelectedPrefabs(); 51 | if (prefabs.Count > 0) 52 | { 53 | var selectedPrefab = prefabs[Random.Range(0, prefabs.Count)]; 54 | GameObject osd = PrefabUtility.InstantiatePrefab(selectedPrefab) as GameObject; 55 | osd.transform.position = newPos; 56 | if (tool.GetParameter().randomScale) 57 | { 58 | osd.transform.localScale *= Random.Range(tool.GetParameter().minValue, tool.GetParameter().maxValue); 59 | } 60 | osd.transform.up = selectedPrefab.transform.up; 61 | osd.transform.SetParent(tool.GetParameter().value); 62 | osd.transform.eulerAngles = tool.GetParameter().GetRotation(selectedPrefab); 63 | osd.tag = tool.GetParameter().value; 64 | osd.layer = tool.GetParameter().value; 65 | Undo.RegisterCreatedObjectUndo(osd, "Create Prefab Instance"); 66 | } 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/InstatiatePrefab.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 619b327dafbd577449ae9b31e06080cd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Layer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class Layer : Parameter 10 | { 11 | public int value; 12 | 13 | public Layer(Type toolType) : base(toolType) 14 | { 15 | value = EditorPrefs.GetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value); 16 | } 17 | 18 | public override void DrawParameterGUI() 19 | { 20 | base.DrawParameterGUI(); 21 | EditorGUI.BeginChangeCheck(); 22 | value = EditorGUILayout.LayerField(this.GetType().Name, value); 23 | if (EditorGUI.EndChangeCheck()) 24 | { 25 | EditorPrefs.SetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value); 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Layer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9f1c8f444c348214788a2c6ba6f11236 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/ListOfObjects.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class ListOfObjects : Parameter 10 | { 11 | public override bool Hidden 12 | { 13 | get => true; 14 | } 15 | 16 | public List savedList; 17 | 18 | public ListOfObjects(Type toolType) : base(toolType) 19 | { 20 | } 21 | 22 | public override void DrawParameterGUI() 23 | { 24 | base.DrawParameterGUI(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/ListOfObjects.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cf8d1377a23d5ce4381f8c61a630799e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Mask.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class Mask : Parameter 10 | { 11 | private Prefabshop prefabshop; 12 | 13 | bool haveMask; 14 | public bool HaveMask 15 | { 16 | get 17 | { 18 | haveMask = prefabshop.maskShape != null; 19 | return haveMask; 20 | } 21 | } 22 | 23 | private Mesh maskShape; 24 | public Mesh MaskShape 25 | { 26 | get 27 | { 28 | maskShape = prefabshop.maskShape; 29 | return maskShape; 30 | } 31 | } 32 | 33 | public Mask(Type toolType) : base(toolType) 34 | { 35 | Hidden = true; 36 | var previousFocus = EditorWindow.focusedWindow; 37 | prefabshop = EditorWindow.GetWindow(); 38 | haveMask = prefabshop.maskShape != null; 39 | maskShape = prefabshop.maskShape; 40 | previousFocus.Focus(); 41 | } 42 | 43 | public bool CheckPoint(Vector3 point) 44 | { 45 | if (prefabshop.maskShape != null) 46 | { 47 | var maskOutline = prefabshop.maskOutline; 48 | return Geometry.PointInPolygon(point.x, point.z, maskOutline); 49 | } 50 | else 51 | { 52 | return true; 53 | } 54 | } 55 | } 56 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Mask.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2c32176a2a5240c43bc488dbeb64af9f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Outer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEditor; 4 | using UnityEngine; 5 | 6 | namespace Packages.PrefabshopEditor 7 | { 8 | public class Outer : Parameter 9 | { 10 | public bool value; 11 | 12 | public Outer(System.Type toolType) : base(toolType) 13 | { 14 | value = EditorPrefs.GetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value ? 1 : 0) == 1; 15 | } 16 | 17 | public override void DrawParameterGUI() 18 | { 19 | base.DrawParameterGUI(); 20 | EditorGUI.BeginChangeCheck(); 21 | value = EditorGUILayout.Toggle(this.GetType().Name, value); 22 | if (EditorGUI.EndChangeCheck()) 23 | { 24 | EditorPrefs.SetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value ? 1 : 0); 25 | } 26 | } 27 | 28 | public static Vector3 RandomPointOnCircleEdge(float radius, Vector3 normal) 29 | { 30 | var vector2 = Random.insideUnitCircle.normalized * radius; 31 | return new Vector3(vector2.x, 0, vector2.y); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Outer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c74c8b1f5b7236a40aba35d28ab95d2d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Parameter.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEditor; 4 | using UnityEngine; 5 | 6 | namespace Packages.PrefabshopEditor 7 | { 8 | public abstract class Parameter : IParameter 9 | { 10 | [MenuItem(itemName: "Assets/Create/Prefabshop/New Parameter Script", isValidateFunction: false, priority: 52)] 11 | public static void CreateScriptFromTemplate() 12 | { 13 | var path = AssetDatabase.GetAssetPath(Resources.Load("Parameter.cs")); 14 | ProjectWindowUtil.CreateScriptAssetFromTemplateFile(path, "NewParameter.cs"); 15 | } 16 | 17 | private bool hidden = false; 18 | 19 | public virtual bool Hidden 20 | { 21 | get => hidden; 22 | set => hidden = value; 23 | } 24 | 25 | private bool enable = true; 26 | 27 | public virtual bool Enable 28 | { 29 | get => enable; 30 | set => enable = value; 31 | } 32 | 33 | private int id = 0; 34 | 35 | public virtual int Identifier 36 | { 37 | get => id; 38 | set => id = value; 39 | } 40 | 41 | protected System.Type toolType; 42 | 43 | public System.Action valueChanged; 44 | 45 | protected Parameter(System.Type toolType) 46 | { 47 | this.toolType = toolType; 48 | } 49 | 50 | protected Parameter(System.Type toolType, int id) 51 | { 52 | this.toolType = toolType; 53 | this.id = id; 54 | } 55 | 56 | public virtual void DrawParameterGUI() 57 | { 58 | 59 | } 60 | 61 | public virtual void DrawTool(RaycastHit raycastHit) 62 | { 63 | 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Parameter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6c6244c7615241f4c9875e955fb48661 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Parent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class Parent : Parameter 10 | { 11 | public Transform value; 12 | 13 | public Parent(Type toolType) : base(toolType) 14 | { 15 | } 16 | 17 | public override void DrawParameterGUI() 18 | { 19 | base.DrawParameterGUI(); 20 | value = EditorGUILayout.ObjectField(this.GetType().Name, value, typeof(Transform), true) as Transform; 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Parent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 01e089dbffb0d3a48ab87f7f26054229 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/PrefabListInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class PrefabListInfo : MonoBehaviour 6 | { 7 | // Start is called before the first frame update 8 | void Start() 9 | { 10 | 11 | } 12 | 13 | // Update is called once per frame 14 | void Update() 15 | { 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/PrefabListInfo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b7aaace24fcc73044a117496f6773e23 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/PrefabSelector.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEditor; 4 | using UnityEngine; 5 | 6 | namespace Packages.PrefabshopEditor 7 | { 8 | public class PrefabSelector : Parameter 9 | { 10 | public PrefabSelector(System.Type toolType) : base(toolType) 11 | { 12 | 13 | } 14 | 15 | public bool haveButton; 16 | public string buttonName; 17 | public GameObject selectedPrefab; 18 | public System.Action onButtonClick; 19 | 20 | public override void DrawParameterGUI() 21 | { 22 | base.DrawParameterGUI(); 23 | selectedPrefab = EditorGUILayout.ObjectField("Prefab:", selectedPrefab, typeof(GameObject), false) as GameObject; 24 | if (GUILayout.Button(buttonName)) 25 | { 26 | onButtonClick?.Invoke(); 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/PrefabSelector.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e35d583c3a6d78a46bf2364a7bf094ac 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/PrefabsSet.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 412e1b54a873eda4abb31782a207b098 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Radius.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class Radius : Parameter 10 | { 11 | public float value = 10f; 12 | 13 | public Radius(Type toolType) : base(toolType) 14 | { 15 | value = EditorPrefs.GetFloat($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value); 16 | } 17 | 18 | public override void DrawParameterGUI() 19 | { 20 | base.DrawParameterGUI(); 21 | EditorGUI.BeginChangeCheck(); 22 | value = Mathf.Clamp(EditorGUILayout.FloatField(this.GetType().Name, value),0, Mathf.Infinity); 23 | if (EditorGUI.EndChangeCheck()) 24 | { 25 | EditorPrefs.SetFloat($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value); 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Radius.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f537fd0b21d282f4fb3e86af1238584b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Rotation.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEditor; 4 | using UnityEngine; 5 | 6 | namespace Packages.PrefabshopEditor 7 | { 8 | public class Rotation : Parameter 9 | { 10 | public bool usePrefabRotation; 11 | public bool randomRotation; 12 | public bool useHitNormal; 13 | 14 | Vector3 forceRotation; 15 | public Vector3 plusRotation; 16 | Vector3 minRotation; 17 | Vector3 maxRotation; 18 | 19 | public Rotation(System.Type toolType) : base(toolType) 20 | { 21 | } 22 | 23 | public override void DrawParameterGUI() 24 | { 25 | base.DrawParameterGUI(); 26 | GUI.enabled = !usePrefabRotation && !randomRotation && !useHitNormal && Enable; 27 | forceRotation = EditorGUILayout.Vector3Field("Force Rotation", forceRotation); 28 | GUI.enabled = !useHitNormal && !randomRotation && Enable; 29 | usePrefabRotation = EditorGUILayout.Toggle("Use Prefab Rotation:", usePrefabRotation); 30 | GUI.enabled = !usePrefabRotation && Enable; 31 | GUI.enabled = randomRotation = EditorGUILayout.Toggle("Random Rotation:", randomRotation); 32 | minRotation = EditorGUILayout.Vector3Field("Min Val:", minRotation); 33 | maxRotation = EditorGUILayout.Vector3Field("Max Val:", maxRotation); 34 | GUI.enabled = !usePrefabRotation && Enable; 35 | useHitNormal = EditorGUILayout.Toggle("Use Hit Normal:", useHitNormal); 36 | GUI.enabled = true && Enable; 37 | plusRotation = EditorGUILayout.Vector3Field("Plus Rotation", plusRotation); 38 | } 39 | 40 | public Vector3 GetRotation(GameObject prefabRef) 41 | { 42 | var finalRotation = forceRotation; 43 | if (usePrefabRotation && prefabRef != null) 44 | { 45 | finalRotation = prefabRef.transform.eulerAngles; 46 | } 47 | if (!usePrefabRotation && randomRotation) 48 | { 49 | float x = Random.Range(minRotation.x, maxRotation.x); 50 | float y = Random.Range(minRotation.y, maxRotation.y); 51 | float z = Random.Range(minRotation.z, maxRotation.z); 52 | 53 | Vector3 randomed = new Vector3(x, y, z); 54 | finalRotation = randomed; 55 | } 56 | finalRotation += plusRotation; 57 | return finalRotation; 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Rotation.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3ee4abf7830f620448100cb83e68a1fb 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Scale.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class Scale : Parameter 10 | { 11 | public bool randomScale; 12 | public float minValue = 1f; 13 | public float maxValue = 10f; 14 | 15 | public Scale(Type toolType) : base(toolType) 16 | { 17 | randomScale = EditorPrefs.GetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name}.randomScale", randomScale ? 1 : 0) == 1; 18 | minValue = EditorPrefs.GetFloat($"[Prefabshop] {toolType.Name}.{this.GetType().Name}.minValue", minValue); 19 | maxValue = EditorPrefs.GetFloat($"[Prefabshop] {toolType.Name}.{this.GetType().Name}.maxValue", maxValue); 20 | } 21 | 22 | public override void DrawParameterGUI() 23 | { 24 | base.DrawParameterGUI(); 25 | EditorGUI.BeginChangeCheck(); 26 | GUI.enabled = randomScale = EditorGUILayout.Toggle("Random Scale:", randomScale); 27 | if (EditorGUI.EndChangeCheck()) 28 | { 29 | EditorPrefs.SetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name}.randomScale", randomScale ? 1 : 0); 30 | } 31 | 32 | EditorGUI.BeginChangeCheck(); 33 | minValue = EditorGUILayout.FloatField("Min Val:", minValue); 34 | maxValue = EditorGUILayout.FloatField("Max Val:", maxValue); 35 | EditorGUILayout.MinMaxSlider(ref minValue, ref maxValue, 0f, 100f); 36 | GUI.enabled = true; 37 | if (EditorGUI.EndChangeCheck()) 38 | { 39 | EditorPrefs.SetFloat($"[Prefabshop] {toolType.Name}.{this.GetType().Name}.minValue", minValue); 40 | EditorPrefs.SetFloat($"[Prefabshop] {toolType.Name}.{this.GetType().Name}.maxValue", maxValue); 41 | } 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Scale.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: edc5b2d71b479114ab01e4b1d4e3d5ce 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/SelectToolBar.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class SelectToolBar : Parameter 10 | { 11 | public int idSelect; 12 | public string[] toolBar; 13 | 14 | public System.Action onChangeToolBar; 15 | 16 | public SelectToolBar(Type toolType) : base(toolType) 17 | { 18 | idSelect = EditorPrefs.GetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", idSelect); 19 | } 20 | 21 | public override void DrawParameterGUI() 22 | { 23 | base.DrawParameterGUI(); 24 | EditorGUI.BeginChangeCheck(); 25 | idSelect = GUILayout.Toolbar(idSelect, toolBar); 26 | if (EditorGUI.EndChangeCheck()) 27 | { 28 | EditorPrefs.SetInt($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", idSelect); 29 | onChangeToolBar?.Invoke(idSelect); 30 | } 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/SelectToolBar.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bf6f9cc8d9fc8ca449ea61142f69d5ef 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Shape.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class Shape : Parameter 10 | { 11 | private Texture2D texture; 12 | public Texture2D Texture 13 | { 14 | get 15 | { 16 | return texture; 17 | } 18 | set 19 | { 20 | if (texture != value) 21 | { 22 | onTextureChange?.Invoke(); 23 | texture = value; 24 | } 25 | } 26 | } 27 | 28 | private bool invert; 29 | public bool Invert 30 | { 31 | get 32 | { 33 | return invert; 34 | } 35 | set 36 | { 37 | if (invert != value) 38 | { 39 | valueChanged?.Invoke(); 40 | invert = value; 41 | } 42 | } 43 | } 44 | 45 | public System.Action onTextureChange; 46 | 47 | public Shape(Type toolType) : base(toolType) 48 | { 49 | string path = EditorPrefs.GetString($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", ""); 50 | if (path != "") 51 | { 52 | texture = AssetDatabase.LoadAssetAtPath(path, typeof(Texture2D)) as Texture2D; 53 | } 54 | } 55 | 56 | public override void DrawParameterGUI() 57 | { 58 | EditorGUI.BeginChangeCheck(); 59 | Texture = EditorGUILayout.ObjectField(this.GetType().Name, Texture, typeof(Texture2D), false) as Texture2D; 60 | GUI.enabled = Texture != null; 61 | if (GUILayout.Button("Clear Shape")) 62 | { 63 | Texture = null; 64 | } 65 | if (EditorGUI.EndChangeCheck()) 66 | { 67 | EditorPrefs.SetString($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", AssetDatabase.GetAssetPath(Texture)); 68 | } 69 | Invert = EditorGUILayout.Toggle("Invert:", Invert); 70 | } 71 | } 72 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Shape.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e299a1bf3e9fea24fbed65dd5efde549 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Step.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class Step : Parameter 10 | { 11 | public float value = 1f; 12 | 13 | public Step(Type toolType) : base(toolType) 14 | { 15 | value = EditorPrefs.GetFloat($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value); 16 | } 17 | 18 | public override void DrawParameterGUI() 19 | { 20 | base.DrawParameterGUI(); 21 | EditorGUI.BeginChangeCheck(); 22 | value = Mathf.Clamp(EditorGUILayout.FloatField(this.GetType().Name, value), 0, Mathf.Infinity); 23 | if (EditorGUI.EndChangeCheck()) 24 | { 25 | EditorPrefs.SetFloat($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value); 26 | } 27 | } 28 | 29 | public Vector3 GetSnappedPosition(Vector3 prevPos, Vector3 currentPos) 30 | { 31 | var result = prevPos; 32 | var heading = currentPos - prevPos; 33 | float distance = heading.magnitude; 34 | var direction = heading / distance; 35 | result = prevPos + direction * value; 36 | return result; 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Step.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bd8ccf9c57abf2a45aafbba444b8d5a9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Tag.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class Tag : Parameter 10 | { 11 | public string value = "Untagged"; 12 | 13 | public Tag(Type toolType) : base(toolType) 14 | { 15 | value = EditorPrefs.GetString($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value); 16 | } 17 | 18 | public override void DrawParameterGUI() 19 | { 20 | base.DrawParameterGUI(); 21 | EditorGUI.BeginChangeCheck(); 22 | value = EditorGUILayout.TagField(this.GetType().Name, value); 23 | if (EditorGUI.EndChangeCheck()) 24 | { 25 | EditorPrefs.SetString($"[Prefabshop] {toolType.Name}.{this.GetType().Name}", value); 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/Tag.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 75a49a197f28d2e4d8110055b3b0e1cd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/ToggleParameter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | public class ToggleParameter : Parameter 10 | { 11 | public string toggleName; 12 | public bool value; 13 | 14 | public ToggleParameter(Type toolType) : base(toolType) 15 | { 16 | string saveId = $"[Prefabshop] {toolType.Name}.{this.GetType().Name}.{toggleName}.{Identifier}"; 17 | value = EditorPrefs.GetBool(saveId, false); 18 | } 19 | 20 | public ToggleParameter(Type toolType, string name, int id) : base(toolType) 21 | { 22 | this.toggleName = name; 23 | this.Identifier = id; 24 | 25 | string saveId = $"[Prefabshop] {toolType.Name}.{this.GetType().Name}.{toggleName}.{Identifier}"; 26 | value = EditorPrefs.GetBool(saveId, false); 27 | } 28 | 29 | public override void DrawParameterGUI() 30 | { 31 | EditorGUI.BeginChangeCheck(); 32 | value = EditorGUILayout.Toggle(toggleName + ":", value); 33 | if (EditorGUI.EndChangeCheck()) 34 | { 35 | string saveId = $"[Prefabshop] {toolType.Name}.{this.GetType().Name}.{toggleName}.{Identifier}"; 36 | EditorPrefs.SetBool(saveId, value); 37 | } 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Parameters/ToggleParameter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7af244bb8d467b64c842efac6e523783 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/PolygonalLassoTool.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace Packages.PrefabshopEditor 8 | { 9 | [ToolKeyCodeAttribute(KeyCode.P)] 10 | public class PolygonalLassoTool : Tool 11 | { 12 | public Mesh shapeSelection; 13 | Mesh squareMesh; 14 | bool isPaint; 15 | 16 | public List selectionPoints = new List(); 17 | 18 | public PolygonalLassoTool() : base() 19 | { 20 | var type = this.GetType(); 21 | AddParameter(new Count(type)); 22 | AddParameter(new FirstObjectFilter(type)); 23 | AddParameter(new FilterObject(type)); 24 | AddParameter(new Ignore(type)); 25 | 26 | var previousFocus = EditorWindow.focusedWindow; 27 | var prefabshop = EditorWindow.GetWindow(); 28 | prefabshop.onMaskReset += OnMaskReset; 29 | previousFocus.Focus(); 30 | } 31 | 32 | private void OnMaskReset() 33 | { 34 | shapeSelection = null; 35 | squareMesh = null; 36 | selectionPoints.Clear(); 37 | } 38 | 39 | public override void SelectTool() 40 | { 41 | base.SelectTool(); 42 | selectionPoints = new List(); 43 | } 44 | 45 | public override void DeselectTool() 46 | { 47 | base.DeselectTool(); 48 | selectionPoints = new List(); 49 | } 50 | 51 | protected override void DrawTool(Ray drawPointHit) 52 | { 53 | base.DrawTool(drawPointHit); 54 | for (int i = 0; i < selectionPoints.Count - 1; i++) 55 | { 56 | var colorLine = i % 2 == 0 ? Color.black : Color.white; 57 | Handles.color = colorLine; 58 | Handles.DrawLine(selectionPoints[i], selectionPoints[i + 1]); 59 | } 60 | 61 | var e = Event.current; 62 | if (e.button == 0) 63 | { 64 | if (e.type == EventType.MouseUp && !e.shift && !e.control) 65 | { 66 | GenerateMaskMap(); 67 | } 68 | } 69 | } 70 | 71 | public override void Paint(RaycastHit drawPointHit) 72 | { 73 | base.Paint(drawPointHit); 74 | 75 | var e = Event.current; 76 | 77 | isPaint = e.button == 0 && (e.type == EventType.MouseDrag || e.type == EventType.MouseDown); 78 | if (e.type == EventType.MouseDrag && e.button == 0) 79 | { 80 | selectionPoints.Add(drawPointHit.point); 81 | e.Use(); 82 | return; 83 | } 84 | 85 | if (e.type == EventType.MouseDown && e.button == 0) 86 | { 87 | if (e.control) 88 | { 89 | GenerateMaskMap(); 90 | } 91 | else if (e.shift) 92 | { 93 | selectionPoints.Add(drawPointHit.point); 94 | } 95 | else 96 | { 97 | var previousFocus = EditorWindow.focusedWindow; 98 | EditorWindow.GetWindow().maskShape = null; 99 | previousFocus.Focus(); 100 | selectionPoints.Clear(); 101 | selectionPoints.Add(drawPointHit.point); 102 | } 103 | e.Use(); 104 | return; 105 | } 106 | } 107 | 108 | void GenerateMaskMap() 109 | { 110 | selectionPoints.Add(selectionPoints[0]); 111 | CreateSuqareOverMask(); 112 | float z = squareMesh.vertices[3].z - squareMesh.vertices[0].z; 113 | float x = squareMesh.vertices[3].x - squareMesh.vertices[0].x; 114 | 115 | float acepRatioX = (x / z); 116 | int acepRatioZ = (int)(z / x); 117 | 118 | int count = GetParameter().value; 119 | 120 | int[,] textureMap = new int[count, count]; 121 | 122 | for (int i = 0; i < count; i++) 123 | { 124 | for (int j = 0; j < count; j++) 125 | { 126 | 127 | float X = squareMesh.vertices[0].x + x * ((float)j / count); 128 | float Z = squareMesh.vertices[0].z + z * ((float)i / count); 129 | 130 | Vector3 point = new Vector3(x * ((float)j / count), 0, z * ((float)i / count)); 131 | textureMap[j, i] = Geometry.PointInPolygon(X, Z, selectionPoints.ToArray()) ? 1 : 0; 132 | } 133 | } 134 | 135 | if (selectionPoints.Count >= 3) 136 | { 137 | CreateMaskMesh(); 138 | } 139 | } 140 | 141 | void CreateMaskMesh() 142 | { 143 | var points2d = new Vector2[selectionPoints.Count]; 144 | for (int i = 0; i < points2d.Length; i++) 145 | { 146 | points2d[i] = new Vector2(selectionPoints[i].x, selectionPoints[i].z); 147 | } 148 | Triangulator tr = new Triangulator(points2d); 149 | int[] indices = tr.Triangulate(); 150 | 151 | // Create the Vector3 vertices 152 | Vector3[] vertices = new Vector3[selectionPoints.Count]; 153 | for (int i = 0; i < vertices.Length; i++) 154 | { 155 | vertices[i] = new Vector3(selectionPoints[i].x, 0, selectionPoints[i].z); 156 | } 157 | 158 | var uv = UvCalculator.CalculateUVs(vertices, 1f); 159 | 160 | // Create the mesh 161 | Mesh msh = new Mesh(); 162 | msh.vertices = vertices; 163 | msh.triangles = indices; 164 | msh.uv = uv; 165 | msh.RecalculateNormals(); 166 | msh.RecalculateBounds(); 167 | 168 | shapeSelection = msh; 169 | selectionPoints.Add(selectionPoints[0]); 170 | EditorWindow.GetWindow().maskShape = msh; 171 | EditorWindow.GetWindow().maskOutline = selectionPoints.ToArray(); 172 | } 173 | 174 | void CreateSuqareOverMask() 175 | { 176 | squareMesh = new Mesh(); 177 | 178 | selectionPoints.RemoveAt(selectionPoints.Count - 1); 179 | var vertices = Geometry.GetSquareOverPoints(selectionPoints.ToArray()); 180 | 181 | squareMesh.vertices = vertices; 182 | 183 | var tris = new int[6]{ 0, 2, 1, 2, 3, 1}; 184 | squareMesh.triangles = tris; 185 | 186 | var normals = new Vector3[4]{Vector3.up, Vector3.up, Vector3.up, Vector3.up }; 187 | squareMesh.normals = normals; 188 | } 189 | } 190 | } -------------------------------------------------------------------------------- /Editor/Scripts/Tools/PolygonalLassoTool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2db9d9d56f58e9b45b4f7c0fe8bba67e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/Tools/Tool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 86266297b2dac9144acb164f77c50afd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Scripts/VectorExtensions.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System; 5 | 6 | namespace Packages.PrefabshopEditor 7 | { 8 | public static class VectorExtensions 9 | { 10 | public static Vector3 X(this Vector3 vec) { return new Vector3(vec.x, 0f, 0f); } 11 | public static Vector3 Y(this Vector3 vec) { return new Vector3(0f, vec.y, 0f); } 12 | public static Vector3 Z(this Vector3 vec) { return new Vector3(0f, 0f, vec.z); } 13 | 14 | public static Vector3 XY(this Vector3 vec) { return new Vector3(vec.x, vec.y, 0f); } 15 | public static Vector3 XZ(this Vector3 vec) { return new Vector3(vec.x, 0f, vec.z); } 16 | public static Vector3 YZ(this Vector3 vec) { return new Vector3(0f, vec.y, vec.z); } 17 | 18 | public static Vector3 X(this Vector3 vec, Vector3 replacement) { return new Vector3(vec.x, replacement.y, replacement.z); } 19 | public static Vector3 Y(this Vector3 vec, Vector3 replacement) { return new Vector3(replacement.x, vec.y, replacement.z); } 20 | public static Vector3 Z(this Vector3 vec, Vector3 replacement) { return new Vector3(replacement.x, replacement.y, vec.z); } 21 | 22 | public static Vector3 FromBytes(byte[] buff) 23 | { 24 | Vector3 vect = Vector3.zero; 25 | vect.x = BitConverter.ToSingle(buff, 0 * sizeof(float)); 26 | vect.y = BitConverter.ToSingle(buff, 1 * sizeof(float)); 27 | vect.z = BitConverter.ToSingle(buff, 2 * sizeof(float)); 28 | 29 | return vect; 30 | } 31 | 32 | public static Vector3 X(this Vector3 vec, float y, float z) { return new Vector3(vec.x, y, z); } 33 | public static Vector3 Y(this Vector3 vec, float x, float z) { return new Vector3(x, vec.y, z); } 34 | public static Vector3 Z(this Vector3 vec, float x, float y) { return new Vector3(x, y, vec.z); } 35 | 36 | public static Vector3 XY(this Vector3 vec, Vector3 replacement) { return new Vector3(vec.x, vec.y, replacement.z); } 37 | public static Vector3 XZ(this Vector3 vec, Vector3 replacement) { return new Vector3(vec.x, replacement.y, vec.z); } 38 | public static Vector3 YZ(this Vector3 vec, Vector3 replacement) { return new Vector3(replacement.x, vec.y, vec.z); } 39 | 40 | public static Vector3 XY(this Vector3 vec, float replacement) { return new Vector3(vec.x, vec.y, replacement); } 41 | public static Vector3 XZ(this Vector3 vec, float replacement) { return new Vector3(vec.x, replacement, vec.z); } 42 | public static Vector3 YZ(this Vector3 vec, float replacement) { return new Vector3(replacement, vec.y, vec.z); } 43 | 44 | public static Vector3 XYZ(this Vector3 vec) { return new Vector3(vec.x, vec.y, vec.z); } 45 | 46 | public static Vector3 RandomVector() 47 | { 48 | Vector3 random = new Vector3(UnityEngine.Random.value, UnityEngine.Random.value, UnityEngine.Random.value); 49 | return random; 50 | } 51 | 52 | public static Vector3 ToAngles(this Vector3 vec) 53 | { 54 | if (vec.x > 180f) 55 | { 56 | vec.x = vec.x - 360f; 57 | } 58 | if (vec.y > 180f) 59 | { 60 | vec.y = vec.y - 360f; 61 | } 62 | if (vec.z > 180f) 63 | { 64 | vec.z = vec.z - 360f; 65 | } 66 | return vec; 67 | } 68 | 69 | public static Vector3 Randomize(this Vector3 original, float range) 70 | { 71 | Vector3 randomized = original; 72 | randomized.x += UnityEngine.Random.Range(-range, range); 73 | randomized.y += UnityEngine.Random.Range(-range, range); 74 | randomized.z += UnityEngine.Random.Range(-range, range); 75 | 76 | return randomized; 77 | } 78 | public static Vector3 RandomizeXZ(this Vector3 original, float range) 79 | { 80 | Vector3 randomized = original; 81 | randomized.x += UnityEngine.Random.Range(-range, range); 82 | randomized.z += UnityEngine.Random.Range(-range, range); 83 | 84 | return randomized; 85 | } 86 | public static Vector3 RandomizeXZ(this Vector3 original, float minRange, float maxRange) 87 | { 88 | Vector3 randomized = original; 89 | Vector3 random = (Vector3)UnityEngine.Random.insideUnitCircle.normalized * UnityEngine.Random.Range(minRange, maxRange); 90 | randomized += new Vector3(random.x, 0f, random.y); 91 | 92 | return randomized; 93 | } 94 | public static Vector3 Vector3FromString(string rString) 95 | { 96 | if (rString.Length < 2) 97 | { 98 | return Vector3.zero; 99 | } 100 | string[] temp = rString.Substring(1, rString.Length - 2).Split(','); 101 | float x = float.Parse(temp[0]); 102 | float y = float.Parse(temp[1]); 103 | float z = float.Parse(temp[2]); 104 | Vector3 rValue = new Vector3(x, y, z); 105 | return rValue; 106 | } 107 | 108 | public static byte[] ToBytes(this Vector3 vector) 109 | { 110 | byte[] buff = new byte[sizeof(float) * 3]; 111 | Buffer.BlockCopy(BitConverter.GetBytes(vector.x), 0, buff, 0 * sizeof(float), sizeof(float)); 112 | Buffer.BlockCopy(BitConverter.GetBytes(vector.y), 0, buff, 1 * sizeof(float), sizeof(float)); 113 | Buffer.BlockCopy(BitConverter.GetBytes(vector.z), 0, buff, 2 * sizeof(float), sizeof(float)); 114 | 115 | return buff; 116 | } 117 | } 118 | } -------------------------------------------------------------------------------- /Editor/Scripts/VectorExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c384b03317b64d142a25bc66cdd84f3d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 05a42e11adcc16c46af685c0e37c6db7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Prefabs/Capsule.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &579339887580297523 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 6483893871760089307} 12 | - component: {fileID: 5949296258782017453} 13 | - component: {fileID: 4206925180372909766} 14 | - component: {fileID: 6894194635652117369} 15 | m_Layer: 0 16 | m_Name: Capsule 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!4 &6483893871760089307 23 | Transform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 579339887580297523} 29 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 30 | m_LocalPosition: {x: -113.25539, y: -60.806973, z: 25.995964} 31 | m_LocalScale: {x: 1, y: 1, z: 1} 32 | m_Children: [] 33 | m_Father: {fileID: 0} 34 | m_RootOrder: 0 35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 36 | --- !u!33 &5949296258782017453 37 | MeshFilter: 38 | m_ObjectHideFlags: 0 39 | m_CorrespondingSourceObject: {fileID: 0} 40 | m_PrefabInstance: {fileID: 0} 41 | m_PrefabAsset: {fileID: 0} 42 | m_GameObject: {fileID: 579339887580297523} 43 | m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} 44 | --- !u!23 &4206925180372909766 45 | MeshRenderer: 46 | m_ObjectHideFlags: 0 47 | m_CorrespondingSourceObject: {fileID: 0} 48 | m_PrefabInstance: {fileID: 0} 49 | m_PrefabAsset: {fileID: 0} 50 | m_GameObject: {fileID: 579339887580297523} 51 | m_Enabled: 1 52 | m_CastShadows: 1 53 | m_ReceiveShadows: 1 54 | m_DynamicOccludee: 1 55 | m_MotionVectors: 1 56 | m_LightProbeUsage: 1 57 | m_ReflectionProbeUsage: 1 58 | m_RenderingLayerMask: 1 59 | m_RendererPriority: 0 60 | m_Materials: 61 | - {fileID: 2100000, guid: 6d57ded0234042b48afd70be50136ca1, type: 2} 62 | m_StaticBatchInfo: 63 | firstSubMesh: 0 64 | subMeshCount: 0 65 | m_StaticBatchRoot: {fileID: 0} 66 | m_ProbeAnchor: {fileID: 0} 67 | m_LightProbeVolumeOverride: {fileID: 0} 68 | m_ScaleInLightmap: 1 69 | m_ReceiveGI: 1 70 | m_PreserveUVs: 0 71 | m_IgnoreNormalsForChartDetection: 0 72 | m_ImportantGI: 0 73 | m_StitchLightmapSeams: 1 74 | m_SelectedEditorRenderState: 3 75 | m_MinimumChartSize: 4 76 | m_AutoUVMaxDistance: 0.5 77 | m_AutoUVMaxAngle: 89 78 | m_LightmapParameters: {fileID: 0} 79 | m_SortingLayerID: 0 80 | m_SortingLayer: 0 81 | m_SortingOrder: 0 82 | --- !u!136 &6894194635652117369 83 | CapsuleCollider: 84 | m_ObjectHideFlags: 0 85 | m_CorrespondingSourceObject: {fileID: 0} 86 | m_PrefabInstance: {fileID: 0} 87 | m_PrefabAsset: {fileID: 0} 88 | m_GameObject: {fileID: 579339887580297523} 89 | m_Material: {fileID: 0} 90 | m_IsTrigger: 0 91 | m_Enabled: 1 92 | m_Radius: 0.5 93 | m_Height: 2 94 | m_Direction: 1 95 | m_Center: {x: 0, y: 0, z: 0} 96 | -------------------------------------------------------------------------------- /Prefabs/Capsule.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 005efdac5518c174cb537f7fd5553aca 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Prefabs/Cube.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &753119764481210622 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 8488128184841061491} 12 | - component: {fileID: 2880250801363998046} 13 | - component: {fileID: 6712649516734088609} 14 | - component: {fileID: 8691459297935655238} 15 | m_Layer: 0 16 | m_Name: Cube 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!4 &8488128184841061491 23 | Transform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 753119764481210622} 29 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 30 | m_LocalPosition: {x: -113.25539, y: -60.806973, z: 25.995964} 31 | m_LocalScale: {x: 1, y: 1, z: 1} 32 | m_Children: [] 33 | m_Father: {fileID: 0} 34 | m_RootOrder: 0 35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 36 | --- !u!33 &2880250801363998046 37 | MeshFilter: 38 | m_ObjectHideFlags: 0 39 | m_CorrespondingSourceObject: {fileID: 0} 40 | m_PrefabInstance: {fileID: 0} 41 | m_PrefabAsset: {fileID: 0} 42 | m_GameObject: {fileID: 753119764481210622} 43 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 44 | --- !u!23 &6712649516734088609 45 | MeshRenderer: 46 | m_ObjectHideFlags: 0 47 | m_CorrespondingSourceObject: {fileID: 0} 48 | m_PrefabInstance: {fileID: 0} 49 | m_PrefabAsset: {fileID: 0} 50 | m_GameObject: {fileID: 753119764481210622} 51 | m_Enabled: 1 52 | m_CastShadows: 1 53 | m_ReceiveShadows: 1 54 | m_DynamicOccludee: 1 55 | m_MotionVectors: 1 56 | m_LightProbeUsage: 1 57 | m_ReflectionProbeUsage: 1 58 | m_RenderingLayerMask: 1 59 | m_RendererPriority: 0 60 | m_Materials: 61 | - {fileID: 2100000, guid: 877d8d0f6885f8241847f3b780862ba6, type: 2} 62 | m_StaticBatchInfo: 63 | firstSubMesh: 0 64 | subMeshCount: 0 65 | m_StaticBatchRoot: {fileID: 0} 66 | m_ProbeAnchor: {fileID: 0} 67 | m_LightProbeVolumeOverride: {fileID: 0} 68 | m_ScaleInLightmap: 1 69 | m_ReceiveGI: 1 70 | m_PreserveUVs: 0 71 | m_IgnoreNormalsForChartDetection: 0 72 | m_ImportantGI: 0 73 | m_StitchLightmapSeams: 1 74 | m_SelectedEditorRenderState: 3 75 | m_MinimumChartSize: 4 76 | m_AutoUVMaxDistance: 0.5 77 | m_AutoUVMaxAngle: 89 78 | m_LightmapParameters: {fileID: 0} 79 | m_SortingLayerID: 0 80 | m_SortingLayer: 0 81 | m_SortingOrder: 0 82 | --- !u!65 &8691459297935655238 83 | BoxCollider: 84 | m_ObjectHideFlags: 0 85 | m_CorrespondingSourceObject: {fileID: 0} 86 | m_PrefabInstance: {fileID: 0} 87 | m_PrefabAsset: {fileID: 0} 88 | m_GameObject: {fileID: 753119764481210622} 89 | m_Material: {fileID: 0} 90 | m_IsTrigger: 0 91 | m_Enabled: 1 92 | serializedVersion: 2 93 | m_Size: {x: 1, y: 1, z: 1} 94 | m_Center: {x: 0, y: 0, z: 0} 95 | -------------------------------------------------------------------------------- /Prefabs/Cube.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 879a8b884fd7363458a916a309746ec4 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Prefabs/Cylinder.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &5590417543050163645 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 3047377340458547963} 12 | - component: {fileID: 5103622628222668999} 13 | - component: {fileID: 523636616610445899} 14 | - component: {fileID: 2870717266983991216} 15 | m_Layer: 0 16 | m_Name: Cylinder 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!4 &3047377340458547963 23 | Transform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 5590417543050163645} 29 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 30 | m_LocalPosition: {x: -113.25539, y: -60.806973, z: 25.995964} 31 | m_LocalScale: {x: 1, y: 1, z: 1} 32 | m_Children: [] 33 | m_Father: {fileID: 0} 34 | m_RootOrder: 0 35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 36 | --- !u!33 &5103622628222668999 37 | MeshFilter: 38 | m_ObjectHideFlags: 0 39 | m_CorrespondingSourceObject: {fileID: 0} 40 | m_PrefabInstance: {fileID: 0} 41 | m_PrefabAsset: {fileID: 0} 42 | m_GameObject: {fileID: 5590417543050163645} 43 | m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} 44 | --- !u!23 &523636616610445899 45 | MeshRenderer: 46 | m_ObjectHideFlags: 0 47 | m_CorrespondingSourceObject: {fileID: 0} 48 | m_PrefabInstance: {fileID: 0} 49 | m_PrefabAsset: {fileID: 0} 50 | m_GameObject: {fileID: 5590417543050163645} 51 | m_Enabled: 1 52 | m_CastShadows: 1 53 | m_ReceiveShadows: 1 54 | m_DynamicOccludee: 1 55 | m_MotionVectors: 1 56 | m_LightProbeUsage: 1 57 | m_ReflectionProbeUsage: 1 58 | m_RenderingLayerMask: 1 59 | m_RendererPriority: 0 60 | m_Materials: 61 | - {fileID: 2100000, guid: fe8841081a6a26343a0aa500f229ae82, type: 2} 62 | m_StaticBatchInfo: 63 | firstSubMesh: 0 64 | subMeshCount: 0 65 | m_StaticBatchRoot: {fileID: 0} 66 | m_ProbeAnchor: {fileID: 0} 67 | m_LightProbeVolumeOverride: {fileID: 0} 68 | m_ScaleInLightmap: 1 69 | m_ReceiveGI: 1 70 | m_PreserveUVs: 0 71 | m_IgnoreNormalsForChartDetection: 0 72 | m_ImportantGI: 0 73 | m_StitchLightmapSeams: 1 74 | m_SelectedEditorRenderState: 3 75 | m_MinimumChartSize: 4 76 | m_AutoUVMaxDistance: 0.5 77 | m_AutoUVMaxAngle: 89 78 | m_LightmapParameters: {fileID: 0} 79 | m_SortingLayerID: 0 80 | m_SortingLayer: 0 81 | m_SortingOrder: 0 82 | --- !u!136 &2870717266983991216 83 | CapsuleCollider: 84 | m_ObjectHideFlags: 0 85 | m_CorrespondingSourceObject: {fileID: 0} 86 | m_PrefabInstance: {fileID: 0} 87 | m_PrefabAsset: {fileID: 0} 88 | m_GameObject: {fileID: 5590417543050163645} 89 | m_Material: {fileID: 0} 90 | m_IsTrigger: 0 91 | m_Enabled: 1 92 | m_Radius: 0.5000001 93 | m_Height: 2 94 | m_Direction: 1 95 | m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} 96 | -------------------------------------------------------------------------------- /Prefabs/Cylinder.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5b82bd61173444345aeeebca2342ff19 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Prefabs/Sphere.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &2602752127934446500 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 2146931934536288589} 12 | - component: {fileID: 6925417655050412182} 13 | - component: {fileID: 8398011876341654707} 14 | - component: {fileID: 1473321206672662748} 15 | m_Layer: 0 16 | m_Name: Sphere 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!4 &2146931934536288589 23 | Transform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 2602752127934446500} 29 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 30 | m_LocalPosition: {x: 23.883263, y: -42.781704, z: 19.682152} 31 | m_LocalScale: {x: 1, y: 1, z: 1} 32 | m_Children: [] 33 | m_Father: {fileID: 0} 34 | m_RootOrder: 0 35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 36 | --- !u!33 &6925417655050412182 37 | MeshFilter: 38 | m_ObjectHideFlags: 0 39 | m_CorrespondingSourceObject: {fileID: 0} 40 | m_PrefabInstance: {fileID: 0} 41 | m_PrefabAsset: {fileID: 0} 42 | m_GameObject: {fileID: 2602752127934446500} 43 | m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} 44 | --- !u!23 &8398011876341654707 45 | MeshRenderer: 46 | m_ObjectHideFlags: 0 47 | m_CorrespondingSourceObject: {fileID: 0} 48 | m_PrefabInstance: {fileID: 0} 49 | m_PrefabAsset: {fileID: 0} 50 | m_GameObject: {fileID: 2602752127934446500} 51 | m_Enabled: 1 52 | m_CastShadows: 1 53 | m_ReceiveShadows: 1 54 | m_DynamicOccludee: 1 55 | m_MotionVectors: 1 56 | m_LightProbeUsage: 1 57 | m_ReflectionProbeUsage: 1 58 | m_RenderingLayerMask: 1 59 | m_RendererPriority: 0 60 | m_Materials: 61 | - {fileID: 2100000, guid: 234b0acd507e04c4aaeb27d3aa914169, type: 2} 62 | m_StaticBatchInfo: 63 | firstSubMesh: 0 64 | subMeshCount: 0 65 | m_StaticBatchRoot: {fileID: 0} 66 | m_ProbeAnchor: {fileID: 0} 67 | m_LightProbeVolumeOverride: {fileID: 0} 68 | m_ScaleInLightmap: 1 69 | m_ReceiveGI: 1 70 | m_PreserveUVs: 0 71 | m_IgnoreNormalsForChartDetection: 0 72 | m_ImportantGI: 0 73 | m_StitchLightmapSeams: 1 74 | m_SelectedEditorRenderState: 3 75 | m_MinimumChartSize: 4 76 | m_AutoUVMaxDistance: 0.5 77 | m_AutoUVMaxAngle: 89 78 | m_LightmapParameters: {fileID: 0} 79 | m_SortingLayerID: 0 80 | m_SortingLayer: 0 81 | m_SortingOrder: 0 82 | --- !u!135 &1473321206672662748 83 | SphereCollider: 84 | m_ObjectHideFlags: 0 85 | m_CorrespondingSourceObject: {fileID: 0} 86 | m_PrefabInstance: {fileID: 0} 87 | m_PrefabAsset: {fileID: 0} 88 | m_GameObject: {fileID: 2602752127934446500} 89 | m_Material: {fileID: 0} 90 | m_IsTrigger: 0 91 | m_Enabled: 1 92 | serializedVersion: 2 93 | m_Radius: 0.5 94 | m_Center: {x: 0, y: 0, z: 0} 95 | -------------------------------------------------------------------------------- /Prefabs/Sphere.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c0da57286956eff4788385a1f7968c48 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Prefabshop 2 | ============== 3 | 4 | **Prefabshop** is an customizable tool which allows you to place Prefabs on colliders surfaces in the scene view. 5 | Project plan https://trello.com/b/BXGkQKmK/prefabshop 6 | 7 | System Requirements 8 | ------------------- 9 | 10 | - Unity 2019.1 or later 11 | 12 | Installation 13 | -------------- 14 | - Create folder in your project eg `Assets/Packages/Prefabshop` 15 | - Open created folder in GitBush or over Version Control System 16 | - If your project is repository, then add this rep like submodule 17 | - `git submodule add https://github.com/Raptorij/Prefabshop.git Assets/Packages/Prefabshop/` 18 | - If you project is no repository, then just use: 19 | - `git init` 20 | - `git remote add origin https://github.com/Raptorij/Prefabshop.git` 21 | - `git pull origin master` 22 | 23 | 24 | How To Use 25 | -------------- 26 | - Open Prefabshop window in `Tools/Prefabshop` 27 | - Load BrushInfo asset which includes list of prefabs 28 | - Select tool with hotkey or button in top left corner of the SceneView 29 | - Set up tool parameters in opened Parameters window 30 | - Use tool... 31 | 32 | Tools 33 | ------------------- 34 | 35 | Tools | Description | Usage Example 36 | ----------------|----------------------|---------------------- 37 | _**Brush**_ - [B] | BrushTool allows you to place Prefabs. In settings of this tool you can add black-white texture to place objects inside some shape, there are examples of such textures in the project. | 38 | _**Eraser**_ - [C] | EraserTool allow you to Remove Prefabs | 39 | _**Line**_ - [L] | LineTool allows you to place Prefabs by line | 40 | _**Fill**_ - [G] | FillTool allows you to randomly place Prefabs on object surface | 41 | _**Magic Wand**_ - [M] | LineTool allows you to select all prefabs instance on scene by select one of them | 42 | _**Lasso**_ - [P] | LassoTool allows you to create mask for using tools only inside of mask | -------------------------------------------------------------------------------- /README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bca1a9ac4f069824da885fa44c856797 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /demo.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6942e4c3d928d234dabd2b604a1a0cc8 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /demo/brushTool.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/demo/brushTool.gif -------------------------------------------------------------------------------- /demo/brushTool.gif.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: af9dc5b32b74d824d95f27ea43aa8dc7 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | spriteSheet: 74 | serializedVersion: 2 75 | sprites: [] 76 | outline: [] 77 | physicsShape: [] 78 | bones: [] 79 | spriteID: 80 | internalID: 0 81 | vertices: [] 82 | indices: 83 | edges: [] 84 | weights: [] 85 | secondaryTextures: [] 86 | spritePackingTag: 87 | pSDRemoveMatte: 0 88 | pSDShowRemoveMatteOption: 0 89 | userData: 90 | assetBundleName: 91 | assetBundleVariant: 92 | -------------------------------------------------------------------------------- /demo/eraserTool.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/demo/eraserTool.gif -------------------------------------------------------------------------------- /demo/eraserTool.gif.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f567a7be6f3075647968e0db64ff65b0 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | spriteSheet: 74 | serializedVersion: 2 75 | sprites: [] 76 | outline: [] 77 | physicsShape: [] 78 | bones: [] 79 | spriteID: 80 | internalID: 0 81 | vertices: [] 82 | indices: 83 | edges: [] 84 | weights: [] 85 | secondaryTextures: [] 86 | spritePackingTag: 87 | pSDRemoveMatte: 0 88 | pSDShowRemoveMatteOption: 0 89 | userData: 90 | assetBundleName: 91 | assetBundleVariant: 92 | -------------------------------------------------------------------------------- /demo/fillTool.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/demo/fillTool.gif -------------------------------------------------------------------------------- /demo/fillTool.gif.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5beb97b1795e8d54581ddbb6cbe047c9 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | spriteSheet: 74 | serializedVersion: 2 75 | sprites: [] 76 | outline: [] 77 | physicsShape: [] 78 | bones: [] 79 | spriteID: 80 | internalID: 0 81 | vertices: [] 82 | indices: 83 | edges: [] 84 | weights: [] 85 | secondaryTextures: [] 86 | spritePackingTag: 87 | pSDRemoveMatte: 0 88 | pSDShowRemoveMatteOption: 0 89 | userData: 90 | assetBundleName: 91 | assetBundleVariant: 92 | -------------------------------------------------------------------------------- /demo/lassoTool.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/demo/lassoTool.gif -------------------------------------------------------------------------------- /demo/lassoTool.gif.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d4d9500c5f4ba124fa4ae8f1b8bd295e 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | spriteSheet: 74 | serializedVersion: 2 75 | sprites: [] 76 | outline: [] 77 | physicsShape: [] 78 | bones: [] 79 | spriteID: 80 | internalID: 0 81 | vertices: [] 82 | indices: 83 | edges: [] 84 | weights: [] 85 | secondaryTextures: [] 86 | spritePackingTag: 87 | pSDRemoveMatte: 0 88 | pSDShowRemoveMatteOption: 0 89 | userData: 90 | assetBundleName: 91 | assetBundleVariant: 92 | -------------------------------------------------------------------------------- /demo/lineTool.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/demo/lineTool.gif -------------------------------------------------------------------------------- /demo/lineTool.gif.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ff27d4ebefa3ba7448e4b4c8e93c6bbe 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | spriteSheet: 74 | serializedVersion: 2 75 | sprites: [] 76 | outline: [] 77 | physicsShape: [] 78 | bones: [] 79 | spriteID: 80 | internalID: 0 81 | vertices: [] 82 | indices: 83 | edges: [] 84 | weights: [] 85 | secondaryTextures: [] 86 | spritePackingTag: 87 | pSDRemoveMatte: 0 88 | pSDShowRemoveMatteOption: 0 89 | userData: 90 | assetBundleName: 91 | assetBundleVariant: 92 | -------------------------------------------------------------------------------- /demo/magicWandTool.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Raptorij/Prefabshop/52280dfdb88c62db3e8b45c2f0fdbaf0b9a97b50/demo/magicWandTool.gif -------------------------------------------------------------------------------- /demo/magicWandTool.gif.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 84a8f9ac22ea0d647a61e11abd0b1be4 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | spriteSheet: 74 | serializedVersion: 2 75 | sprites: [] 76 | outline: [] 77 | physicsShape: [] 78 | bones: [] 79 | spriteID: 80 | internalID: 0 81 | vertices: [] 82 | indices: 83 | edges: [] 84 | weights: [] 85 | secondaryTextures: [] 86 | spritePackingTag: 87 | pSDRemoveMatte: 0 88 | pSDShowRemoveMatteOption: 0 89 | userData: 90 | assetBundleName: 91 | assetBundleVariant: 92 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.raptorij.prefabshop", 3 | "version": "1.1.1", 4 | "displayName": "Prefabshop", 5 | "description": "Tool for pain prefabs on surface", 6 | "unity": "2019.3", 7 | "dependencies": { 8 | }, 9 | "keywords": [ 10 | "Prefabs" 11 | ], 12 | "author": { 13 | "name": "Raptorij", 14 | "url": "https://github.com/Raptorij" 15 | }, 16 | "hideInEditor": false, 17 | "samples": [ 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 60bf46a1f1fdf45468c58746fb040b7d 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | --------------------------------------------------------------------------------