//********************************** //какой то глюк с позицией планеты, если не в 0.0 то возвращает непонятно что //**************************************** private void setVertices() { camPosition = worldToLocal(cam.transform.position); // позиция камеры magic = Quaternion.FromToRotation(curAxis, camPosition); //определяю магию для плавного нарастания детализации camDistance = Vector3.Magnitude(camPosition); // Mathf.Sqrt(camPosition.x*camPosition.x+camPosition.y*camPosition.y+camPosition.z*camPosition.z); float min = 0.8f; float max = 2.5f; if (camDistance >= 1.75f * radius) { coordCorrection = max; } else { if (camDistance <= radius) { coordCorrection = min; } else { float bebe = Mathf.Pow((camDistance / radius - 0.75f), 0.9f); coordCorrection = Mathf.Lerp(min, max, bebe); } } //ставлю точки float texCoorScale = 200f; for (int i = 0; i < vertOld.Length; i++) { //есть сохраненная позиция в меше которую легко повернуть к камере Vector3 turnedPos = vertOld[i]; turnedPos.x *= coordCorrection; turnedPos.z *= coordCorrection; turnedPos = magic * turnedPos; turnedPos.Normalize(); float height = MagicData.Height(turnedPos); vert[i] = turnedPos * radius * height; Vector3 pos = turnedPos; float xCoor = Mathf.Abs(pos.x); float yCoor = Mathf.Abs(pos.y); float zCoor = Mathf.Abs(pos.z); if (xCoor >= yCoor && xCoor >= zCoor) { uv[i] = new Vector2(pos.y / pos.x, pos.z / pos.x); } if (yCoor > xCoor && yCoor >= zCoor) { uv[i] = new Vector2(pos.x / pos.y, pos.z / pos.y); } if (zCoor > yCoor && zCoor > xCoor) { uv[i] = new Vector2(pos.y / pos.z, pos.x / pos.z); } uv[i] *= texCoorScale; } }
// Use this for initialization void Start() { cam = GameObject.Find("Camera"); //gameObject.transform.eulerAngles = new Vector3(0,0,0); mesh = gameObject.GetComponent <MeshFilter>().mesh; //сохраняю старые позиции точек vertOld = mesh.vertices; //подымаю от нуля позиции точек до 1 for (int i = 0; i < vertOld.Length; i++) { vertOld[i] += new Vector3(0, 1, 0); } vert = new Vector3[vertOld.Length]; uv = new Vector2[vertOld.Length]; Noise3D.init(125); MagicData.Init(); CreateOcean(); CreateClouds(); CreateTrees(); }
public bool unequipItem(ItemData.EQUIP slot) { int equipSlotIndex = (int)slot; if (player.getInventory().addItem(slots[equipSlotIndex].getItemId(), slots[equipSlotIndex].getItemAmount())) { if (slot == ItemData.EQUIP.HAT) { if (RuneCraft.wearingTiara(player)) { RuneCraft.toggleRuin(player, getItemInSlot(slot), false); } } slots[equipSlotIndex].setItemId(-1); slots[equipSlotIndex].setItemAmount(0); player.getPackets().refreshEquipment(); player.getUpdateFlags().setAppearanceUpdateRequired(true); refreshBonuses(); player.setEntityFocus(65535); if (slot == ItemData.EQUIP.WEAPON) { setWeapon(); MagicData.cancelAutoCast(player, true); } return(true); } return(false); }
public void SelectTargetWindows(MagicData c, int casts = 1, Random random = default) { var t = c.Target; SelectTargetWindows(t, casts, random); Command = Memory.KernelBin.BattleCommands[2]; Magic = c; }
public MagicReleaser CreateReleaser(MagicData magic, IReleaserTarget target, ReleaserType ty) { var view = View.CreateReleaserView(target.Releaser.View, target.ReleaserTarget.View, target.TargetPosition); var mReleaser = new MagicReleaser(magic, target, this.ReleaserControllor, view, ty); this.JoinElement(mReleaser); return(mReleaser); }
public CommandUseMagicSkill(MagicData magicData, int skillID) { SkillData skillData = DataManager.Instance.GetSkillDataSet ().GetSkillData (skillID); commandType = CommandType.Attack; commandName = skillData.name; commandDescription = skillData.description; targetType = skillData.targetType; preExecutionSpeed = Mathf.RoundToInt(magicData.basicSPD * skillData.preSPDMultiplier); postExecutionRecover = skillData.postSPDMultiplier == 0 ? 0 : Mathf.RoundToInt(6000f / magicData.basicSPD / skillData.postSPDMultiplier); this.skillID = skillID; }
public MagicReleaser( MagicData magic, IReleaserTarget target, GControllor controllor, IMagicReleaser view, ReleaserType type) : base(controllor, view) { ReleaserTarget = target; Magic = magic; RType = type; OnExitedState = ReleaseAll; }
void camHandle() { //запрет на перемещение внутри планеты Vector3 camPosition = ThisMeshPlanet.worldToLocal(transform.position); float camDistance = Vector3.Magnitude(camPosition); float heightAtThisPoint = MagicData.Height(camPosition); Vector3 posit = camPosition; posit.Normalize(); if (camDistance < (posit * heightAtThisPoint * (ThisMeshPlanet.radius + height_of_sight)).magnitude) { transform.position = ThisMeshPlanet.localToWorld(posit * heightAtThisPoint * (ThisMeshPlanet.radius + height_of_sight)); } }
public void ReleaseMagic(MagicData magic) { Resources.UnloadUnusedAssets(); if (currentReleaser != null) { GObject.Destory(currentReleaser); } var per = curState.Perception as BattlePerception; this.currentReleaser = per.CreateReleaser(magic, new GameLogic.Game.LayoutLogics.ReleaseAtTarget(this.releaser, this.target), ReleaserType.Magic); }
public MagicData Load(string path) { if (File.Exists(path)) { BinaryFormatter formatter = new BinaryFormatter(); FileStream file = new FileStream(path, FileMode.Open); MagicData data = formatter.Deserialize(file) as MagicData; file.Close(); return(data); } else { Debug.LogError("não encontrado"); return(null); } }
void SetTree(int number, GameObject CurTree) { Vector3 pos = Random.insideUnitSphere; pos.Normalize(); float height = MagicData.Height(pos); //two.Height(pos); if (height > 1) { GameObject currentTree = (GameObject)Instantiate(CurTree); currentTree.transform.parent = gameObject.transform; currentTree.transform.position = pos * (radius) * height; currentTree.transform.up = pos; currentTree.transform.RotateAroundLocal(pos, Random.value * 360); Vector3 scale = new Vector3((0.5f + Random.value * 0.5f), (0.5f + Random.value * 0.5f), (0.5f + Random.value * 0.5f)); currentTree.transform.localScale.Scale(scale); } }
public void Save(MagicData data) { BinaryFormatter formatter = new BinaryFormatter(); if (!Directory.Exists(Directory.GetCurrentDirectory() + "\\Configs")) { Directory.CreateDirectory(Directory.GetCurrentDirectory() + "\\Configs"); } string caminho = Directory.GetCurrentDirectory() + "\\Configs\\" + data.Name + ".mgc"; print(caminho); FileStream file = new FileStream(caminho, FileMode.Create); formatter.Serialize(file, data); file.Close(); //adicionar magia Magics = LoadAll(); }
private void AddMagic(MagicData magicData) { RaycastGizmos(out var gizmo); if (!(gizmo is CommanderGizmo commanderGizmo)) { return; } var magicOverride = commanderGizmo.Data.MagicOverrides.SingleOrDefault(x => x.Path == magicData.magicPath); if (magicOverride == null) { magicOverride = new MagicOverride(magicData.magicPath, 0); commanderGizmo.Data.MagicOverrides.Add(magicOverride); } magicOverride.MagicValue++; commanderGizmo.SetData(commanderGizmo.Data); }
private void Open() { if (data != null) { if (!EditorUtility.DisplayDialog("Cancel", "Open file will lost current edit,Do you want to over it", "Yes", "Cancel")) { return; } } var path = EditorUtility.OpenFilePanel("Open", Application.dataPath + "/Resources", "xml"); if (string.IsNullOrEmpty(path)) { return; } var xml = File.ReadAllText(path, XmlParser.UTF8); data = XmlParser.DeSerialize <MagicData> (xml); currentPath = path; }
private void New() { if (data != null) { if (!EditorUtility.DisplayDialog("Cancel", "The operator will lost current edit,Do you want to over it!", "Yes", "Cancel")) { return; } } currentPath = null; data = new MagicData() { key = "new_magic", name = "New Magic" }; data.Containers.Add(new EventContainer() { type = Layout.EventType.EVENT_START }); }
public static void Postfix(UnitManager __instance) { try { String filePath = FindOverridenFile("Magic"); if (filePath is null) { Log.Warning($"[{nameof(UnitManager_ReadCSV_MagicData)}] File not found: Magic.json"); return; } Int32 language = StWorkProxy.CurrentLanguage; MagicData[] magicList = __instance.magicData; foreach (Reference <TransifexEntry> pair in PrepareTexts(filePath).Enumerate()) { String text = pair.Value.Text; MagicDataId reference = MagicDataId.Parse(pair.Key); MagicData magic = magicList[reference.Id]; switch (reference.Property) { case "Name": magic.name[language] = text; break; case "Description": magic.description[language] = text; break; default: throw new NotSupportedException(reference.ToString()); } } Log.Message($"[{nameof(UnitManager_ReadCSV_MagicData)}] Loaded: Magic.json"); } catch (Exception ex) { Log.Error(ex, $"[{nameof(UnitManager_ReadCSV_MagicData)}] Failed to load Magic.json"); } }
void ChangeMagic(int id) { if (id >= SaveMagic.saveMagic.Magics.Length) { id = 0; } else if (id < 0) { id = SaveMagic.saveMagic.Magics.Length - 1; } IdMmagic = id; magic = SaveMagic.saveMagic.Magics[IdMmagic]; if (magic.Type == (int)Magic.TypeMagic.Target) { Dot.GetComponent <Image>().color = Color.yellow; } else { Dot.GetComponent <Image>().color = Color.white; Dot.transform.GetChild(0).gameObject.SetActive(false); } }
public bool equipItem(int itemID, int slot) { ItemData.EQUIP equipType = ItemData.getItemType(itemID); int amount = player.getInventory().getAmountInSlot(slot); bool stackable = ItemData.forId(itemID).isStackable(); bool twoHanded = ItemData.isTwoHanded(itemID); if (equipType == ItemData.EQUIP.NOTHING) { player.getPackets().sendMessage("Unable to find an item slot for item : " + itemID + " , please report this to a staff member."); return(false); } if (duelRuleActive(equipType)) { return(true); } if (twoHanded) { if (player.getInventory().getTotalFreeSlots() < getNeeded2HSlots()) { player.getPackets().sendMessage("Not enough space in your inventory."); return(false); } } if (!player.getInventory().deleteItem(itemID, slot, amount)) { return(false); } if (twoHanded && getItemInSlot(ItemData.EQUIP.SHIELD) != -1) { if (!unequipItem(ItemData.EQUIP.SHIELD)) { return(false); } } if (equipType == ItemData.EQUIP.SHIELD) { if (getItemInSlot(ItemData.EQUIP.WEAPON) != -1) { if (ItemData.isTwoHanded(slots[3].getItemId())) { if (!unequipItem(ItemData.EQUIP.WEAPON)) { return(false); } } } } int equipSlot = Convert.ToInt32(equipType); if (slots[equipSlot].getItemId() != itemID && slots[equipSlot].getItemId() > 0) { if (!player.getInventory().addItem(slots[equipSlot].getItemId(), slots[equipSlot].getItemAmount(), slot)) { return(false); } if (equipType == ItemData.EQUIP.HAT) { RuneCraft.toggleRuin(player, slots[equipSlot].getItemId(), false); if (RuneCraft.getTiaraIndex(itemID) != -1) // switching from tiara to tiara. { RuneCraft.toggleRuin(player, itemID, true); } } } else if (stackable && slots[equipSlot].getItemId() == itemID) { amount = slots[equipSlot].getItemAmount() + amount; } else if (slots[equipSlot].getItemId() != -1) { player.getInventory().addItem(slots[equipSlot].getItemId(), slots[equipSlot].getItemAmount(), slot); } slots[equipSlot].setItemId(itemID); slots[equipSlot].setItemAmount(amount); player.getPackets().refreshEquipment(); player.getUpdateFlags().setAppearanceUpdateRequired(true); if (equipType == ItemData.EQUIP.HAT) { RuneCraft.toggleRuin(player, itemID, RuneCraft.wearingTiara(player)); } if (equipType == ItemData.EQUIP.WEAPON) { setWeapon(); MagicData.cancelAutoCast(player, true); } refreshBonuses(); player.setEntityFocus(65535); return(true); }
void Start() { Cam = Camera.main; magic = SaveMagic.saveMagic.Magics[IdMmagic]; Cursor.visible = false; }