Esempio n. 1
0
    /// <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);
    }
Esempio n. 2
0
    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);
    }
Esempio n. 3
0
    /// <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);
    }
Esempio n. 4
0
    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);
    }
Esempio n. 5
0
    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);
    }
Esempio n. 6
0
 /// <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);
 }
Esempio n. 7
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);
 }
Esempio n. 8
0
 public static CreatureDirection Inverse(this CreatureDirection dir)
 {
     return(dir == CreatureDirection.BACK ? CreatureDirection.FORWARD : CreatureDirection.BACK);
 }