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; } }