/// <summary> /// Create a player creature at position pos and set direction to direction. /// </summary> /// <returns></returns> public Creature CreatePlayer(Vector3 pos, CreatureDirection direction, bool buff = false, bool skill = false) { var node = Level.current.startPos; var info = modulePlayer.BuildPlayerInfo(-1, buff, skill); var player = Creature.Create(info, pos, true, PLAYER_OBJECT_NAME, modulePlayer.name_); player.roleId = modulePlayer.id_; player.roleProto = modulePlayer.proto; player.direction = direction; Util.AddChild(node, player.transform, true); CharacterEquip.ChangeCloth(player, moduleEquip.currentDressClothes); m_playerPosition = player.position; m_playerRotation = player.eulerAngles; m_playerScale = player.localScale; var visible = ChildIsVisible(player.name); player.gameObject.SetActive(visible); if (visible) { Level.SetDOFFocusTarget(player.transform); } return(player); }
public Vector3 SimulateMotion(float time, CreatureDirection dir, Vector3_ origin) { if (!m_motion || m_motionFrame.x < 1) { return(stateMachine.creature.position_); } if (time < 0) { time = 0; } var itime = (int)(time * 1000); var frame = itime / 33; var prog = (itime % 33) / 33.0; var idx = (int)m_motionFrame.x + frame; idx = Mathd.Clamp(idx, (int)m_motionFrame.x, (int)m_motionFrame.y); var next = m_motion.points[idx]; var prev = m_motion.points[idx - 1]; var tar = (Vector3_.Lerp(prev, next, prog) - m_motion.points[0]) * 0.01; tar = new Vector3_(dir == CreatureDirection.BACK ? -tar.z : tar.z, tar.y, -tar.x) + origin; if (tar.y < 0) { tar.y = 0; } return(tar); }
/// <summary> /// Create a creature at position pos and set direction to direction from creature info. /// </summary> /// <returns></returns> public Creature Create(CreatureInfo info, Vector3 pos, CreatureDirection direction) { var node = Level.current.startPos; var creature = Creature.Create(info, pos, false, info.name); creature.direction = direction; Util.AddChild(node, creature.transform, true); return(creature); }
public Creature CreatePlayer(PMatchProcessInfo pi, Vector3 pos, CreatureDirection direction, bool buff = false, bool skill = false) { var node = Level.current.startPos; var info = modulePlayer.BuildPlayerInfo(pi, buff, skill); var creature = Creature.Create(info, pos, false, pi.roleId + ":" + pi.roleName); creature.roleId = pi.roleId; creature.roleProto = pi.roleProto; creature.direction = direction; Util.AddChild(node, creature.transform, true); CharacterEquip.ChangeCloth(creature, pi.fashion); return(creature); }
public Creature CreateSceneActor(int rMonsterId, Vector3_ rPos, CreatureDirection rDir, int rGroup, int rLevel) { MonsterCreature actor = MonsterCreature.CreateMonster(rMonsterId, rGroup, rLevel, rPos, Vector3_.zero); if (!actor) { return(null); } actor.isBoss = false; actor.enabledAndVisible = true; actor.invincibleCount = int.MaxValue; actor.behaviour.hitCollider.isTrigger = false; actor.checkEdge = false; actor.SetHealthBarVisible(false); actor.forceDirection = (int)rDir; return(actor); }
/// <summary> /// Check direction is same as check /// check is negative means left, positive means right, zero always return true /// </summary> /// <param name="dir"></param> /// <returns></returns> public static bool SameAs(this CreatureDirection dir, int check) { return(check == 0 || dir == CreatureDirection.BACK && check < 0 || dir == CreatureDirection.FORWARD && check > 0); }
/// <summary> /// Convert direction to int /// -1 = BACK 1 = RIGHT 0 = ERROR /// </summary> /// <param name="dir"></param> /// <returns></returns> public static int ToInt(this CreatureDirection dir) { return(dir == CreatureDirection.BACK ? -1 : dir == CreatureDirection.FORWARD ? 1 : 0); }
public static CreatureDirection Inverse(this CreatureDirection dir) { return(dir == CreatureDirection.BACK ? CreatureDirection.FORWARD : CreatureDirection.BACK); }