diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..d0df7d3 --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,7 @@ +{ + "permissions": { + "allow": [ + "Bash(tree:*)" + ] + } +} diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index ea95f45..8250869 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -49,9 +49,14 @@ + + + + + diff --git a/Assets/Data/BuildingData.asset b/Assets/Data/BuildingData.asset new file mode 100644 index 0000000..884cb97 --- /dev/null +++ b/Assets/Data/BuildingData.asset @@ -0,0 +1,21 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 937e64980d44d6b46acb35b8046adf34, type: 3} + m_Name: BuildingData + m_EditorClassIdentifier: Assembly-CSharp::Northbound.BuildingData + buildingName: BaseTower + prefab: {fileID: 3733880183385667081, guid: 1979909431408184b9bc587877c5b4b4, type: 3} + width: 1 + length: 1 + height: 2 + placementOffset: {x: 0, y: 0, z: 0} + allowRotation: 1 diff --git a/Assets/Data/BuildingData.asset.meta b/Assets/Data/BuildingData.asset.meta new file mode 100644 index 0000000..b0fb6a5 --- /dev/null +++ b/Assets/Data/BuildingData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 23c12a82ea534b34299700b86fffd524 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DefaultNetworkPrefabs.asset b/Assets/DefaultNetworkPrefabs.asset index a2f6956..8416bd1 100644 --- a/Assets/DefaultNetworkPrefabs.asset +++ b/Assets/DefaultNetworkPrefabs.asset @@ -19,3 +19,8 @@ MonoBehaviour: SourcePrefabToOverride: {fileID: 0} SourceHashToOverride: 0 OverridingTargetPrefab: {fileID: 0} + - Override: 0 + Prefab: {fileID: 3733880183385667081, guid: 1979909431408184b9bc587877c5b4b4, type: 3} + SourcePrefabToOverride: {fileID: 0} + SourceHashToOverride: 0 + OverridingTargetPrefab: {fileID: 0} diff --git a/Assets/External/Kaykit Medieval Hexagon.meta b/Assets/External/Kaykit Medieval Hexagon.meta new file mode 100644 index 0000000..8efbbc5 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0044b1ec7ed91e247adf7a75ec05aeb6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings.meta new file mode 100644 index 0000000..afdf5dd --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d2270266c7faaff4b95c7602e83df5df +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue.meta new file mode 100644 index 0000000..7cbf6ee --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a556af67ccb51dd469c7083df37c2802 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_archeryrange_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_archeryrange_blue.fbx new file mode 100644 index 0000000..8f4b8d1 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_archeryrange_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_archeryrange_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_archeryrange_blue.fbx.meta new file mode 100644 index 0000000..10b1f23 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_archeryrange_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: f911fb7b59d4e0c44b75d7b9517d7611 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_barracks_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_barracks_blue.fbx new file mode 100644 index 0000000..c7f1f7a Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_barracks_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_barracks_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_barracks_blue.fbx.meta new file mode 100644 index 0000000..8e12c28 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_barracks_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 541b41b312c58644885ec05deac3e6ca +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_blacksmith_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_blacksmith_blue.fbx new file mode 100644 index 0000000..5f54479 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_blacksmith_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_blacksmith_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_blacksmith_blue.fbx.meta new file mode 100644 index 0000000..9714611 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_blacksmith_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 8a9efd5c4c2231648949840ad6529f58 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_castle_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_castle_blue.fbx new file mode 100644 index 0000000..bb0f21e Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_castle_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_castle_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_castle_blue.fbx.meta new file mode 100644 index 0000000..872a2ef --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_castle_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 0402c4b1e07c04444b61bea1d63d7880 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_church_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_church_blue.fbx new file mode 100644 index 0000000..a85e9be Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_church_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_church_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_church_blue.fbx.meta new file mode 100644 index 0000000..5c30ca7 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_church_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: a81605b662cbe434797c3a36df552acd +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_home_A_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_home_A_blue.fbx new file mode 100644 index 0000000..671f12e Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_home_A_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_home_A_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_home_A_blue.fbx.meta new file mode 100644 index 0000000..13981a9 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_home_A_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 34f30443ae6b90c479bcd207cebedc98 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_home_B_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_home_B_blue.fbx new file mode 100644 index 0000000..1f157d9 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_home_B_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_home_B_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_home_B_blue.fbx.meta new file mode 100644 index 0000000..66b2d0d --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_home_B_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 6a3eaa66f0b05be4296ca6d64ef1adb1 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_lumbermill_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_lumbermill_blue.fbx new file mode 100644 index 0000000..8e838b2 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_lumbermill_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_lumbermill_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_lumbermill_blue.fbx.meta new file mode 100644 index 0000000..979ca41 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_lumbermill_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 4bace94893b4e5c4eb57ce2c732419ef +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_market_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_market_blue.fbx new file mode 100644 index 0000000..0d29467 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_market_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_market_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_market_blue.fbx.meta new file mode 100644 index 0000000..3ed03d4 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_market_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 6f010940e14d29946acdf47f3c558dad +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_mine_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_mine_blue.fbx new file mode 100644 index 0000000..0af0b06 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_mine_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_mine_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_mine_blue.fbx.meta new file mode 100644 index 0000000..66680ec --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_mine_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: a58786a28a2fd2b40b9df4d8592ce2b8 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tavern_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tavern_blue.fbx new file mode 100644 index 0000000..c051023 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tavern_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tavern_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tavern_blue.fbx.meta new file mode 100644 index 0000000..68b9dec --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tavern_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: c42ac98a221bd71439652dafd5440549 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_A_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_A_blue.fbx new file mode 100644 index 0000000..0982035 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_A_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_A_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_A_blue.fbx.meta new file mode 100644 index 0000000..8c3b8f7 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_A_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 128035a3339ed60429405f26baf23be7 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_B_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_B_blue.fbx new file mode 100644 index 0000000..f067591 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_B_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_B_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_B_blue.fbx.meta new file mode 100644 index 0000000..3056ad2 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_B_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: f500e63426996224a921c2d25ba7d8e1 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_base_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_base_blue.fbx new file mode 100644 index 0000000..95df01d Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_base_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_base_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_base_blue.fbx.meta new file mode 100644 index 0000000..5bb086b --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_base_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 9925587cfc99e8148bfab9d8b22d9f87 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_catapult_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_catapult_blue.fbx new file mode 100644 index 0000000..cc89f80 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_catapult_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_catapult_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_catapult_blue.fbx.meta new file mode 100644 index 0000000..8eb032f --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_tower_catapult_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 44f1bfa31a734db41aa05bad7e3848e0 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_watermill_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_watermill_blue.fbx new file mode 100644 index 0000000..39e6b25 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_watermill_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_watermill_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_watermill_blue.fbx.meta new file mode 100644 index 0000000..80e4c4d --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_watermill_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 42a0a711fe55cbb47957f3fd5bc58f5b +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_well_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_well_blue.fbx new file mode 100644 index 0000000..1a3dddd Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_well_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_well_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_well_blue.fbx.meta new file mode 100644 index 0000000..665243b --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_well_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 57ffacd9359c6354982488a260877465 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_windmill_blue.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_windmill_blue.fbx new file mode 100644 index 0000000..0f5f737 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_windmill_blue.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_windmill_blue.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_windmill_blue.fbx.meta new file mode 100644 index 0000000..3114e04 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/building_windmill_blue.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 76d2fc886520a194f897149741d80cab +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/hexagons_medieval.png b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/hexagons_medieval.png new file mode 100644 index 0000000..14cdc25 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/hexagons_medieval.png differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/hexagons_medieval.png.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/hexagons_medieval.png.meta new file mode 100644 index 0000000..1268206 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/blue/hexagons_medieval.png.meta @@ -0,0 +1,156 @@ +fileFormatVersion: 2 +guid: b9dd7682e7a0a6041b2590e464add09c +TextureImporter: + internalIDToNameTable: + - first: + 213: 4348085514693947249 + second: hexagons_medieval_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: hexagons_medieval_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1024 + height: 1024 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 17faa5c0db0875c30800000000000000 + internalID: 4348085514693947249 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + hexagons_medieval_0: 4348085514693947249 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red.meta new file mode 100644 index 0000000..6032bf1 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4b457d9018e20c640b9aead660b1a2f4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_archeryrange_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_archeryrange_red.fbx new file mode 100644 index 0000000..d55a645 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_archeryrange_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_archeryrange_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_archeryrange_red.fbx.meta new file mode 100644 index 0000000..4a0a7f9 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_archeryrange_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: ad5e6a006d76fe64ebc3d3ea81c2676e +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_barracks_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_barracks_red.fbx new file mode 100644 index 0000000..2996a16 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_barracks_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_barracks_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_barracks_red.fbx.meta new file mode 100644 index 0000000..021c2d8 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_barracks_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 67a3d1e5fa007d0429fc2d007ba0df18 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_blacksmith_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_blacksmith_red.fbx new file mode 100644 index 0000000..2aabebf Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_blacksmith_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_blacksmith_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_blacksmith_red.fbx.meta new file mode 100644 index 0000000..07bce7c --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_blacksmith_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 00bd6ef0e9898694a9c3c2b2e97ad08a +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_castle_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_castle_red.fbx new file mode 100644 index 0000000..afaa9df Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_castle_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_castle_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_castle_red.fbx.meta new file mode 100644 index 0000000..cbdf2d0 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_castle_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: abbef665d6427ce4894f50211167e122 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_church_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_church_red.fbx new file mode 100644 index 0000000..4df7ad6 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_church_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_church_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_church_red.fbx.meta new file mode 100644 index 0000000..83fbdfd --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_church_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 83339876c201d114abb89b3ac8694bcc +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_home_A_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_home_A_red.fbx new file mode 100644 index 0000000..cd6854a Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_home_A_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_home_A_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_home_A_red.fbx.meta new file mode 100644 index 0000000..52e84c2 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_home_A_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 48ec7b33c6c259946b04ad301626728a +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_home_B_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_home_B_red.fbx new file mode 100644 index 0000000..2115030 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_home_B_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_home_B_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_home_B_red.fbx.meta new file mode 100644 index 0000000..69783df --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_home_B_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 76d058a3106e2b645beb7f796e853d81 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_lumbermill_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_lumbermill_red.fbx new file mode 100644 index 0000000..27277e5 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_lumbermill_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_lumbermill_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_lumbermill_red.fbx.meta new file mode 100644 index 0000000..5dd7479 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_lumbermill_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 18bfa43615c2b25459c085e2bc6698f9 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_market_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_market_red.fbx new file mode 100644 index 0000000..4aebad3 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_market_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_market_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_market_red.fbx.meta new file mode 100644 index 0000000..6ea3af7 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_market_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: c61cbb57590aae14b8373f88e60e6006 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_mine_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_mine_red.fbx new file mode 100644 index 0000000..28caf68 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_mine_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_mine_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_mine_red.fbx.meta new file mode 100644 index 0000000..5162915 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_mine_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 5b74918579d10714eb1153a3011946d8 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tavern_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tavern_red.fbx new file mode 100644 index 0000000..b473b16 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tavern_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tavern_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tavern_red.fbx.meta new file mode 100644 index 0000000..54642f7 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tavern_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 5e05da3c4224a7d4b806f6f378db26ec +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_A_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_A_red.fbx new file mode 100644 index 0000000..361fe67 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_A_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_A_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_A_red.fbx.meta new file mode 100644 index 0000000..c84495d --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_A_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 74d02ea245408b74a9e4412a148edfbe +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_B_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_B_red.fbx new file mode 100644 index 0000000..b7d1f34 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_B_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_B_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_B_red.fbx.meta new file mode 100644 index 0000000..19a3646 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_B_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: c065aab924928e8498f741cc90ea5738 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_base_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_base_red.fbx new file mode 100644 index 0000000..ab93668 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_base_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_base_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_base_red.fbx.meta new file mode 100644 index 0000000..5ce1910 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_base_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: bd707599c4fa401488906c4e4699669c +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_catapult_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_catapult_red.fbx new file mode 100644 index 0000000..b9d5b86 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_catapult_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_catapult_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_catapult_red.fbx.meta new file mode 100644 index 0000000..9033dcf --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_tower_catapult_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 4dca2b6c7e536ea48be7bc57574a6322 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_watermill_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_watermill_red.fbx new file mode 100644 index 0000000..5fca96f Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_watermill_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_watermill_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_watermill_red.fbx.meta new file mode 100644 index 0000000..f63001a --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_watermill_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 594059e2cd2aea44680a3f851b0e79cf +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_well_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_well_red.fbx new file mode 100644 index 0000000..7f05e68 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_well_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_well_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_well_red.fbx.meta new file mode 100644 index 0000000..d20aa95 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_well_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 9771c129bb679d540b3614dd30390cc4 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_windmill_red.fbx b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_windmill_red.fbx new file mode 100644 index 0000000..18ba036 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_windmill_red.fbx differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_windmill_red.fbx.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_windmill_red.fbx.meta new file mode 100644 index 0000000..3dbe742 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/building_windmill_red.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: fda06709816b28743b6e3fda1ad7ec4c +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/hexagons_medieval.png b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/hexagons_medieval.png new file mode 100644 index 0000000..14cdc25 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/hexagons_medieval.png differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Buildings/red/hexagons_medieval.png.meta b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/hexagons_medieval.png.meta new file mode 100644 index 0000000..0237d38 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Buildings/red/hexagons_medieval.png.meta @@ -0,0 +1,156 @@ +fileFormatVersion: 2 +guid: b32d1c3ba5ced9f438efa644418c73c3 +TextureImporter: + internalIDToNameTable: + - first: + 213: 4348085514693947249 + second: hexagons_medieval_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: hexagons_medieval_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1024 + height: 1024 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 17faa5c0db0875c30800000000000000 + internalID: 4348085514693947249 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + hexagons_medieval_0: 4348085514693947249 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Textures.meta b/Assets/External/Kaykit Medieval Hexagon/Textures.meta new file mode 100644 index 0000000..e9e002f --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2a545bb9b0ff5e444b6a0245afb68fa0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Medieval Hexagon/Textures/hexagons_medieval.png b/Assets/External/Kaykit Medieval Hexagon/Textures/hexagons_medieval.png new file mode 100644 index 0000000..14cdc25 Binary files /dev/null and b/Assets/External/Kaykit Medieval Hexagon/Textures/hexagons_medieval.png differ diff --git a/Assets/External/Kaykit Medieval Hexagon/Textures/hexagons_medieval.png.meta b/Assets/External/Kaykit Medieval Hexagon/Textures/hexagons_medieval.png.meta new file mode 100644 index 0000000..c8bdb68 --- /dev/null +++ b/Assets/External/Kaykit Medieval Hexagon/Textures/hexagons_medieval.png.meta @@ -0,0 +1,156 @@ +fileFormatVersion: 2 +guid: cd4befb846a0f8a4dae8b4bddafb1da7 +TextureImporter: + internalIDToNameTable: + - first: + 213: 4348085514693947249 + second: hexagons_medieval_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: hexagons_medieval_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1024 + height: 1024 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 17faa5c0db0875c30800000000000000 + internalID: 4348085514693947249 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + hexagons_medieval_0: 4348085514693947249 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/InputSystem_Actions.cs b/Assets/InputSystem_Actions.cs index 7d0af26..84a4a9c 100644 --- a/Assets/InputSystem_Actions.cs +++ b/Assets/InputSystem_Actions.cs @@ -114,7 +114,7 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable ""name"": ""Attack"", ""type"": ""Button"", ""id"": ""6c2ab1b8-8984-453a-af3d-a3c78ae1679a"", - ""expectedControlType"": ""Button"", + ""expectedControlType"": """", ""processors"": """", ""interactions"": """", ""initialStateCheck"": false @@ -172,6 +172,33 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable ""processors"": """", ""interactions"": """", ""initialStateCheck"": false + }, + { + ""name"": ""Toggle Build Mode"", + ""type"": ""Button"", + ""id"": ""7a4ed342-2ee3-4884-829b-618df4ba4938"", + ""expectedControlType"": """", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Rotate"", + ""type"": ""Button"", + ""id"": ""f8d0fd71-8954-43c6-929d-c2c7ac8fccdf"", + ""expectedControlType"": """", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Build"", + ""type"": ""Button"", + ""id"": ""6684a7da-e647-4577-8008-711e30cd37da"", + ""expectedControlType"": """", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false } ], ""bindings"": [ @@ -559,6 +586,39 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable ""action"": ""Crouch"", ""isComposite"": false, ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""4b447936-c61b-4e8c-9d56-8a7fc1c1e488"", + ""path"": ""/b"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Toggle Build Mode"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""a237ec8c-67b2-45d1-bff5-e2420af81736"", + ""path"": ""/r"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Rotate"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""99c6ee34-d67d-42aa-94d5-987ee6a08c1f"", + ""path"": ""/leftButton"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Build"", + ""isComposite"": false, + ""isPartOfComposite"": false } ] }, @@ -1153,6 +1213,9 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable m_Player_Previous = m_Player.FindAction("Previous", throwIfNotFound: true); m_Player_Next = m_Player.FindAction("Next", throwIfNotFound: true); m_Player_Sprint = m_Player.FindAction("Sprint", throwIfNotFound: true); + m_Player_ToggleBuildMode = m_Player.FindAction("Toggle Build Mode", throwIfNotFound: true); + m_Player_Rotate = m_Player.FindAction("Rotate", throwIfNotFound: true); + m_Player_Build = m_Player.FindAction("Build", throwIfNotFound: true); // UI m_UI = asset.FindActionMap("UI", throwIfNotFound: true); m_UI_Navigate = m_UI.FindAction("Navigate", throwIfNotFound: true); @@ -1255,6 +1318,9 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable private readonly InputAction m_Player_Previous; private readonly InputAction m_Player_Next; private readonly InputAction m_Player_Sprint; + private readonly InputAction m_Player_ToggleBuildMode; + private readonly InputAction m_Player_Rotate; + private readonly InputAction m_Player_Build; /// /// Provides access to input actions defined in input action map "Player". /// @@ -1303,6 +1369,18 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable /// public InputAction @Sprint => m_Wrapper.m_Player_Sprint; /// + /// Provides access to the underlying input action "Player/ToggleBuildMode". + /// + public InputAction @ToggleBuildMode => m_Wrapper.m_Player_ToggleBuildMode; + /// + /// Provides access to the underlying input action "Player/Rotate". + /// + public InputAction @Rotate => m_Wrapper.m_Player_Rotate; + /// + /// Provides access to the underlying input action "Player/Build". + /// + public InputAction @Build => m_Wrapper.m_Player_Build; + /// /// Provides access to the underlying input action map instance. /// public InputActionMap Get() { return m_Wrapper.m_Player; } @@ -1355,6 +1433,15 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable @Sprint.started += instance.OnSprint; @Sprint.performed += instance.OnSprint; @Sprint.canceled += instance.OnSprint; + @ToggleBuildMode.started += instance.OnToggleBuildMode; + @ToggleBuildMode.performed += instance.OnToggleBuildMode; + @ToggleBuildMode.canceled += instance.OnToggleBuildMode; + @Rotate.started += instance.OnRotate; + @Rotate.performed += instance.OnRotate; + @Rotate.canceled += instance.OnRotate; + @Build.started += instance.OnBuild; + @Build.performed += instance.OnBuild; + @Build.canceled += instance.OnBuild; } /// @@ -1393,6 +1480,15 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable @Sprint.started -= instance.OnSprint; @Sprint.performed -= instance.OnSprint; @Sprint.canceled -= instance.OnSprint; + @ToggleBuildMode.started -= instance.OnToggleBuildMode; + @ToggleBuildMode.performed -= instance.OnToggleBuildMode; + @ToggleBuildMode.canceled -= instance.OnToggleBuildMode; + @Rotate.started -= instance.OnRotate; + @Rotate.performed -= instance.OnRotate; + @Rotate.canceled -= instance.OnRotate; + @Build.started -= instance.OnBuild; + @Build.performed -= instance.OnBuild; + @Build.canceled -= instance.OnBuild; } /// @@ -1756,6 +1852,27 @@ public partial class @PlayerInputActions: IInputActionCollection2, IDisposable /// /// void OnSprint(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Toggle Build Mode" is either , or . + /// + /// + /// + /// + void OnToggleBuildMode(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Rotate" is either , or . + /// + /// + /// + /// + void OnRotate(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Build" is either , or . + /// + /// + /// + /// + void OnBuild(InputAction.CallbackContext context); } /// /// Interface to implement callback methods for all input action callbacks associated with input actions defined by "UI" which allows adding and removing callbacks. diff --git a/Assets/InputSystem_Actions.inputactions b/Assets/InputSystem_Actions.inputactions index 1a12cb9..e3d8dd9 100644 --- a/Assets/InputSystem_Actions.inputactions +++ b/Assets/InputSystem_Actions.inputactions @@ -1,4 +1,5 @@ { + "version": 1, "name": "InputSystem_Actions", "maps": [ { @@ -27,7 +28,7 @@ "name": "Attack", "type": "Button", "id": "6c2ab1b8-8984-453a-af3d-a3c78ae1679a", - "expectedControlType": "Button", + "expectedControlType": "", "processors": "", "interactions": "", "initialStateCheck": false @@ -85,6 +86,33 @@ "processors": "", "interactions": "", "initialStateCheck": false + }, + { + "name": "Toggle Build Mode", + "type": "Button", + "id": "7a4ed342-2ee3-4884-829b-618df4ba4938", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Rotate", + "type": "Button", + "id": "f8d0fd71-8954-43c6-929d-c2c7ac8fccdf", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Build", + "type": "Button", + "id": "6684a7da-e647-4577-8008-711e30cd37da", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false } ], "bindings": [ @@ -472,6 +500,39 @@ "action": "Crouch", "isComposite": false, "isPartOfComposite": false + }, + { + "name": "", + "id": "4b447936-c61b-4e8c-9d56-8a7fc1c1e488", + "path": "/b", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Toggle Build Mode", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "a237ec8c-67b2-45d1-bff5-e2420af81736", + "path": "/r", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Rotate", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "99c6ee34-d67d-42aa-94d5-987ee6a08c1f", + "path": "/leftButton", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Build", + "isComposite": false, + "isPartOfComposite": false } ] }, diff --git a/Assets/Prefabs/BaseTower.prefab b/Assets/Prefabs/BaseTower.prefab new file mode 100644 index 0000000..14f7972 --- /dev/null +++ b/Assets/Prefabs/BaseTower.prefab @@ -0,0 +1,184 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2363338622025898633 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5908846398168058715} + m_Layer: 0 + m_Name: GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5908846398168058715 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2363338622025898633} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.75, z: 0.02444} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 600918267133276861} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3733880183385667081 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 600918267133276861} + - component: {fileID: 6029659556982190569} + m_Layer: 0 + m_Name: BaseTower + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &600918267133276861 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3733880183385667081} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4953750989773685492} + - {fileID: 5908846398168058715} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6029659556982190569 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3733880183385667081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject + GlobalObjectIdHash: 2180513150 + InScenePlacedSourceGlobalObjectIdHash: 0 + DeferredDespawnTick: 0 + Ownership: 1 + AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 0 + SpawnWithObservers: 1 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 + SyncOwnerTransformWhenParented: 1 + AllowOwnerToParent: 0 +--- !u!1001 &4843053201060930847 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 600918267133276861} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} + propertyPath: m_LocalRotation.x + value: 0.00000008146034 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} + propertyPath: m_Name + value: building_tower_base_blue + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} + insertIndex: -1 + addedObject: {fileID: 6494052432076197753} + m_SourcePrefab: {fileID: 100100000, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} +--- !u!4 &4953750989773685492 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} + m_PrefabInstance: {fileID: 4843053201060930847} + m_PrefabAsset: {fileID: 0} +--- !u!1 &5761391365246359630 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} + m_PrefabInstance: {fileID: 4843053201060930847} + m_PrefabAsset: {fileID: 0} +--- !u!64 &6494052432076197753 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5761391365246359630} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 2231612616327559228, guid: 9925587cfc99e8148bfab9d8b22d9f87, type: 3} diff --git a/Assets/Prefabs/BaseTower.prefab.meta b/Assets/Prefabs/BaseTower.prefab.meta new file mode 100644 index 0000000..81607d6 --- /dev/null +++ b/Assets/Prefabs/BaseTower.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1979909431408184b9bc587877c5b4b4 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Player.prefab b/Assets/Prefabs/Player.prefab index 41f1ce6..fbe99ed 100644 --- a/Assets/Prefabs/Player.prefab +++ b/Assets/Prefabs/Player.prefab @@ -13,6 +13,7 @@ GameObject: - component: {fileID: 3792365921352178844} - component: {fileID: 1698609800605343773} - component: {fileID: 3007098678582223509} + - component: {fileID: 1883169379180791275} m_Layer: 0 m_Name: Player m_TagString: Untagged @@ -76,9 +77,6 @@ MonoBehaviour: ShowTopMostFoldoutHeaderGroup: 1 moveSpeed: 5 rotationSpeed: 10 - jumpHeight: 1.5 - gravity: -19.62 - inputActions: {fileID: -944628639613478452, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3} --- !u!95 &1698609800605343773 Animator: serializedVersion: 7 @@ -126,6 +124,29 @@ CharacterController: m_SkinWidth: 0.08 m_MinMoveDistance: 0.001 m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &1883169379180791275 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1314983689436087486} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2e305ee9051761b4e8d11fd29fe7b1a1, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Northbound.BuildingPlacement + ShowTopMostFoldoutHeaderGroup: 1 + buildModeKey: 98 + rotateLeftKey: 113 + rotateRightKey: 101 + groundLayer: + serializedVersion: 2 + m_Bits: 64 + maxPlacementDistance: 100 + validMaterial: {fileID: 0} + invalidMaterial: {fileID: 0} + selectedBuildingIndex: 0 --- !u!1001 &1445453803682481668 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/GameMain.unity b/Assets/Scenes/GameMain.unity index 1cf51cc..5e2a511 100644 --- a/Assets/Scenes/GameMain.unity +++ b/Assets/Scenes/GameMain.unity @@ -477,6 +477,83 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1199559221 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199559224} + - component: {fileID: 1199559222} + - component: {fileID: 1199559223} + m_Layer: 0 + m_Name: BuildingManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199559222 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199559221} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject + GlobalObjectIdHash: 3519205374 + InScenePlacedSourceGlobalObjectIdHash: 0 + DeferredDespawnTick: 0 + Ownership: 1 + AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 0 + SpawnWithObservers: 1 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 + SyncOwnerTransformWhenParented: 1 + AllowOwnerToParent: 0 +--- !u!114 &1199559223 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199559221} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 27ee775fc5a0dc7498f3049e65e32513, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Northbound.BuildingManager + ShowTopMostFoldoutHeaderGroup: 1 + gridSize: 1 + groundLayer: + serializedVersion: 2 + m_Bits: 64 + availableBuildings: + - {fileID: 11400000, guid: 23c12a82ea534b34299700b86fffd524, type: 2} +--- !u!4 &1199559224 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199559221} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.48349, y: 1, z: 0.31137} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1433142230 GameObject: m_ObjectHideFlags: 0 @@ -742,6 +819,10 @@ PrefabInstance: propertyPath: m_Name value: Primitive_Floor objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 19ca9afdd7bb3a64c9036c18e8cee5f2, type: 3} + propertyPath: m_Layer + value: 6 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -759,3 +840,4 @@ SceneRoots: - {fileID: 1433142232} - {fileID: 61373299} - {fileID: 1142746334} + - {fileID: 1199559224} diff --git a/Assets/Scripts/Building.cs b/Assets/Scripts/Building.cs new file mode 100644 index 0000000..4849e64 --- /dev/null +++ b/Assets/Scripts/Building.cs @@ -0,0 +1,76 @@ +using Unity.Netcode; +using UnityEngine; + +namespace Northbound +{ + public class Building : NetworkBehaviour + { + [Header("References")] + public BuildingData buildingData; + + [Header("Runtime Info")] + public Vector3Int gridPosition; + public int rotation; // 0-3 (0=0°, 1=90°, 2=180°, 3=270°) + + [Header("Debug")] + public bool showGridBounds = true; + public Color gridBoundsColor = Color.cyan; + + public void Initialize(BuildingData data, Vector3Int gridPos, int rot) + { + buildingData = data; + gridPosition = gridPos; + rotation = rot; + } + + /// + /// Gets the grid-based bounds (from BuildingData width/length/height) + /// This is used for placement validation, NOT the actual collider bounds + /// Bounds are slightly shrunk to allow adjacent buildings to touch + /// + public Bounds GetGridBounds() + { + if (buildingData == null) return new Bounds(transform.position, Vector3.one); + + Vector3 gridSize = buildingData.GetSize(rotation); + + // Shrink slightly to allow buildings to be adjacent without Intersects() returning true + Vector3 shrunkSize = gridSize - Vector3.one * 0.01f; + return new Bounds(transform.position + Vector3.up * gridSize.y * 0.5f, shrunkSize); + } + + /// + /// Legacy method, use GetGridBounds() instead + /// + public Bounds GetBounds() + { + return GetGridBounds(); + } + + private void OnDrawGizmos() + { + if (!showGridBounds || buildingData == null) return; + + Bounds bounds = GetGridBounds(); + Gizmos.color = gridBoundsColor; + Gizmos.DrawWireCube(bounds.center, bounds.size); + } + + private void OnDrawGizmosSelected() + { + if (buildingData == null) return; + + Bounds bounds = GetGridBounds(); + Gizmos.color = Color.yellow; + Gizmos.DrawWireCube(bounds.center, bounds.size); + + // Draw grid position + if (BuildingManager.Instance != null) + { + Vector3 worldPos = BuildingManager.Instance.GridToWorld(gridPosition); + Gizmos.color = Color.magenta; + Gizmos.DrawSphere(worldPos, 0.2f); + } + } + } +} diff --git a/Assets/Scripts/Building.cs.meta b/Assets/Scripts/Building.cs.meta new file mode 100644 index 0000000..8aa27c0 --- /dev/null +++ b/Assets/Scripts/Building.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0ceedb9b012d848478813136b65738ae \ No newline at end of file diff --git a/Assets/Scripts/BuildingData.cs b/Assets/Scripts/BuildingData.cs new file mode 100644 index 0000000..014307c --- /dev/null +++ b/Assets/Scripts/BuildingData.cs @@ -0,0 +1,35 @@ +using UnityEngine; + +namespace Northbound +{ + [CreateAssetMenu(fileName = "NewBuilding", menuName = "Northbound/Building Data")] + public class BuildingData : ScriptableObject + { + [Header("Building Info")] + public string buildingName; + public GameObject prefab; + + [Header("Grid Size")] + [Tooltip("Width in grid units")] + public int width = 1; + [Tooltip("Length in grid units")] + public int length = 1; + [Tooltip("Height for placement validation")] + public float height = 2f; + + [Header("Placement Settings")] + [Tooltip("Offset from grid position")] + public Vector3 placementOffset = Vector3.zero; + [Tooltip("Can rotate this building?")] + public bool allowRotation = true; + + public Vector3 GetSize(int rotation) + { + // Rotation 0,180 = normal, 90,270 = swap width/length + bool isRotated = (rotation == 1 || rotation == 3); + float w = isRotated ? length : width; + float l = isRotated ? width : length; + return new Vector3(w, height, l); + } + } +} diff --git a/Assets/Scripts/BuildingData.cs.meta b/Assets/Scripts/BuildingData.cs.meta new file mode 100644 index 0000000..629788c --- /dev/null +++ b/Assets/Scripts/BuildingData.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 937e64980d44d6b46acb35b8046adf34 \ No newline at end of file diff --git a/Assets/Scripts/BuildingManager.cs b/Assets/Scripts/BuildingManager.cs new file mode 100644 index 0000000..a63710e --- /dev/null +++ b/Assets/Scripts/BuildingManager.cs @@ -0,0 +1,153 @@ +using System.Collections.Generic; +using Unity.Netcode; +using UnityEngine; + +namespace Northbound +{ + public class BuildingManager : NetworkBehaviour + { + public static BuildingManager Instance { get; private set; } + + [Header("Settings")] + public float gridSize = 1f; + public LayerMask groundLayer; + + [Header("Building Database")] + public List availableBuildings = new List(); + + private List placedBuildings = new List(); + + private void Awake() + { + if (Instance != null && Instance != this) + { + Destroy(gameObject); + return; + } + Instance = this; + } + + public Vector3 SnapToGrid(Vector3 worldPosition) + { + return new Vector3( + Mathf.Round(worldPosition.x / gridSize) * gridSize, + worldPosition.y, + Mathf.Round(worldPosition.z / gridSize) * gridSize + ); + } + + public Vector3Int WorldToGrid(Vector3 worldPosition) + { + return new Vector3Int( + Mathf.RoundToInt(worldPosition.x / gridSize), + Mathf.RoundToInt(worldPosition.y / gridSize), + Mathf.RoundToInt(worldPosition.z / gridSize) + ); + } + + public Vector3 GridToWorld(Vector3Int gridPosition) + { + return new Vector3( + gridPosition.x * gridSize, + gridPosition.y * gridSize, + gridPosition.z * gridSize + ); + } + + public bool IsValidPlacement(BuildingData data, Vector3 position, int rotation, out Vector3 groundPosition) + { + groundPosition = position; + + // Ground check + if (!CheckGround(position, out groundPosition)) + return false; + + // IMPORTANT: Snap to grid BEFORE checking overlap! + // Otherwise we check the raw cursor position which might overlap + Vector3 snappedPosition = SnapToGrid(groundPosition); + groundPosition = snappedPosition; // Update groundPosition to snapped value + + // Overlap check using GRID SIZE from BuildingData (not actual colliders) + Vector3 gridSize = data.GetSize(rotation); + + // Shrink bounds slightly to allow buildings to touch without overlapping + // This prevents Bounds.Intersects() from returning true for adjacent buildings + Vector3 shrunkSize = gridSize - Vector3.one * 0.01f; + Bounds checkBounds = new Bounds(snappedPosition + Vector3.up * gridSize.y * 0.5f, shrunkSize); + + foreach (var building in placedBuildings) + { + if (building == null) continue; + + // Compare grid bounds, not collider bounds + Bounds buildingGridBounds = building.GetGridBounds(); + + if (checkBounds.Intersects(buildingGridBounds)) + return false; + } + + return true; + } + + /// + /// Get the grid bounds for a building at a given position + /// Useful for preview visualization + /// + public Bounds GetPlacementBounds(BuildingData data, Vector3 position, int rotation) + { + Vector3 gridSize = data.GetSize(rotation); + return new Bounds(position + Vector3.up * gridSize.y * 0.5f, gridSize); + } + + private bool CheckGround(Vector3 position, out Vector3 groundPosition) + { + groundPosition = position; + + // Raycast down to find ground + if (Physics.Raycast(position + Vector3.up * 10f, Vector3.down, out RaycastHit hit, 20f, groundLayer)) + { + groundPosition = hit.point; + return true; + } + + return false; + } + + [Rpc(SendTo.Server, InvokePermission = RpcInvokePermission.Everyone)] + public void PlaceBuildingServerRpc(int buildingIndex, Vector3 position, int rotation) + { + if (buildingIndex < 0 || buildingIndex >= availableBuildings.Count) + return; + + BuildingData data = availableBuildings[buildingIndex]; + + // IsValidPlacement now returns snapped position in groundPosition + if (!IsValidPlacement(data, position, rotation, out Vector3 snappedPosition)) + return; + + Vector3Int gridPosition = WorldToGrid(snappedPosition); + + // Spawn building at snapped position + GameObject buildingObj = Instantiate(data.prefab, snappedPosition + data.placementOffset, Quaternion.Euler(0, rotation * 90f, 0)); + NetworkObject netObj = buildingObj.GetComponent(); + + if (netObj != null) + { + netObj.Spawn(); + + Building building = buildingObj.GetComponent(); + if (building == null) + building = buildingObj.AddComponent(); + + building.Initialize(data, gridPosition, rotation); + placedBuildings.Add(building); + } + } + + public void RemoveBuilding(Building building) + { + if (placedBuildings.Contains(building)) + placedBuildings.Remove(building); + } + } +} diff --git a/Assets/Scripts/BuildingManager.cs.meta b/Assets/Scripts/BuildingManager.cs.meta new file mode 100644 index 0000000..244b981 --- /dev/null +++ b/Assets/Scripts/BuildingManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 27ee775fc5a0dc7498f3049e65e32513 \ No newline at end of file diff --git a/Assets/Scripts/BuildingPlacement.cs b/Assets/Scripts/BuildingPlacement.cs new file mode 100644 index 0000000..10c13a5 --- /dev/null +++ b/Assets/Scripts/BuildingPlacement.cs @@ -0,0 +1,452 @@ +using Unity.Netcode; +using UnityEngine; +using UnityEngine.InputSystem; + +namespace Northbound +{ + public class BuildingPlacement : NetworkBehaviour + { + [Header("Settings")] + public LayerMask groundLayer; + public float maxPlacementDistance = 100f; + + [Header("Preview Materials")] + public Material validMaterial; + public Material invalidMaterial; + + [Header("Current Selection")] + public int selectedBuildingIndex = 0; + + [Header("Debug Visualization")] + public bool showGridBounds = true; + + private bool isBuildModeActive = false; + private GameObject previewObject; + private int currentRotation = 0; // 0-3 + private Material[] originalMaterials; + private Renderer[] previewRenderers; + private PlayerInputActions _inputActions; + + public override void OnNetworkSpawn() + { + if (!IsOwner) return; + + _inputActions = new PlayerInputActions(); + _inputActions.Player.ToggleBuildMode.performed += OnToggleBuildMode; + _inputActions.Player.Rotate.performed += OnRotate; + _inputActions.Player.Build.performed += OnBuild; + _inputActions.Enable(); + + // Create default materials if not assigned + if (validMaterial == null) + { + validMaterial = CreateGhostMaterial(new Color(0, 1, 0, 0.5f)); + } + + if (invalidMaterial == null) + { + invalidMaterial = CreateGhostMaterial(new Color(1, 0, 0, 0.5f)); + } + } + + private Material CreateGhostMaterial(Color color) + { + // Try to find appropriate shader for current render pipeline + Shader shader = Shader.Find("Universal Render Pipeline/Lit"); + if (shader == null) + shader = Shader.Find("Standard"); + if (shader == null) + shader = Shader.Find("Diffuse"); + + Material mat = new Material(shader); + + // Set base color + if (mat.HasProperty("_BaseColor")) + mat.SetColor("_BaseColor", color); // URP + else if (mat.HasProperty("_Color")) + mat.SetColor("_Color", color); // Standard + + // Enable transparency + if (mat.HasProperty("_Surface")) + { + // URP Transparency + mat.SetFloat("_Surface", 1); // Transparent + mat.SetFloat("_Blend", 0); // Alpha + mat.SetFloat("_AlphaClip", 0); + mat.SetFloat("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); + mat.SetFloat("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); + mat.SetFloat("_ZWrite", 0); + mat.renderQueue = 3000; + mat.EnableKeyword("_SURFACE_TYPE_TRANSPARENT"); + mat.EnableKeyword("_ALPHAPREMULTIPLY_ON"); + } + else + { + // Standard RP Transparency + mat.SetFloat("_Mode", 3); // Transparent mode + mat.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); + mat.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); + mat.SetInt("_ZWrite", 0); + mat.DisableKeyword("_ALPHATEST_ON"); + mat.EnableKeyword("_ALPHABLEND_ON"); + mat.DisableKeyword("_ALPHAPREMULTIPLY_ON"); + mat.renderQueue = 3000; + } + + return mat; + } + + public override void OnNetworkDespawn() + { + if (IsOwner && _inputActions != null) + { + _inputActions.Player.ToggleBuildMode.performed -= OnToggleBuildMode; + _inputActions.Player.Rotate.performed -= OnRotate; + _inputActions.Player.Build.performed -= OnBuild; + _inputActions.Disable(); + _inputActions.Dispose(); + } + } + + private void Update() + { + if (!IsOwner) return; + + if (isBuildModeActive) + { + UpdatePreviewPosition(); + } + } + + private void OnDrawGizmos() + { + if (!IsOwner || !isBuildModeActive || !showGridBounds) return; + if (BuildingManager.Instance == null || previewObject == null || !previewObject.activeSelf) return; + + BuildingData data = BuildingManager.Instance.availableBuildings[selectedBuildingIndex]; + if (data == null) return; + + // Draw grid bounds being used for collision detection + Bounds bounds = BuildingManager.Instance.GetPlacementBounds(data, previewObject.transform.position, currentRotation); + + // Check if valid + bool isValid = BuildingManager.Instance.IsValidPlacement(data, previewObject.transform.position, currentRotation, out _); + + Gizmos.color = isValid ? new Color(0, 1, 0, 0.5f) : new Color(1, 0, 0, 0.5f); + Gizmos.DrawWireCube(bounds.center, bounds.size); + + // Draw grid cells + Gizmos.color = Color.yellow; + float gridSize = BuildingManager.Instance.gridSize; + Vector3 snappedPos = BuildingManager.Instance.SnapToGrid(previewObject.transform.position); + + // Draw grid origin point + Gizmos.DrawSphere(snappedPos, 0.1f); + + // Draw grid outline for each cell + int width = Mathf.RoundToInt(bounds.size.x / gridSize); + int length = Mathf.RoundToInt(bounds.size.z / gridSize); + + for (int x = 0; x < width; x++) + { + for (int z = 0; z < length; z++) + { + Vector3 cellPos = snappedPos + new Vector3( + (x - width / 2f + 0.5f) * gridSize, + 0.01f, + (z - length / 2f + 0.5f) * gridSize + ); + Gizmos.DrawWireCube(cellPos, new Vector3(gridSize, 0.01f, gridSize)); + } + } + } + + private void OnToggleBuildMode(InputAction.CallbackContext context) + { + ToggleBuildMode(); + } + + private void OnRotate(InputAction.CallbackContext context) + { + if (!isBuildModeActive) return; + + float rotateValue = context.ReadValue(); + if (rotateValue > 0) + { + currentRotation = (currentRotation + 1) % 4; + } + else if (rotateValue < 0) + { + currentRotation = (currentRotation - 1 + 4) % 4; + } + } + + private void OnBuild(InputAction.CallbackContext context) + { + if (!isBuildModeActive) return; + TryPlaceBuilding(); + } + + private void ToggleBuildMode() + { + isBuildModeActive = !isBuildModeActive; + + if (isBuildModeActive) + { + EnterBuildMode(); + } + else + { + ExitBuildMode(); + } + } + + private void EnterBuildMode() + { + currentRotation = 0; + CreatePreview(); + } + + private void ExitBuildMode() + { + DestroyPreview(); + } + + private void CreatePreview() + { + if (BuildingManager.Instance == null) + return; + + if (BuildingManager.Instance.availableBuildings.Count == 0) + return; + + selectedBuildingIndex = Mathf.Clamp(selectedBuildingIndex, 0, + BuildingManager.Instance.availableBuildings.Count - 1); + + BuildingData data = BuildingManager.Instance.availableBuildings[selectedBuildingIndex]; + if (data == null || data.prefab == null) + return; + + previewObject = Instantiate(data.prefab); + previewObject.name = "BuildingPreview"; + + // Disable colliders on preview + foreach (var collider in previewObject.GetComponentsInChildren()) + { + collider.enabled = false; + } + + // Remove NetworkObject from preview if exists + NetworkObject netObj = previewObject.GetComponent(); + if (netObj != null) + { + Destroy(netObj); + } + + // Store original materials and setup preview renderers + previewRenderers = previewObject.GetComponentsInChildren(); + + if (previewRenderers.Length == 0) + { + // Add a debug cube so you can at least see something + GameObject debugCube = GameObject.CreatePrimitive(PrimitiveType.Cube); + debugCube.transform.SetParent(previewObject.transform); + debugCube.transform.localPosition = Vector3.zero; + Destroy(debugCube.GetComponent()); + previewRenderers = previewObject.GetComponentsInChildren(); + } + + originalMaterials = new Material[previewRenderers.Length]; + + for (int i = 0; i < previewRenderers.Length; i++) + { + originalMaterials[i] = previewRenderers[i].material; + // Replace all materials with ghost material + Material[] mats = new Material[previewRenderers[i].materials.Length]; + for (int j = 0; j < mats.Length; j++) + { + mats[j] = validMaterial; + } + previewRenderers[i].materials = mats; + + // Disable shadow casting + previewRenderers[i].shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; + previewRenderers[i].receiveShadows = false; + } + } + + private void DestroyPreview() + { + if (previewObject != null) + { + Destroy(previewObject); + previewObject = null; + } + } + + private void UpdatePreviewPosition() + { + if (BuildingManager.Instance == null) return; + + if (previewObject == null) + { + CreatePreview(); + if (previewObject == null) return; + } + + if (Mouse.current == null) + return; + + Vector2 mousePos = Mouse.current.position.ReadValue(); + Ray ray = Camera.main.ScreenPointToRay(mousePos); + + Vector3 targetPosition = Vector3.zero; + bool foundPosition = false; + + // Robust approach: Find where ray intersects ground plane, then raycast down from there + // This works even when pointing at empty space between buildings + + // Step 1: Calculate where ray intersects a horizontal plane at Y=0 + // Using plane intersection math + Plane groundPlane = new Plane(Vector3.up, Vector3.zero); + float enter; + + if (groundPlane.Raycast(ray, out enter)) + { + // Get the XZ position where ray hits the ground plane + Vector3 planeHitPoint = ray.GetPoint(enter); + + // Step 2: Cast down from above this XZ position to find actual ground + Vector3 highPoint = new Vector3(planeHitPoint.x, 100f, planeHitPoint.z); + + if (Physics.Raycast(highPoint, Vector3.down, out RaycastHit downHit, 200f, groundLayer)) + { + // Always use the hit point + targetPosition = downHit.point; + foundPosition = true; + } + else + { + // No ground found via raycast, use the plane intersection point directly + targetPosition = planeHitPoint; + foundPosition = true; + } + } + else + { + // Fallback: Try direct raycast to anything + if (Physics.Raycast(ray, out RaycastHit anyHit, maxPlacementDistance)) + { + targetPosition = anyHit.point; + foundPosition = true; + } + } + + if (foundPosition) + { + BuildingData data = BuildingManager.Instance.availableBuildings[selectedBuildingIndex]; + + // IsValidPlacement now returns the snapped position in groundPosition + bool isValid = BuildingManager.Instance.IsValidPlacement(data, targetPosition, currentRotation, out Vector3 snappedPosition); + + previewObject.transform.position = snappedPosition + data.placementOffset; + previewObject.transform.rotation = Quaternion.Euler(0, currentRotation * 90f, 0); + + if (!previewObject.activeSelf) + { + previewObject.SetActive(true); + } + + // Update material + Material previewMat = isValid ? validMaterial : invalidMaterial; + foreach (var renderer in previewRenderers) + { + Material[] mats = new Material[renderer.materials.Length]; + for (int i = 0; i < mats.Length; i++) + { + mats[i] = previewMat; + } + renderer.materials = mats; + } + } + else + { + if (previewObject.activeSelf) + { + previewObject.SetActive(false); + } + } + } + + private void TryPlaceBuilding() + { + if (previewObject == null || !previewObject.activeSelf) return; + + Vector2 mousePos = Mouse.current.position.ReadValue(); + Ray ray = Camera.main.ScreenPointToRay(mousePos); + + Vector3 targetPosition = Vector3.zero; + bool foundPosition = false; + + // Use plane intersection to get XZ position, then raycast down to find ground + Plane groundPlane = new Plane(Vector3.up, Vector3.zero); + float enter; + + if (groundPlane.Raycast(ray, out enter)) + { + Vector3 planeHitPoint = ray.GetPoint(enter); + Vector3 highPoint = new Vector3(planeHitPoint.x, 100f, planeHitPoint.z); + + if (Physics.Raycast(highPoint, Vector3.down, out RaycastHit downHit, 200f, groundLayer)) + { + if (downHit.collider.GetComponentInParent() == null) + { + targetPosition = downHit.point; + foundPosition = true; + } + else + { + targetPosition = downHit.point; + foundPosition = true; + } + } + else + { + targetPosition = planeHitPoint; + foundPosition = true; + } + } + else + { + // Fallback: direct raycast + if (Physics.Raycast(ray, out RaycastHit anyHit, maxPlacementDistance)) + { + targetPosition = anyHit.point; + foundPosition = true; + } + } + + if (foundPosition) + { + BuildingData data = BuildingManager.Instance.availableBuildings[selectedBuildingIndex]; + + // IsValidPlacement now returns the snapped position + if (BuildingManager.Instance.IsValidPlacement(data, targetPosition, currentRotation, out Vector3 snappedPosition)) + { + BuildingManager.Instance.PlaceBuildingServerRpc(selectedBuildingIndex, snappedPosition, currentRotation); + } + } + } + + + private void OnDestroy() + { + DestroyPreview(); + + if (_inputActions != null) + { + _inputActions.Dispose(); + } + } + } +} diff --git a/Assets/Scripts/BuildingPlacement.cs.meta b/Assets/Scripts/BuildingPlacement.cs.meta new file mode 100644 index 0000000..6950f05 --- /dev/null +++ b/Assets/Scripts/BuildingPlacement.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2e305ee9051761b4e8d11fd29fe7b1a1 \ No newline at end of file diff --git a/Assets/Scripts/GhostMaterialTest.cs b/Assets/Scripts/GhostMaterialTest.cs new file mode 100644 index 0000000..8b0b651 --- /dev/null +++ b/Assets/Scripts/GhostMaterialTest.cs @@ -0,0 +1,92 @@ +using UnityEngine; + +namespace Northbound +{ + /// + /// Simple test script to verify ghost materials work. + /// Attach to any GameObject with a Renderer to see the ghost effect. + /// + public class GhostMaterialTest : MonoBehaviour + { + [Header("Test Settings")] + public Color ghostColor = new Color(0, 1, 0, 0.5f); + public bool applyOnStart = true; + + private void Start() + { + if (applyOnStart) + { + ApplyGhostMaterial(); + } + } + + [ContextMenu("Apply Ghost Material")] + public void ApplyGhostMaterial() + { + Material ghostMat = CreateGhostMaterial(ghostColor); + + Renderer[] renderers = GetComponentsInChildren(); + foreach (var renderer in renderers) + { + Material[] mats = new Material[renderer.materials.Length]; + for (int i = 0; i < mats.Length; i++) + { + mats[i] = ghostMat; + } + renderer.materials = mats; + renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; + renderer.receiveShadows = false; + } + + Debug.Log($"Applied ghost material to {renderers.Length} renderers"); + } + + private Material CreateGhostMaterial(Color color) + { + // Try to find appropriate shader for current render pipeline + Shader shader = Shader.Find("Universal Render Pipeline/Lit"); + if (shader == null) + shader = Shader.Find("Standard"); + if (shader == null) + shader = Shader.Find("Diffuse"); + + Material mat = new Material(shader); + + // Set base color + if (mat.HasProperty("_BaseColor")) + mat.SetColor("_BaseColor", color); // URP + else if (mat.HasProperty("_Color")) + mat.SetColor("_Color", color); // Standard + + // Enable transparency + if (mat.HasProperty("_Surface")) + { + // URP Transparency + mat.SetFloat("_Surface", 1); // Transparent + mat.SetFloat("_Blend", 0); // Alpha + mat.SetFloat("_AlphaClip", 0); + mat.SetFloat("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); + mat.SetFloat("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); + mat.SetFloat("_ZWrite", 0); + mat.renderQueue = 3000; + mat.EnableKeyword("_SURFACE_TYPE_TRANSPARENT"); + mat.EnableKeyword("_ALPHAPREMULTIPLY_ON"); + } + else + { + // Standard RP Transparency + mat.SetFloat("_Mode", 3); // Transparent mode + mat.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); + mat.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); + mat.SetInt("_ZWrite", 0); + mat.DisableKeyword("_ALPHATEST_ON"); + mat.EnableKeyword("_ALPHABLEND_ON"); + mat.DisableKeyword("_ALPHAPREMULTIPLY_ON"); + mat.renderQueue = 3000; + } + + Debug.Log($"Created ghost material with shader: {shader.name}"); + return mat; + } + } +} diff --git a/Assets/Scripts/GhostMaterialTest.cs.meta b/Assets/Scripts/GhostMaterialTest.cs.meta new file mode 100644 index 0000000..73b3af2 --- /dev/null +++ b/Assets/Scripts/GhostMaterialTest.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 99bb7a3f13f744642aca504e3c30a571 \ No newline at end of file diff --git a/BUILDING_SYSTEM_SETUP.md b/BUILDING_SYSTEM_SETUP.md new file mode 100644 index 0000000..067aa2f --- /dev/null +++ b/BUILDING_SYSTEM_SETUP.md @@ -0,0 +1,323 @@ +# Building System Setup Guide + +## Overview +The building system allows players to place buildings with: +- **Grid-based snapping** for aligned placement +- **Overlap detection** to prevent buildings from colliding +- **Ground validation** to ensure buildings are placed on terrain +- **Ghost preview** with green (valid) / red (invalid) visual feedback +- **Network synchronization** across all players + +## Components + +### 1. BuildingData (ScriptableObject) +Defines properties for each building type: +- Building name and prefab reference +- Grid size (width, length, height) +- Placement offset and rotation settings + +### 2. Building (MonoBehaviour) +Component attached to placed building instances. Tracks: +- Grid position +- Rotation (0-3, representing 0°, 90°, 180°, 270°) +- Reference to BuildingData + +### 3. BuildingManager (NetworkBehaviour - Singleton) +Central manager that: +- Maintains list of all placed buildings +- Validates placement (ground check + overlap detection) +- Handles grid snapping +- Spawns buildings on network via ServerRpc + +### 4. BuildingPlacement (NetworkBehaviour) +Player-side building interface: +- Uses new Input System (`PlayerInputActions`, `Keyboard.current`, `Mouse.current`) +- Handles input (B key to toggle, Q/E to rotate, click to place) +- Shows ghost preview at mouse position +- Updates preview material (green/red) based on validity +- Proper input lifecycle management (enable/disable/dispose) + +## Setup Instructions + +### Step 0: Setup Input Actions (Required First!) +**Before using the building system, you MUST add the required input actions.** + +See **INPUT_ACTIONS_SETUP.md** for detailed instructions. + +Quick summary - Add these to your Player action map in `InputSystem_Actions.inputactions`: +1. **ToggleBuildMode** (Button) → Keyboard B +2. **Rotate** (Value/Axis) → Keyboard R +3. **Build** (Button) → Mouse Left Button + +After adding, save the asset to regenerate the code. + +### Step 1: Create BuildingData Assets +1. Right-click in Project window → Create → Northbound → Building Data +2. Configure your building: + - Assign the building prefab + - Set grid size (width, length, height) + - Adjust placement offset if needed + - Enable/disable rotation + +### Step 2: Setup Building Prefabs +For each building prefab: +1. Add `NetworkObject` component +2. Add `Building` component +3. Ensure it has a `Renderer` for preview +4. Add colliders for gameplay (player collision, physics) +5. **Important:** Colliders are NOT used for placement validation - only BuildingData grid size matters +6. Set the prefab's layer to anything EXCEPT the Ground layer (buildings will be raycast-ignored during placement) + +### Step 3: Setup BuildingManager +1. Create empty GameObject in your scene named "BuildingManager" +2. Add `BuildingManager` component +3. Add `NetworkObject` component +4. Configure settings: + - **Grid Size**: Size of one grid unit (default: 1) + - **Ground Layer**: Layer mask for valid ground (e.g., "Ground") + - **Available Buildings**: Add your BuildingData assets + +### Step 4: Add BuildingPlacement to Player +1. Open your Player prefab +2. Add `BuildingPlacement` component +3. Configure: + - **Ground Layer**: Same as BuildingManager + - **Max Placement Distance**: How far player can place (default: 100) + - **Valid Material**: Green transparent material (auto-created if null) + - **Invalid Material**: Red transparent material (auto-created if null) + +### Step 5: Setup Layers +1. Create a layer named "Ground" (or your preferred name) +2. Assign this layer to terrain/ground objects +3. **Important:** Make sure building prefabs are on a **different** layer (not Ground) + - This allows raycasting through buildings to hit the ground + - You can place buildings even when cursor is over existing buildings + +## Controls + +Default bindings (customizable in Input Actions): +- **B**: Toggle build mode on/off +- **R**: Rotate building (90° increments) +- **Left Mouse Button**: Place building (if valid position) +- **Mouse Movement**: Move preview to placement location + +## Input System + +The building system uses Unity's **new Input System** with action callbacks: +- Actions: `ToggleBuildMode`, `Rotate`, `Build` +- Subscribe to `.performed` events in `OnNetworkSpawn` +- Unsubscribe in `OnNetworkDespawn` +- No hardcoded keys - all controls defined in Input Actions asset +- Easy to rebind without code changes + +**Pattern:** +```csharp +_inputActions.Player.ToggleBuildMode.performed += OnToggleBuildMode; +_inputActions.Player.Rotate.performed += OnRotate; +_inputActions.Player.Build.performed += OnBuild; +``` + +This uses callback-based input, similar to the pattern shown in `InputSystem_Actions.cs` examples. + +## Technical Implementation + +### Modern Input System (Callback Pattern) +```csharp +// Initialization in OnNetworkSpawn +_inputActions = new PlayerInputActions(); +_inputActions.Player.ToggleBuildMode.performed += OnToggleBuildMode; +_inputActions.Player.Rotate.performed += OnRotate; +_inputActions.Player.Build.performed += OnBuild; +_inputActions.Enable(); + +// Callback handlers +private void OnToggleBuildMode(InputAction.CallbackContext context) +{ + ToggleBuildMode(); +} + +private void OnRotate(InputAction.CallbackContext context) +{ + float rotateValue = context.ReadValue(); + // Positive = rotate right, Negative = rotate left +} + +private void OnBuild(InputAction.CallbackContext context) +{ + TryPlaceBuilding(); +} + +// Cleanup in OnNetworkDespawn +_inputActions.Player.ToggleBuildMode.performed -= OnToggleBuildMode; +_inputActions.Player.Rotate.performed -= OnRotate; +_inputActions.Player.Build.performed -= OnBuild; +_inputActions.Disable(); +_inputActions.Dispose(); +``` + +### Modern Netcode RPC Pattern +```csharp +[ServerRpc(RequireOwnership = false)] +public void PlaceBuildingServerRpc(int buildingIndex, Vector3 position, int rotation, ServerRpcParams serverRpcParams = default) +{ + // Validation + if (!IsValidPlacement(...)) return; + + // Server-side spawn + GameObject obj = Instantiate(...); + NetworkObject netObj = obj.GetComponent(); + netObj.Spawn(); // Automatically syncs to all clients +} +``` + +## How It Works + +### Build Mode Flow +1. Player presses **B** → enters build mode +2. Preview appears at mouse cursor position +3. System raycasts to find ground (two-stage): + - **Method 1:** Direct raycast to ground, ignoring building colliders + - **Method 2:** If ground not visible (buildings blocking), raycast to anything, then cast downward from that point to find ground below + - This allows placement even in completely surrounded cells +4. System checks placement validity: + - Is there ground below? + - Does grid bounds overlap with existing buildings? +5. Preview shows **green** if valid, **red** if invalid +6. Player rotates with **R** if desired +7. Player clicks to confirm placement +8. **ServerRpc** sent to server to spawn building +9. Building synchronized to all clients + +### Validation System (Grid-Based) +``` +IsValidPlacement() checks: +├── Ground Check: Raycast down to find ground +└── Overlap Check: Compare GRID BOUNDS (not colliders!) + ├── Uses BuildingData width/length/height + ├── NOT the actual collider size + └── Rotates grid size automatically (90°/180°/270°) +``` + +**Important:** Collision detection uses the **grid size** from `BuildingData`, not the physical colliders on the building prefab. This means: +- A building with `width=2, length=3, height=2` occupies a 2x3 grid area +- Even if the visual model is smaller/larger, the grid size determines overlap +- This allows consistent, predictable building placement + +### Grid Snapping +- World position → rounded to nearest grid size +- Example: gridSize=2, position (3.7, 0, 5.2) → snaps to (4, 0, 6) + +### Rotation System +- Rotation values: 0, 1, 2, 3 → 0°, 90°, 180°, 270° +- Building size auto-swaps width/length when rotated 90° or 270° + +## Example Building Setup + +### Small House (2x2) +``` +Name: Small House +Prefab: SmallHousePrefab +Width: 2 +Length: 2 +Height: 3 +Allow Rotation: true +``` + +### Wall Segment (1x3) +``` +Name: Wall +Prefab: WallPrefab +Width: 1 +Length: 3 +Height: 2 +Allow Rotation: true +``` + +## Debug Visualization + +The system includes visual debugging to help you understand grid placement: + +**In Scene View (when build mode is active):** +- **Green/Red Wire Cube**: Shows the grid bounds being checked + - Green = valid placement + - Red = invalid (overlapping or no ground) +- **Yellow Grid Cells**: Shows individual grid cells occupied +- **Yellow Sphere**: Grid origin point (snapped position) + +**On Placed Buildings:** +- **Cyan Wire Cube**: Shows the grid bounds of placed buildings +- **Yellow Wire Cube** (when selected): Highlights the selected building's grid +- **Magenta Sphere**: Grid position origin + +Enable/disable with: +- BuildingPlacement → Show Grid Bounds +- Building → Show Grid Bounds + +## Troubleshooting + +**Preview doesn't appear:** +- Check if BuildingManager.Instance exists +- Verify availableBuildings list has BuildingData +- Ensure Ground layer is set correctly + +**Can't place buildings:** +- Check ground layer mask matches terrain +- Verify building prefabs have NetworkObject +- Ensure BuildingManager has NetworkObject and is spawned + +**Buildings overlap despite visual gap:** +- Remember: Collision uses **grid size** from BuildingData, not visual model size +- Check the grid bounds in Scene view (cyan wire cubes) +- Adjust width/length/height in BuildingData to match desired grid footprint + +**Can't place buildings when cursor is near existing buildings:** +- FIXED: System now uses RaycastAll and ignores building colliders +- Raycasts pass through buildings to hit the ground +- You can place buildings even when cursor is hovering over old ones +- Just make sure buildings are NOT on the Ground layer + +**Can't place in center cell when surrounded by buildings:** +- FIXED: Two-stage raycast system +- If direct ground raycast fails, system raycasts to any object then down to find ground +- Works even when all adjacent cells are built and blocking the ground view +- You can fill in gaps surrounded by buildings + +**Network issues:** +- BuildingManager must be spawned on network +- Ensure player has BuildingPlacement component with IsOwner + +## Extending the System + +### Add Building Categories +Edit `BuildingData.cs` and add: +```csharp +public enum BuildingCategory { Housing, Production, Defense } +public BuildingCategory category; +``` + +### Add Resource Costs +```csharp +[Header("Cost")] +public int woodCost; +public int stoneCost; +``` + +Then check resources in `BuildingManager.PlaceBuildingServerRpc()` + +### Add Build Range Limit +In `BuildingPlacement.UpdatePreviewPosition()`: +```csharp +float distanceToPlayer = Vector3.Distance(transform.position, snappedPosition); +if (distanceToPlayer > maxBuildRange) + isValid = false; +``` + +### Multiple Building Selection +Add UI buttons that change `selectedBuildingIndex` in BuildingPlacement + +## Notes + +- Buildings are spawned on the **server** via ServerRpc +- Preview is **local-only** (each player sees their own preview) +- Ground layer should include all walkable/buildable surfaces +- Grid size should match your game's scale (larger buildings = larger grid) diff --git a/GRID_BASED_COLLISION.md b/GRID_BASED_COLLISION.md new file mode 100644 index 0000000..a10bde8 --- /dev/null +++ b/GRID_BASED_COLLISION.md @@ -0,0 +1,283 @@ +# Grid-Based Collision System + +## How It Works + +The building system uses **grid-based collision detection**, NOT the actual colliders on building prefabs. + +### Grid Bounds vs Collider Bounds + +``` +❌ OLD WAY (Collider-based): +Building A has BoxCollider (2.5 x 3.7 x 4.2) +Building B has MeshCollider (complex shape) +→ Hard to predict, inconsistent placement + +✅ NEW WAY (Grid-based): +Building A has width=2, length=3, height=2 in BuildingData +Building B has width=1, length=4, height=3 in BuildingData +→ Predictable, consistent grid placement +``` + +## Why Grid-Based? + +### Advantages +1. **Predictable**: Buildings snap to grid, easy to understand +2. **Consistent**: Same rules for all buildings, regardless of visual model +3. **Flexible**: Visual model can be any size/shape +4. **Network-Friendly**: Simple data to sync (just grid position + rotation) +5. **Performance**: Fast AABB (Axis-Aligned Bounding Box) checks + +### Comparison + +| Aspect | Collider-Based | Grid-Based | +|--------|---------------|------------| +| Placement | Visual, complex shapes | Predictable grid cells | +| Performance | Slower (physics queries) | Faster (simple bounds check) | +| Network Sync | Complex mesh data | Simple int coordinates | +| Rotation | Complex recalculation | Swap width/length | +| Debugging | Hard to visualize | Easy (grid gizmos) | + +## How Grid Size Works + +### BuildingData Settings + +```csharp +[Header("Grid Size")] +public int width = 2; // X-axis grid cells +public int length = 3; // Z-axis grid cells +public float height = 2f; // Y-axis size (can be float) +``` + +### Rotation Effect + +``` +Building: width=2, length=3 + +Rotation 0° (0): Rotation 90° (1): +┌─────┐ ┌───────┐ +│ 2 │ │ 3 │ +│ x │ │ x │ +│ 3 │ └───────┘ +└─────┘ 2 + +Rotation 180° (2): Rotation 270° (3): +┌─────┐ ┌───────┐ +│ 3 │ │ 2 │ +│ x │ │ x │ +│ 2 │ └───────┘ +└─────┘ 3 +``` + +The `GetSize(rotation)` method automatically swaps width/length for 90° and 270° rotations. + +## Visual Examples + +### Example 1: Small House +```yaml +BuildingData: + width: 2 + length: 2 + height: 3 + +Grid Footprint (top view): +┌─┬─┐ +├─┼─┤ Occupies 4 grid cells (2x2) +└─┴─┘ + +Visual Model: Can be any size! +- Model might be 1.8 x 1.8 (smaller than grid) +- Model might be 2.3 x 2.3 (larger than grid) +- Collision still uses 2x2 grid +``` + +### Example 2: Wall Segment +```yaml +BuildingData: + width: 1 + length: 4 + height: 2 + +Grid Footprint: +┌───────────┐ +│ 1 x 4 │ Occupies 4 grid cells (1x4) +└───────────┘ + +When rotated 90°: +┌─┐ +├─┤ +├─┤ Becomes 4x1 +├─┤ +└─┘ +``` + +### Example 3: Large Building +```yaml +BuildingData: + width: 4 + length: 5 + height: 4 + +Grid Footprint: +┌─┬─┬─┬─┬─┐ +├─┼─┼─┼─┼─┤ +├─┼─┼─┼─┼─┤ Occupies 20 grid cells (4x5) +├─┼─┼─┼─┼─┤ +└─┴─┴─┴─┴─┘ +``` + +## Collision Detection Code + +### IsValidPlacement (BuildingManager.cs) + +```csharp +// Get grid size from BuildingData (NOT collider) +Vector3 gridSize = data.GetSize(rotation); + +// Shrink bounds slightly to allow adjacent placement +// Without this, Bounds.Intersects() returns true for touching bounds +Vector3 shrunkSize = gridSize - Vector3.one * 0.01f; +Bounds checkBounds = new Bounds( + groundPosition + Vector3.up * gridSize.y * 0.5f, + shrunkSize +); + +// Check against all placed buildings' GRID bounds +foreach (var building in placedBuildings) +{ + Bounds buildingGridBounds = building.GetGridBounds(); + if (checkBounds.Intersects(buildingGridBounds)) + return false; // Overlap detected +} +``` + +**Why shrink by 0.01f?** +Unity's `Bounds.Intersects()` returns `true` when bounds are touching (edge-to-edge), not just overlapping. By shrinking the bounds by a tiny amount (0.01 units), we allow buildings to be placed directly adjacent without triggering a false overlap detection. + +### GetGridBounds (Building.cs) + +```csharp +public Bounds GetGridBounds() +{ + // Uses BuildingData size, not collider + Vector3 gridSize = buildingData.GetSize(rotation); + + // Shrink slightly to allow adjacent buildings + Vector3 shrunkSize = gridSize - Vector3.one * 0.01f; + return new Bounds( + transform.position + Vector3.up * gridSize.y * 0.5f, + shrunkSize + ); +} +``` + +**Note:** The 0.01f shrink is tiny and not visible, but prevents false overlap detection for adjacent buildings. + +## Visualizing Grid Bounds + +### In Scene View + +1. **Enter Build Mode** (Press B) +2. **Look at Scene View** (not Game view) +3. You'll see: + - **Green/Red Wire Cube**: Preview's grid bounds + - **Yellow Grid Cells**: Individual cells + - **Cyan Wire Cubes**: Placed buildings' grid bounds + +### Debug Settings + +**BuildingPlacement:** +- `Show Grid Bounds` - Shows preview grid visualization + +**Building:** +- `Show Grid Bounds` - Shows cyan wire cube for this building +- `Grid Bounds Color` - Customize visualization color + +### Example Scene + +``` +Scene View: + Preview (Green) + ┌─────┐ + │ 2x3 │ + └─────┘ + Placed Building (Cyan) + ┌───┐ + │1x2│ + └───┘ + +Grid Cells (Yellow): +┌─┬─┬─┬─┬─┬─┐ +├─┼─┼─┼─┼─┼─┤ +└─┴─┴─┴─┴─┴─┘ +``` + +## Best Practices + +### 1. Match Grid Size to Gameplay +```csharp +// Small decorations +width: 1, length: 1, height: 1 + +// Medium buildings +width: 2-3, length: 2-3, height: 2-3 + +// Large buildings +width: 4-6, length: 4-6, height: 3-5 +``` + +### 2. Visual Model Can Differ +The visual model doesn't need to match grid size exactly: +- Overhang/decorations can extend beyond grid +- Model can be smaller, leaving empty grid space +- Use `placementOffset` to adjust visual alignment + +### 3. Height Consideration +```csharp +height: 2f // Building is 2 units tall +``` +- Used for vertical bounds checking +- Prevents buildings on top of each other +- Can be float (e.g., 2.5f for tall buildings) + +### 4. Colliders Still Needed +Building prefabs should still have colliders for: +- Player/entity collision during gameplay +- Physics interactions +- Raycast detection + +But these are NOT used for placement validation! + +## Common Questions + +**Q: Why is my small model blocking a large area?** +A: Check the `width` and `length` in BuildingData. The grid size determines collision, not the visual model. + +**Q: Buildings overlap visually but can't place?** +A: Grid bounds are overlapping. Check Scene view with "Show Grid Bounds" enabled. + +**Q: How do I make a building take less space?** +A: Reduce `width` and `length` in BuildingData. The visual model size doesn't matter. + +**Q: Can I use fractional grid sizes?** +A: `width` and `length` are integers (whole grid cells). Only `height` can be a float. + +**Q: What if my model is rotated strangely?** +A: Grid rotation is separate from model rotation. Grid always aligns to world axes. Adjust model's prefab rotation or use `placementOffset`. + +**Q: Can buildings be placed directly next to each other with no gap?** +A: Yes! The system shrinks bounds by 0.01f to allow adjacent placement. Buildings can touch edge-to-edge. + +**Q: I want a gap between buildings. How?** +A: Increase the `width` and `length` values in BuildingData by 1. For example, change a 2x2 building to 3x3 to add a 1-cell buffer zone. + +## Summary + +✅ **Use BuildingData grid size** for collision +✅ **Visual model can be any size** +✅ **Predictable, grid-aligned placement** +✅ **Easy debugging with gizmos** +✅ **Fast performance** + +❌ **Don't rely on collider size** +❌ **Don't expect pixel-perfect visual collision** +❌ **Don't use colliders for placement validation** diff --git a/INPUT_ACTIONS_SETUP.md b/INPUT_ACTIONS_SETUP.md new file mode 100644 index 0000000..f17421c --- /dev/null +++ b/INPUT_ACTIONS_SETUP.md @@ -0,0 +1,128 @@ +# Building System Input Actions Setup + +## Required Input Actions + +Add these three actions to your `InputSystem_Actions.inputactions` file in the **Player** action map: + +### 1. ToggleBuildMode (Button) +- **Action Type**: Button +- **Control Type**: Button +- **Binding**: Keyboard B + +### 2. Rotate (Value) +- **Action Type**: Value +- **Control Type**: Axis +- **Binding**: Keyboard R (positive value) +- Alternative: You can use a 1D Axis composite with: + - Negative: Q + - Positive: E + +### 3. Build (Button) +- **Action Type**: Button +- **Control Type**: Button +- **Binding**: Mouse Left Button + +## Step-by-Step Setup in Unity + +1. **Open Input Actions Asset** + - Navigate to `Assets/InputSystem_Actions.inputactions` + - Double-click to open the Input Actions window + +2. **Select Player Action Map** + - In the left panel, click on "Player" action map + +3. **Add ToggleBuildMode Action** + - Click the "+" button in the Actions column + - Name it: `ToggleBuildMode` + - Action Type: Button + - Add binding: Keyboard → B + +4. **Add Rotate Action** + - Click the "+" button in the Actions column + - Name it: `Rotate` + - Action Type: Value + - Control Type: Axis + + **Option A (Simple - Single key):** + - Add binding: Keyboard → R + + **Option B (Advanced - Q/E rotation):** + - Right-click → Add 1D Axis Composite + - Negative: Keyboard → Q + - Positive: Keyboard → E + +5. **Add Build Action** + - Click the "+" button in the Actions column + - Name it: `Build` + - Action Type: Button + - Add binding: Mouse → Left Button + +6. **Save and Regenerate** + - Click "Save Asset" button + - The `InputSystem_Actions.cs` script will auto-regenerate + +## How It Works in Code + +The BuildingPlacement script subscribes to these actions: + +```csharp +// Setup in OnNetworkSpawn +_inputActions.Player.ToggleBuildMode.performed += OnToggleBuildMode; +_inputActions.Player.Rotate.performed += OnRotate; +_inputActions.Player.Build.performed += OnBuild; + +// Cleanup in OnNetworkDespawn +_inputActions.Player.ToggleBuildMode.performed -= OnToggleBuildMode; +_inputActions.Player.Rotate.performed -= OnRotate; +_inputActions.Player.Build.performed -= OnBuild; +``` + +### ToggleBuildMode +- Triggers when B is pressed +- Toggles build mode on/off +- Shows/hides building preview + +### Rotate +- Triggers when R is pressed (or Q/E if using composite) +- Reads value: positive = rotate right, negative = rotate left +- Rotates building preview by 90° + +### Build +- Triggers when left mouse button is pressed +- Only works when build mode is active +- Places the building at the preview position + +## Customizing Controls + +To change the key bindings: +1. Open `InputSystem_Actions.inputactions` +2. Click on the binding you want to change +3. Click "Path" dropdown +4. Select new key/button +5. Save Asset + +No code changes needed - the script uses the action names, not specific keys! + +## Testing + +After setup: +1. Enter Play mode +2. Press **B** → Should see "Entered Build Mode" in console +3. Press **R** → Building preview should rotate +4. Click **Left Mouse Button** → Should place building (if valid position) +5. Press **B** again → Should exit build mode + +## Troubleshooting + +**Error: "ToggleBuildMode does not exist"** +- Make sure you named the action exactly `ToggleBuildMode` (case-sensitive) +- Save the Input Actions asset to regenerate the code + +**Rotation doesn't work:** +- Check the action name is exactly `Rotate` +- If using composite, make sure it's a 1D Axis composite +- Verify the action type is "Value" not "Button" + +**Build action triggers during movement:** +- Make sure Build action is mapped to Mouse Left Button, not Attack +- Check that Build mode is active (press B first) diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 1c92a78..acda2db 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -2,7 +2,7 @@ %TAG !u! tag:unity3d.com,2011: --- !u!78 &1 TagManager: - serializedVersion: 2 + serializedVersion: 3 tags: [] layers: - Default @@ -11,7 +11,7 @@ TagManager: - - Water - UI - - + - Ground - - - @@ -41,3 +41,5 @@ TagManager: - name: Default uniqueID: 0 locked: 0 + m_RenderingLayers: + - Default diff --git a/TROUBLESHOOTING_GHOST.md b/TROUBLESHOOTING_GHOST.md new file mode 100644 index 0000000..1167303 --- /dev/null +++ b/TROUBLESHOOTING_GHOST.md @@ -0,0 +1,196 @@ +# Building Ghost Preview Troubleshooting + +## FIXED: Preview Activated But Not Visible + +If console shows "Preview activated" but you can't see it, this was a **material/transparency issue**. + +**Solution implemented:** +- Better material creation supporting both URP and Standard RP +- Proper transparency setup for ghost materials +- Multiple material slots handled correctly +- Auto-creates debug cube if prefab has no renderer + +**Test the fix:** +1. Press Play +2. Press B to enter build mode +3. Move mouse over ground +4. You should now see a **green transparent ghost** of your building +5. Invalid positions show **red transparent ghost** + +If still not visible after update, continue with checklist below. + +--- + +## Quick Checklist + +Run through these checks in order: + +### 1. Check Console Logs +Press B to enter build mode and look for these messages: +- ✅ "Entered Build Mode" +- ✅ "[BuildingPlacement] Created preview: BuildingPreview" +- ✅ "[BuildingPlacement] Found X renderers" +- ✅ "[BuildingPlacement] Applied valid material to preview" +- ✅ "[BuildingPlacement] Preview activated at (x, y, z)" + +**If you see errors:** +- ❌ "BuildingManager.Instance is null" → Go to Step 2 +- ❌ "No buildings available" → Go to Step 3 +- ❌ "Prefab is null" → Go to Step 4 +- ❌ "Preview deactivated - no ground hit" → Go to Step 5 + +### 2. Check BuildingManager Setup +1. In Hierarchy, find "BuildingManager" GameObject +2. Verify it has: + - `BuildingManager` component + - `NetworkObject` component +3. In BuildingManager component: + - **Grid Size**: Should be > 0 (e.g., 1) + - **Ground Layer**: Should be set (e.g., "Default" or "Ground") + - **Available Buildings**: Should have at least 1 BuildingData + +**Fix:** If BuildingManager doesn't exist, create it: +- Create Empty GameObject → Name: "BuildingManager" +- Add Component → BuildingManager +- Add Component → NetworkObject +- Configure settings + +### 3. Check BuildingData Asset +1. Project window → Find your BuildingData asset +2. Select it and check Inspector: + - **Building Name**: Should have a name + - **Prefab**: Should be assigned (not "None") + - **Width/Length/Height**: Should be > 0 +3. Verify this BuildingData is in BuildingManager's "Available Buildings" list + +**Fix:** If BuildingData missing: +- Right-click in Project → Create → Northbound → Building Data +- Assign a prefab +- Add to BuildingManager's Available Buildings list + +### 4. Check Building Prefab +1. Find your building prefab in Project +2. Open it and verify: + - Has a `MeshRenderer` or `SkinnedMeshRenderer` component + - Renderer has a `Material` assigned + - Has a `Collider` (for placement validation) + - Optionally has `NetworkObject` (will be removed from preview) + +**Fix:** If prefab is missing components: +- Add a 3D object (Cube, for testing) +- Save as prefab +- Assign to BuildingData + +### 5. Check Ground Layer +The preview won't show if the raycast can't hit the ground. + +1. In Scene view, select your terrain/ground +2. Check its **Layer** (top of Inspector) +3. In BuildingManager: + - **Ground Layer** mask should include this layer +4. In BuildingPlacement (on Player): + - **Ground Layer** mask should match BuildingManager + +**Fix:** +- Set terrain Layer to "Default" or create "Ground" layer +- In BuildingManager/BuildingPlacement → Ground Layer → Check "Default" (or your ground layer) + +### 6. Check Camera +1. Verify `Camera.main` exists in scene +2. Camera should be able to see the ground + +**Fix:** +- Make sure Main Camera has tag "MainCamera" +- Camera should be positioned to see the scene + +### 7. Check Player Setup +1. Find your Player prefab +2. Verify it has: + - `BuildingPlacement` component + - **Ground Layer** is set + - **Max Placement Distance** > 0 (e.g., 100) + +### 8. Visual Check in Scene View +1. Press B to enter build mode +2. Open **Hierarchy** window +3. Look for object named "BuildingPreview" +4. If it exists: + - Click on it + - Check if it's active (checkbox next to name) + - Look at its position in Inspector + - Switch to **Scene** view and look for it + - Check if materials are assigned in Renderer component + +### 9. Test with Simple Cube +Create a minimal test setup: +1. Create a Cube in scene → Save as Prefab → Delete from scene +2. Create BuildingData → Assign Cube prefab +3. Add to BuildingManager → Available Buildings +4. Create a Plane → Position at (0, 0, 0) +5. Press Play → Press B → Move mouse over Plane + +You should see the transparent cube preview. + +## Common Issues + +### Preview exists but is invisible +**Cause:** Materials not rendering or transparent issues +**Fix (Now Automated):** +- The system now auto-detects your render pipeline (URP or Standard) +- Creates proper transparent materials automatically +- If prefab has no renderer, adds a debug cube + +**Manual Test:** +1. Add `GhostMaterialTest` component to any object with a renderer +2. Press Play +3. Object should become transparent green +4. If it works, the ghost system will work too + +### Preview doesn't follow mouse +**Cause:** Ground layer not set correctly or no ground detected +**Fix:** +- Check console for "no ground hit" message +- Verify Ground Layer includes your terrain +- Increase Max Placement Distance +- Make sure you're pointing at ground, not sky + +### Preview spawns at (0,0,0) and doesn't move +**Cause:** Raycast not hitting ground +**Fix:** +- Same as above - Ground Layer issue + +### Materials are black/pink +**Cause:** Shader/material issues +**Fix:** +- Make sure you're using the correct render pipeline shaders +- Standard RP: Use "Standard" shader +- URP: Use "Universal Render Pipeline/Lit" shader + +## Debug Commands + +Add these temporary debug lines to check: + +In `CreatePreview()` after instantiation: +```csharp +Debug.Log($"Preview position: {previewObject.transform.position}"); +Debug.Log($"Preview active: {previewObject.activeSelf}"); +Debug.Log($"Renderers: {previewRenderers.Length}"); +``` + +In `UpdatePreviewPosition()`: +```csharp +Debug.DrawRay(ray.origin, ray.direction * maxPlacementDistance, Color.red); +``` + +This shows the raycast in Scene view (red line from camera to mouse). + +## Still Not Working? + +Check these final items: +1. Input Actions are set up (ToggleBuildMode, Rotate, Build) +2. BuildingManager is spawned on network (in scene, not prefab) +3. You're the owner of the player (IsOwner = true) +4. No errors in Console +5. Build mode is actually active (check console for "Entered Build Mode") + +If all else fails, check the Console for any errors and share them!