示例#1
0
        private void SetupPulleySupport(AssetBundle embeddedResourceBundle)
        {
            GameObject    embeddedPrefab       = embeddedResourceBundle.LoadAsset <GameObject>(PulleySupportName);
            KitBashObject pulleySupportKitBash = KitBashManager.Instance.KitBash(embeddedPrefab, new KitBashConfig
            {
                KitBashSources = new List <KitBashSourceConfig>
                {
                    new KitBashSourceConfig
                    {
                        name         = "New",
                        sourcePrefab = "wood_wall_roof_top_45",
                        sourcePath   = "New",
                        position     = new Vector3(0f, 0f, -1f),
                        rotation     = Quaternion.Euler(90, 0, 0)
                    },
                    new KitBashSourceConfig
                    {
                        name             = "pivot_gear",
                        targetParentPath = "New/pivot",
                        sourcePrefab     = "piece_artisanstation",
                        sourcePath       = "ArtisanTable_Destruction/ArtisanTable_Destruction.007_ArtisanTable.019",
                        materialPath     = "New/high/ArtisanTable.004",
                        position         = new Vector3(-1.904f, 1.365f, -0.2620001f),
                        rotation         = Quaternion.Euler(180f, 180f, 98.78699f),
                        scale            = new Vector3(1.4f, 1.4f, 1f),
                        materialRemap    = new int[] { 1, 0 }
                    },
                    new KitBashSourceConfig
                    {
                        name             = "support_left",
                        targetParentPath = "New/pivot",
                        sourcePrefab     = "piece_spinningwheel",
                        sourcePath       = "SpinningWheel_Destruction/SpinningWheel_Destruction.011_SpinningWheel_Broken.027",
                        materialPath     = "New/High/SpinningWheel",
                        position         = new Vector3(-0.2338867f, -0.913f, 0.72f),
                        rotation         = Quaternion.Euler(283.043f, -168.623f, 205.604f),
                        scale            = Vector3.one * -1
                    },
                    new KitBashSourceConfig
                    {
                        name             = "support_right",
                        targetParentPath = "New/pivot",
                        sourcePrefab     = "piece_spinningwheel",
                        sourcePath       = "SpinningWheel_Destruction/SpinningWheel_Destruction.011_SpinningWheel_Broken.027",
                        materialPath     = "New/High/SpinningWheel",
                        position         = new Vector3(0.223f, -0.913f, 0.72f),
                        rotation         = Quaternion.Euler(-283.095f, -11.332f, 25.65f)
                    },
                    new KitBashSourceConfig
                    {
                        name             = "wheel_left",
                        targetParentPath = "New/pivot/pivot_left",
                        sourcePrefab     = "piece_spinningwheel",
                        sourcePath       = "SpinningWheel_Destruction/SpinningWheel_Destruction.002_SpinningWheel_Broken.018",
                        materialPath     = "New/High/SpinningWheel",
                        position         = new Vector3(0.06511331f, 0.8729141f, -1.120428f),
                        rotation         = Quaternion.Euler(269.96f, 180, 0)
                    },
                    new KitBashSourceConfig
                    {
                        name             = "wheel_right",
                        targetParentPath = "New/pivot/pivot_right",
                        sourcePrefab     = "piece_spinningwheel",
                        sourcePath       = "SpinningWheel_Destruction/SpinningWheel_Destruction.002_SpinningWheel_Broken.018",
                        materialPath     = "New/High/SpinningWheel",
                        position         = new Vector3(-0.07488656f, -0.8700893f, -1.121964f),
                        rotation         = Quaternion.Euler(-270.04f, 0, 0)
                    },
                }
            });

            pulleySupportKitBash.KitBashApplied += () =>
            {
                GameObject   raft = PrefabManager.Instance.GetPrefab("Raft");
                LineRenderer sourceLineRenderer = raft.transform.Find("ship/visual/ropes/left").GetComponent <LineRenderer>();

                foreach (LineRenderer lineRenderer in pulleySupportKitBash.Prefab.GetComponentsInChildren <LineRenderer>())
                {
                    lineRenderer.materials                   = sourceLineRenderer.materials;
                    lineRenderer.startWidth                  = sourceLineRenderer.startWidth;
                    lineRenderer.endWidth                    = sourceLineRenderer.endWidth;
                    lineRenderer.widthCurve                  = sourceLineRenderer.widthCurve;
                    lineRenderer.textureMode                 = sourceLineRenderer.textureMode;
                    lineRenderer.shadowCastingMode           = sourceLineRenderer.shadowCastingMode;
                    lineRenderer.alignment                   = sourceLineRenderer.alignment;
                    lineRenderer.numCapVertices              = sourceLineRenderer.numCapVertices;
                    lineRenderer.numCornerVertices           = sourceLineRenderer.numCornerVertices;
                    lineRenderer.widthMultiplier             = sourceLineRenderer.widthMultiplier;
                    lineRenderer.generateLightingData        = sourceLineRenderer.generateLightingData;
                    lineRenderer.material                    = sourceLineRenderer.material;
                    lineRenderer.rayTracingMode              = sourceLineRenderer.rayTracingMode;
                    lineRenderer.realtimeLightmapIndex       = sourceLineRenderer.realtimeLightmapIndex;
                    lineRenderer.realtimeLightmapScaleOffset = sourceLineRenderer.realtimeLightmapScaleOffset;
                }
            };
            PieceManager.Instance.AddPiece(new CustomPiece(pulleySupportKitBash.Prefab, new PieceConfig()
            {
                PieceTable = "Hammer"
            }));
            pulleySupportKitBash.Prefab.AddComponent <PulleySupport>();
        }
示例#2
0
        private void SetupPulleyBase(AssetBundle embeddedResourceBundle)
        {
            GameObject    embeddedPrefab    = embeddedResourceBundle.LoadAsset <GameObject>(PulleyBaseName);
            KitBashObject pulleyBaseKitBash = KitBashManager.Instance.KitBash(embeddedPrefab, new KitBashConfig
            {
                KitBashSources = new List <KitBashSourceConfig> {
                    new KitBashSourceConfig
                    {
                        name             = "_Combined Mesh [high]",
                        targetParentPath = "New",
                        sourcePrefab     = "wood_floor",
                        sourcePath       = "New/_Combined Mesh [high]",
                        position         = new Vector3(0f, -52.55f, 1f),
                        rotation         = Quaternion.Euler(0, 0, 0)
                    },
                    new KitBashSourceConfig
                    {
                        name             = "wheel_left",
                        targetParentPath = "New/pivot_left",
                        sourcePrefab     = "piece_spinningwheel",
                        sourcePath       = "SpinningWheel_Destruction/SpinningWheel_Destruction.002_SpinningWheel_Broken.018",
                        materialPath     = "New/High/SpinningWheel",
                        position         = new Vector3(0.06511331f, -1.13f, -0.86f),
                        rotation         = Quaternion.Euler(0, 180, 0)
                    },
                    new KitBashSourceConfig
                    {
                        name             = "wheel_right",
                        targetParentPath = "New/pivot_right",
                        sourcePrefab     = "piece_spinningwheel",
                        sourcePath       = "SpinningWheel_Destruction/SpinningWheel_Destruction.002_SpinningWheel_Broken.018",
                        materialPath     = "New/High/SpinningWheel",
                        position         = new Vector3(-0.07488668f, -1.12f, 0.86f),
                        rotation         = Quaternion.Euler(0, 0, 0)
                    },
                    new KitBashSourceConfig
                    {
                        name             = "support_left",
                        targetParentPath = "New",
                        sourcePrefab     = "piece_spinningwheel",
                        sourcePath       = "SpinningWheel_Destruction/SpinningWheel_Destruction.011_SpinningWheel_Broken.027",
                        materialPath     = "New/High/SpinningWheel",
                        position         = new Vector3(-0.25f, 0.5580001f, 0.9489999f),
                        rotation         = Quaternion.Euler(11.676f, -177.394f, 217.222f),
                        scale            = Vector3.one * -1
                    },
                    new KitBashSourceConfig
                    {
                        name             = "support_left_bar",
                        targetParentPath = "New",
                        sourcePrefab     = "piece_spinningwheel",
                        sourcePath       = "SpinningWheel_Destruction/SpinningWheel_Destruction.011_SpinningWheel_Broken.027",
                        materialPath     = "New/High/SpinningWheel",
                        position         = new Vector3(0.403f, 0.211f, 0.274f),
                        rotation         = Quaternion.Euler(-260.316f, -195.346f, 201.557f),
                        scale            = Vector3.one * 0.6f
                    },
                    new KitBashSourceConfig
                    {
                        name             = "support_right",
                        targetParentPath = "New",
                        sourcePrefab     = "piece_spinningwheel",
                        sourcePath       = "SpinningWheel_Destruction/SpinningWheel_Destruction.011_SpinningWheel_Broken.027",
                        materialPath     = "New/High/SpinningWheel",
                        position         = new Vector3(0.25f, 0.5699999f, 0.9389999f),
                        rotation         = Quaternion.Euler(-11.728f, -2.606f, 37.225f)
                    },
                    new KitBashSourceConfig
                    {
                        name             = "seat",
                        targetParentPath = "New",
                        sourcePrefab     = "piece_chair",
                        sourcePath       = "New",
                        position         = new Vector3(0.7f, 0f, 0.656f),
                        scale            = new Vector3(0.74871f, 0.61419f, 0.63284f)
                    },
                    new KitBashSourceConfig
                    {
                        name             = "crank_gear",
                        targetParentPath = "New/crank",
                        sourcePrefab     = "piece_artisanstation",
                        sourcePath       = "ArtisanTable_Destruction/ArtisanTable_Destruction.007_ArtisanTable.019",
                        materialPath     = "New/high/ArtisanTable.004",
                        position         = new Vector3(-0.4602f, -1.088331f, 0.7863638f),
                        rotation         = Quaternion.Euler(0f, 90f, 8.787001f),
                        scale            = new Vector3(0.8f, 0.8f, 1f),
                        materialRemap    = new int[] { 1, 0 }
                    },
                    new KitBashSourceConfig
                    {
                        name             = "central_gear",
                        targetParentPath = "New/pivot_right",
                        sourcePrefab     = "piece_artisanstation",
                        sourcePath       = "ArtisanTable_Destruction/ArtisanTable_Destruction.006_ArtisanTable.018",
                        materialPath     = "New/high/ArtisanTable.004",
                        position         = new Vector3(-0.28f, -0.894f, 0.585f),
                        rotation         = Quaternion.Euler(0f, 90f, 0f),
                        scale            = new Vector3(0.8f, 0.8f, 1f),
                        materialRemap    = new int[] { 1, 0 }
                    },
                    new KitBashSourceConfig
                    {
                        name             = "sun_gear",
                        targetParentPath = "New",
                        sourcePrefab     = "piece_artisanstation",
                        sourcePath       = "ArtisanTable_Destruction/ArtisanTable_Destruction.006_ArtisanTable.018",
                        materialPath     = "New/high/ArtisanTable.004",
                        position         = new Vector3(-0.847f, -0.111f, 0.621f),
                        rotation         = Quaternion.Euler(0f, 90f, 0f),
                        scale            = new Vector3(0.8f, 0.8f, 1.7f),
                        materialRemap    = new int[] { 1, 0 }
                    },
                    new KitBashSourceConfig
                    {
                        name             = "planet_gear_1",
                        targetParentPath = "New/pivot_right/planet_1",
                        sourcePrefab     = "piece_artisanstation",
                        sourcePath       = "ArtisanTable_Destruction/ArtisanTable_Destruction.006_ArtisanTable.018",
                        materialPath     = "New/high/ArtisanTable.004",
                        position         = new Vector3(-0.847f, -0.7618001f, 0.752f),
                        rotation         = Quaternion.Euler(0f, 90f, -11.669f),
                        scale            = new Vector3(0.8f, 0.8f, 1.7f),
                        materialRemap    = new int[] { 1, 0 }
                    },
                    new KitBashSourceConfig
                    {
                        name             = "planet_gear_2",
                        targetParentPath = "New/pivot_right/planet_2",
                        sourcePrefab     = "piece_artisanstation",
                        sourcePath       = "ArtisanTable_Destruction/ArtisanTable_Destruction.006_ArtisanTable.018",
                        materialPath     = "New/high/ArtisanTable.004",
                        position         = new Vector3(-0.847f, -0.7618001f, 0.752f),
                        rotation         = Quaternion.Euler(0f, 90f, -11.669f),
                        scale            = new Vector3(0.8f, 0.8f, 1.7f),
                        materialRemap    = new int[] { 1, 0 }
                    },
                    new KitBashSourceConfig
                    {
                        name             = "planet_gear_3",
                        targetParentPath = "New/pivot_right/planet_3",
                        sourcePrefab     = "piece_artisanstation",
                        sourcePath       = "ArtisanTable_Destruction/ArtisanTable_Destruction.006_ArtisanTable.018",
                        materialPath     = "New/high/ArtisanTable.004",
                        position         = new Vector3(-0.847f, -0.7618001f, 0.752f),
                        rotation         = Quaternion.Euler(0f, 90f, -11.669f),
                        scale            = new Vector3(0.8f, 0.8f, 1.7f),
                        materialRemap    = new int[] { 1, 0 }
                    },
                    new KitBashSourceConfig
                    {
                        name             = "planet_gear_4",
                        targetParentPath = "New/pivot_right/planet_4",
                        sourcePrefab     = "piece_artisanstation",
                        sourcePath       = "ArtisanTable_Destruction/ArtisanTable_Destruction.006_ArtisanTable.018",
                        materialPath     = "New/high/ArtisanTable.004",
                        position         = new Vector3(-0.847f, -0.7618001f, 0.752f),
                        rotation         = Quaternion.Euler(0f, 90f, -11.669f),
                        scale            = new Vector3(0.8f, 0.8f, 1.7f),
                        materialRemap    = new int[] { 1, 0 }
                    },
                    new KitBashSourceConfig
                    {
                        name             = "handhold",
                        targetParentPath = "New/crank",
                        sourcePrefab     = "piece_stonecutter",
                        sourcePath       = "Stonecutterbench_destruction/Stonecutter_destruction.001_Stonecutter_destruction.001_Workbench.001",
                        materialPrefab   = "piece_spinningwheel",
                        materialPath     = "New/High/SpinningWheel",
                        position         = new Vector3(0.04099999f, -0.1544f, -0.1712f),
                        rotation         = Quaternion.Euler(0f, 5.765f, -89.982f),
                        scale            = Vector3.one * 0.1f
                    }
                }
            });

            PieceManager.Instance.AddPiece(new CustomPiece(pulleyBaseKitBash.Prefab, new PieceConfig()
            {
                PieceTable = "Hammer"
            }));
            pulleyBaseKitBash.Prefab.AddComponent <Pulley>();
        }
        public PlanTotemPrefab(AssetBundle planbuildBundle)
        {
            planTotemKitBash = KitBashManager.Instance.KitBash(planbuildBundle.LoadAsset <GameObject>("piece_plan_totem"), new KitBashConfig
            {
                FixReferences  = true,
                KitBashSources = new List <KitBashSourceConfig> {
                    new KitBashSourceConfig
                    {
                        name             = "totem",
                        targetParentPath = "new",
                        sourcePrefab     = "guard_stone",
                        sourcePath       = "new/default",
                        scale            = Vector3.one * 0.6f
                    },
                    new KitBashSourceConfig
                    {
                        name             = "chest",
                        targetParentPath = "new",
                        sourcePrefab     = "piece_chest_private",
                        sourcePath       = "New",
                        position         = new Vector3(0, 0, 0.591f),
                        scale            = Vector3.one * 0.9f,
                        rotation         = Quaternion.Euler(180f, 180f, 180f)
                    },
                    new KitBashSourceConfig
                    {
                        name             = "hammer",
                        targetParentPath = "new/pivot",
                        sourcePrefab     = "Hammer",
                        sourcePath       = "attach/hammer",
                        position         = new Vector3(0.07f, 1.9f, 0f),
                        rotation         = Quaternion.Euler(0f, 0f, 20f),
                        scale            = Vector3.one * 0.3f
                    }
                }
            });
            planTotemKitBash.KitBashApplied += () =>
            {
                GameObject connectionPrefab          = PrefabManager.Instance.GetPrefab("forge_ext1").GetComponent <StationExtension>().m_connectionPrefab;
                GameObject planBuildConnectionPrefab = PrefabManager.Instance.CreateClonedPrefab("vfx_PlanBuildConnection", connectionPrefab);

                GameObject planTotemPrefab = planTotemKitBash.Prefab;

                ShaderHelper.UpdateTextures(planTotemPrefab.transform.Find("new/pivot/hammer").gameObject, ShaderHelper.ShaderState.Supported);

                PlanTotem planTotem = planTotemPrefab.AddComponent <PlanTotem>();

                PlanTotem.m_connectionPrefab = planBuildConnectionPrefab;

                planTotem.m_open   = planTotemPrefab.transform.Find("new/chest/privatechesttop_open").gameObject;
                planTotem.m_closed = planTotemPrefab.transform.Find("new/chest/privatechesttop_closed").gameObject;
                planTotem.m_height = 2;
                planTotem.m_width  = 6;

                MeshRenderer meshRenderer = planTotemPrefab.transform.Find("new/totem").GetComponent <MeshRenderer>();
                meshRenderer.materials
                .Where(material => material.name.StartsWith("Guardstone_OdenGlow_mat"))
                .First()
                .SetColor("_EmissionColor", glowColorConfig.Value);

                CircleProjector circleProjector = planTotemPrefab.GetComponentInChildren <CircleProjector>(includeInactive: true);
                circleProjector.m_prefab = PrefabManager.Instance.GetPrefab("guard_stone").GetComponentInChildren <CircleProjector>().m_prefab;
                circleProjector.m_radius = PlanTotem.radiusConfig.Value;
            };

            CustomPiece planTotemPiece = new CustomPiece(planTotemKitBash.Prefab, new PieceConfig()
            {
                PieceTable   = "Hammer",
                Requirements = new RequirementConfig[]
                {
                    new RequirementConfig {
                        Item = "FineWood", Amount = 5, Recover = true
                    },
                    new RequirementConfig {
                        Item = "GreydwarfEye", Amount = 5, Recover = true
                    },
                    new RequirementConfig {
                        Item = "SurtlingCore", Recover = true
                    }
                }
            });

            PieceManager.Instance.AddPiece(planTotemPiece);
        }