public override GameObject GetGameObject() { GameObject prefab = GameObject.Instantiate(this.GameObject); prefab.name = this.ClassID; // Update TechTag var techTag = prefab.GetComponent <TechTag>(); if (techTag == null) { if ((techTag = prefab.GetComponentInChildren <TechTag>()) == null) { techTag = prefab.AddComponent <TechTag>(); } } techTag.type = this.TechType; // Update prefab ID var prefabId = prefab.GetComponent <PrefabIdentifier>(); if (prefabId == null) { if ((prefabId = prefab.GetComponentInChildren <PrefabIdentifier>()) == null) { prefabId = prefab.AddComponent <PrefabIdentifier>(); } } prefabId.ClassId = this.ClassID; // We can pick this item PrefabsHelper.SetDefaultPickupable(prefab); // We can place this item var cpt = prefab.GetComponent <CustomPlaceToolController>(); if (cpt == null) { cpt = prefab.AddComponent <CustomPlaceToolController>(); } prefab.AddComponent <Egg14_PT>(); PrefabsHelper.SetDefaultPlaceTool(prefab); // Add fabricating animation var fabricating = prefab.AddComponent <VFXFabricating>(); fabricating.localMinY = -0.2f; fabricating.localMaxY = 0.8f; fabricating.posOffset = new Vector3(0f, 0.05f, 0.04f); fabricating.eulerOffset = new Vector3(0f, 0f, 0f); fabricating.scaleFactor = 1f; return(prefab); }
public override GameObject GetGameObject() { GameObject prefab = GameObject.Instantiate(this.GameObject); prefab.name = this.ClassID; // Remove unwanted elements GameObject.DestroyImmediate(prefab.GetComponent <Rigidbody>()); GameObject.DestroyImmediate(prefab.GetComponent <ImmuneToPropulsioncannon>()); // Rotate model GameObject model = prefab.FindChild("Creatures_eggs_17"); model.transform.localEulerAngles = new Vector3(model.transform.localEulerAngles.x - 90f, model.transform.localEulerAngles.y, model.transform.localEulerAngles.z); // Scale model model.transform.localScale *= 0.8f; #if BELOWZERO MeshRenderer[] renderers = model.GetComponents <MeshRenderer>(); if (renderers != null) { foreach (MeshRenderer rend in renderers) { if (rend.materials != null) { foreach (Material mat in rend.materials) { mat.shader = marmosetUber; if (mat.name.StartsWith("Creatures_eggs_17")) { mat.SetTexture("_BumpMap", normal); mat.EnableKeyword("MARMO_NORMALMAP"); mat.EnableKeyword("_ZWRITE_ON"); // Enable Z write } } } } } #endif // Scale collider CapsuleCollider c = prefab.GetComponentInChildren <CapsuleCollider>(); c.radius *= 0.5f; c.height *= 0.5f; // Update TechTag var techTag = prefab.GetComponent <TechTag>(); if (techTag == null) { if ((techTag = prefab.GetComponentInChildren <TechTag>()) == null) { techTag = prefab.AddComponent <TechTag>(); } } techTag.type = this.TechType; // Update prefab ID var prefabId = prefab.GetComponent <PrefabIdentifier>(); if (prefabId == null) { if ((prefabId = prefab.GetComponentInChildren <PrefabIdentifier>()) == null) { prefabId = prefab.AddComponent <PrefabIdentifier>(); } } prefabId.ClassId = this.ClassID; // Update sky applier PrefabsHelper.SetDefaultSkyApplier(prefab); // Update large world entity PrefabsHelper.UpdateExistingLargeWorldEntities(prefab); // We can pick this item PrefabsHelper.SetDefaultPickupable(prefab); // We can place this item //prefab.AddComponent<EggSeaDragon_PT>(); PrefabsHelper.SetDefaultPlaceTool(prefab); // Add fabricating animation var fabricating = prefab.AddComponent <VFXFabricating>(); fabricating.localMinY = -0.2f; fabricating.localMaxY = 0.8f; fabricating.posOffset = new Vector3(0f, 0.03f, -0.15f); fabricating.eulerOffset = new Vector3(0f, 0f, 0f); fabricating.scaleFactor = 0.35f; return(prefab); }
public override void RegisterItem() { if (this.IsRegistered == false) { GameObject model = this.GameObject.FindChild("Lost_river_sea_dragon_skeleton"); // Scale model model.transform.localScale *= 2.0f; // Translate model model.transform.localPosition = new Vector3(model.transform.localPosition.x, model.transform.localPosition.y + 0.19f, model.transform.localPosition.z); // Rotate model model.transform.localEulerAngles = new Vector3(model.transform.localEulerAngles.x, model.transform.localEulerAngles.y + 90.0f, model.transform.localEulerAngles.z + 35.0f); // Set tech tag var techTag = this.GameObject.AddComponent <TechTag>(); techTag.type = this.TechType; // Add prefab identifier var prefabId = this.GameObject.AddComponent <PrefabIdentifier>(); prefabId.ClassId = this.ClassID; // Add collider var collider = this.GameObject.AddComponent <BoxCollider>(); collider.size = new Vector3(0.6f, 0.5f, 0.6f); // Set proper shaders (for crafting animation) Shader marmosetUber = Shader.Find("MarmosetUBER"); Texture normal = AssetsHelper.Assets.LoadAsset <Texture>("Lost_river_sea_dragon_skeleton_bones_normal"); Texture normal2 = AssetsHelper.Assets.LoadAsset <Texture>("Lost_river_sea_dragon_skeleton_skull_normal"); var renderers = this.GameObject.GetComponentsInChildren <Renderer>(); foreach (Renderer rend in renderers) { foreach (Material tmpMat in rend.materials) { tmpMat.shader = marmosetUber; if (string.Compare(tmpMat.name, "Lost_river_sea_dragon_skeleton_bones (Instance)", true, CultureInfo.InvariantCulture) == 0) { tmpMat.SetTexture("_BumpMap", normal); tmpMat.EnableKeyword("MARMO_NORMALMAP"); tmpMat.EnableKeyword("_ZWRITE_ON"); // Enable Z write } else if (string.Compare(tmpMat.name, "Lost_river_sea_dragon_skeleton_skull (Instance)", true, CultureInfo.InvariantCulture) == 0) { tmpMat.SetTexture("_BumpMap", normal2); tmpMat.EnableKeyword("MARMO_NORMALMAP"); tmpMat.EnableKeyword("_ZWRITE_ON"); // Enable Z write } } } // Add large world entity PrefabsHelper.SetDefaultLargeWorldEntity(this.GameObject); // Add rigid body PrefabsHelper.SetDefaultRigidBody(this.GameObject); // Add sky applier PrefabsHelper.SetDefaultSkyApplier(this.GameObject, renderers); // We can pick this item PrefabsHelper.SetDefaultPickupable(this.GameObject); // We can place this item PrefabsHelper.SetDefaultPlaceTool(this.GameObject, collider); // Associate recipe to the new TechType SMLHelper.V2.Handlers.CraftDataHandler.SetTechData(this.TechType, this.Recipe); // Set item occupies 4 slots SMLHelper.V2.Handlers.CraftDataHandler.SetItemSize(this.TechType, new Vector2int(2, 2)); // Add the new TechType to Hand Equipment type SMLHelper.V2.Handlers.CraftDataHandler.SetEquipmentType(this.TechType, EquipmentType.Hand); // Set quick slot type SMLHelper.V2.Handlers.CraftDataHandler.SetQuickSlotType(this.TechType, QuickSlotType.Selectable); // Set the buildable prefab SMLHelper.V2.Handlers.PrefabHandler.RegisterPrefab(this); // Set the custom sprite SMLHelper.V2.Handlers.SpriteHandler.RegisterSprite(this.TechType, AssetsHelper.Assets.LoadAsset <Sprite>("seadragonskeletonicon")); this.IsRegistered = true; } }
public override void RegisterItem() { if (this.IsRegistered == false) { // Get model GameObject model = this.GameObject.FindChild("docking_clerical_penholder"); // Scale model.transform.localScale *= 4f; // Translate model.transform.localPosition = new Vector3(model.transform.localPosition.x, model.transform.localPosition.y + 0.001f, model.transform.localPosition.z); // Rotate //model.transform.localEulerAngles = new Vector3(model.transform.localEulerAngles.x, model.transform.localEulerAngles.y + -25.0f, model.transform.localEulerAngles.z); // Set tech tag var techTag = this.GameObject.AddComponent <TechTag>(); techTag.type = this.TechType; // Add prefab identifier var pi = this.GameObject.AddComponent <PrefabIdentifier>(); pi.ClassId = this.ClassID; // Add collider var collider = this.GameObject.AddComponent <BoxCollider>(); collider.size = new Vector3(0.1f, 0.1f, 0.1f); collider.contactOffset = 0.01f; //collider.center = new Vector3(collider.center.x - 0.15f, collider.center.y + 0.1f, collider.center.z); collider.enabled = true; // Set proper shaders (for crafting animation) Shader marmosetUber = Shader.Find("MarmosetUBER"); Texture normal = AssetsHelper.Assets.LoadAsset <Texture>("docking_clerical_01_normal"); var renderers = this.GameObject.GetComponentsInChildren <Renderer>(); foreach (Renderer rend in renderers) { foreach (Material tmpMat in rend.materials) { tmpMat.shader = marmosetUber; if (string.Compare(tmpMat.name, "docking_clerical_01 (Instance)", true, CultureInfo.InvariantCulture) == 0) { tmpMat.SetTexture("_BumpMap", normal); tmpMat.EnableKeyword("MARMO_NORMALMAP"); tmpMat.EnableKeyword("_ZWRITE_ON"); // Enable Z write } } } // Add large world entity PrefabsHelper.SetDefaultLargeWorldEntity(this.GameObject); // Add rigid body PrefabsHelper.SetDefaultRigidBody(this.GameObject); Rigidbody rb = this.GameObject.GetComponent <Rigidbody>(); rb.mass = 0.4f; // Add sky applier PrefabsHelper.SetDefaultSkyApplier(this.GameObject, renderers); // We can pick this item PrefabsHelper.SetDefaultPickupable(this.GameObject); // We can place this item PrefabsHelper.SetDefaultPlaceTool(this.GameObject, collider); // Associate recipe to the new TechType SMLHelper.V2.Handlers.CraftDataHandler.SetTechData(this.TechType, this.Recipe); // Add the new TechType to Hand Equipment type. SMLHelper.V2.Handlers.CraftDataHandler.SetEquipmentType(this.TechType, EquipmentType.Hand); // Set quick slot type. SMLHelper.V2.Handlers.CraftDataHandler.SetQuickSlotType(this.TechType, QuickSlotType.Selectable); // Set the custom sprite SMLHelper.V2.Handlers.SpriteHandler.RegisterSprite(this.TechType, AssetsHelper.Assets.LoadAsset <Sprite>("penholdericon")); // Set the buildable prefab SMLHelper.V2.Handlers.PrefabHandler.RegisterPrefab(this); this.IsRegistered = true; } }
public override GameObject GetGameObject() { GameObject prefab = GameObject.Instantiate(this.GameObject); prefab.name = this.ClassID; // Remove unwanted elements GameObject.DestroyImmediate(prefab.GetComponent <Rigidbody>()); GameObject.DestroyImmediate(prefab.GetComponent <IncubatorEgg>()); GameObject.DestroyImmediate(prefab.GetComponent <VFXController>()); GameObject.DestroyImmediate(prefab.GetComponentInChildren <Animator>()); GameObject.DestroyImmediate(prefab.GetComponentInChildren <IncubatorEggAnimation>()); GameObject model = prefab.FindChild("Creatures_eggs_11"); // Rotate model model.transform.localEulerAngles = new Vector3(model.transform.localEulerAngles.x, model.transform.localEulerAngles.y + 180f, model.transform.localEulerAngles.z); // Scale model model.transform.localScale *= 0.2f; // Scale colliders foreach (SphereCollider c in prefab.GetAllComponentsInChildren <SphereCollider>()) { c.radius *= 0.15f; } // Update TechTag var techTag = prefab.GetComponent <TechTag>(); if (techTag == null) { if ((techTag = prefab.GetComponentInChildren <TechTag>()) == null) { techTag = prefab.AddComponent <TechTag>(); } } techTag.type = this.TechType; // Update prefab ID var prefabId = prefab.GetComponent <PrefabIdentifier>(); if (prefabId == null) { if ((prefabId = prefab.GetComponentInChildren <PrefabIdentifier>()) == null) { prefabId = prefab.AddComponent <PrefabIdentifier>(); } } prefabId.ClassId = this.ClassID; // Update sky applier PrefabsHelper.SetDefaultSkyApplier(prefab); // Set large world entity PrefabsHelper.SetDefaultLargeWorldEntity(prefab); // We can pick this item PrefabsHelper.SetDefaultPickupable(prefab); // We can place this item prefab.AddComponent <CustomPlaceToolController>(); prefab.AddComponent <EggSeaEmperor_PT>(); PrefabsHelper.SetDefaultPlaceTool(prefab); // Add fabricating animation var fabricating = prefab.AddComponent <VFXFabricating>(); fabricating.localMinY = -0.2f; fabricating.localMaxY = 0.8f; fabricating.posOffset = new Vector3(0f, 0.03f, 0.04f); fabricating.eulerOffset = new Vector3(0f, 0f, 0f); fabricating.scaleFactor = 1.15f; return(prefab); }
public override GameObject GetGameObject() { GameObject prefab = GameObject.Instantiate(this.GameObject); prefab.name = this.ClassID; // Remove unwanted elements GameObject.DestroyImmediate(prefab.GetComponent <Rigidbody>()); GameObject.DestroyImmediate(prefab.GetComponent <ImmuneToPropulsioncannon>()); // Rotate model GameObject model = prefab.FindChild("Creatures_eggs_17"); model.transform.localEulerAngles = new Vector3(model.transform.localEulerAngles.x - 90f, model.transform.localEulerAngles.y, model.transform.localEulerAngles.z); // Scale model model.transform.localScale *= 0.8f; // Scale collider CapsuleCollider c = prefab.GetComponentInChildren <CapsuleCollider>(); c.radius *= 0.5f; c.height *= 0.5f; // Update TechTag var techTag = prefab.GetComponent <TechTag>(); if (techTag == null) { if ((techTag = prefab.GetComponentInChildren <TechTag>()) == null) { techTag = prefab.AddComponent <TechTag>(); } } techTag.type = this.TechType; // Update prefab ID var prefabId = prefab.GetComponent <PrefabIdentifier>(); if (prefabId == null) { if ((prefabId = prefab.GetComponentInChildren <PrefabIdentifier>()) == null) { prefabId = prefab.AddComponent <PrefabIdentifier>(); } } prefabId.ClassId = this.ClassID; // Update sky applier PrefabsHelper.SetDefaultSkyApplier(prefab); // Set large world entity PrefabsHelper.SetDefaultLargeWorldEntity(prefab); // We can pick this item PrefabsHelper.SetDefaultPickupable(prefab); // We can place this item //prefab.AddComponent<EggSeaDragon_PT>(); PrefabsHelper.SetDefaultPlaceTool(prefab); // Add fabricating animation var fabricating = prefab.AddComponent <VFXFabricating>(); fabricating.localMinY = -0.2f; fabricating.localMaxY = 0.8f; fabricating.posOffset = new Vector3(0f, 0.03f, -0.15f); fabricating.eulerOffset = new Vector3(0f, 0f, 0f); fabricating.scaleFactor = 0.35f; return(prefab); }
public override GameObject GetGameObject() { GameObject prefab = GameObject.Instantiate(this.GameObject); prefab.name = this.ClassID; // Get sub objects GameObject model = prefab.FindChild("lost_river_cove_tree_01"); GameObject eggs = model.FindChild("lost_river_cove_tree_01_eggs"); GameObject shells = model.FindChild("lost_river_cove_tree_01_eggs_shells"); // Scale model model.transform.localScale *= 0.08f; // Rotate model model.transform.localEulerAngles = new Vector3(model.transform.localEulerAngles.x + 75f, model.transform.localEulerAngles.y, model.transform.localEulerAngles.z + 15f); // Translate model model.transform.localPosition = new Vector3(model.transform.localPosition.x, model.transform.localPosition.y + 0.02f, model.transform.localPosition.z - 1.6f); // Remove unwanted elements GameObject.DestroyImmediate(prefab.GetComponent <Rigidbody>()); GameObject.DestroyImmediate(prefab.GetComponent <ConstructionObstacle>()); foreach (Transform tr in prefab.transform) { if (string.Compare(tr.name, "lost_river_cove_tree_01", true, CultureInfo.InvariantCulture) != 0) { GameObject.DestroyImmediate(tr); } else { foreach (Transform ctr in tr) { if (!ctr.name.StartsWith("lost_river_cove_tree_01_eggs", true, CultureInfo.InvariantCulture)) { GameObject.DestroyImmediate(ctr); } } } } // Disable existing renderers Renderer[] renderers = prefab.GetAllComponentsInChildren <Renderer>(); foreach (Renderer rend in renderers) { if (!rend.name.StartsWith("lost_river_cove_tree_01_eggs", true, CultureInfo.InvariantCulture)) { rend.enabled = false; } } // Delete existing colliders Collider[] colliders = prefab.GetAllComponentsInChildren <Collider>(); for (int i = 0; i < colliders.Length; i++) { GameObject.DestroyImmediate(colliders[i]); } // Add main collider BoxCollider c = prefab.AddComponent <BoxCollider>(); c.size = new Vector3(1f, 0.8f, 1f); c.center = new Vector3(c.center.x, c.center.y + 0.4f, c.center.z + 0.3f); // Update TechTag var techTag = prefab.GetComponent <TechTag>(); if (techTag == null) { if ((techTag = prefab.GetComponentInChildren <TechTag>()) == null) { techTag = prefab.AddComponent <TechTag>(); } } techTag.type = this.TechType; // Update prefab ID var prefabId = prefab.GetComponent <PrefabIdentifier>(); if (prefabId == null) { if ((prefabId = prefab.GetComponentInChildren <PrefabIdentifier>()) == null) { prefabId = prefab.AddComponent <PrefabIdentifier>(); } } prefabId.ClassId = this.ClassID; // Update large world entity LargeWorldEntity lwe = prefab.GetComponent <LargeWorldEntity>(); lwe.cellLevel = LargeWorldEntity.CellLevel.Near; // We can pick this item PrefabsHelper.SetDefaultPickupable(prefab); // We can place this item PrefabsHelper.SetDefaultPlaceTool(prefab, c); // Add fabricating animation var fabricating = prefab.AddComponent <VFXFabricating>(); fabricating.localMinY = -0.2f; fabricating.localMaxY = 0.8f; fabricating.posOffset = new Vector3(0f, 0.03f, -0.07f); fabricating.eulerOffset = new Vector3(0f, 0f, 0f); fabricating.scaleFactor = 0.2f; return(prefab); }