void InputKeyBoardControl()
    {
        if (Input.GetKeyDown(KeyCode.UpArrow) || Input.GetKeyDown(KeyCode.W))
        {
            CurrentDir = eDir.UP;
            moveVector = Vector3.up;
        }

        if (Input.GetKeyDown(KeyCode.DownArrow) || Input.GetKeyDown(KeyCode.S))
        {
            CurrentDir = eDir.DOWN;
            moveVector = Vector3.down;
        }

        if (Input.GetKeyDown(KeyCode.LeftArrow) || Input.GetKeyDown(KeyCode.A))
        {
            CurrentDir = eDir.LEFT;
            moveVector = Vector3.left;
        }

        if (Input.GetKeyDown(KeyCode.RightArrow) || Input.GetKeyDown(KeyCode.D))
        {
            CurrentDir = eDir.RIGHT;
            moveVector = Vector3.right;
        }
    }
示例#2
0
        private void GetDefaultVertices(eDir s, double scale, out VertexT2dN3dV3d first, out VertexT2dN3dV3d second, out VertexT2dN3dV3d third)
        {
            VertexT2dN3dV3d t1 = new VertexT2dN3dV3d(),
                            t2 = new VertexT2dN3dV3d(),
                            t3 = new VertexT2dN3dV3d();

            switch (s)
            {
            case eDir.FrontTopRight:
                t1 = new VertexT2dN3dV3d(new Vector2d(0.5, 1.0), Vector3d.UnitY, Vector3d.UnitY * scale);
                t2 = new VertexT2dN3dV3d(new Vector2d(0.0, 0.0), Vector3d.UnitZ, Vector3d.UnitZ * scale);
                t3 = new VertexT2dN3dV3d(new Vector2d(0.5, 0.0), Vector3d.UnitX, Vector3d.UnitX * scale);
                break;

            case eDir.FrontBottomRight:
                t1 = new VertexT2dN3dV3d(new Vector2d(0.5, 0.0), Vector3d.UnitX, Vector3d.UnitX * scale);
                t2 = new VertexT2dN3dV3d(new Vector2d(0.0, 0.0), Vector3d.UnitZ, Vector3d.UnitZ * scale);
                t3 = new VertexT2dN3dV3d(new Vector2d(0.5, 1.0), -Vector3d.UnitY, -Vector3d.UnitY * scale);
                break;

            case eDir.FrontBottomLeft:
                t1 = new VertexT2dN3dV3d(new Vector2d(0.5, 0.0), Vector3d.UnitX, Vector3d.UnitX * scale);
                t2 = new VertexT2dN3dV3d(new Vector2d(0.5, 1.0), -Vector3d.UnitY, -Vector3d.UnitY * scale);
                t3 = new VertexT2dN3dV3d(new Vector2d(1.0, 0.0), -Vector3d.UnitZ, -Vector3d.UnitZ * scale);
                break;

            case eDir.FrontTopLeft:
                t1 = new VertexT2dN3dV3d(new Vector2d(1.0, 0.0), -Vector3d.UnitZ, -Vector3d.UnitZ * scale);
                t2 = new VertexT2dN3dV3d(new Vector2d(0.5, 1.0), Vector3d.UnitY, Vector3d.UnitY * scale);
                t3 = new VertexT2dN3dV3d(new Vector2d(0.5, 0.0), Vector3d.UnitX, Vector3d.UnitX * scale);
                break;

            case eDir.BackTopRight:
                t1 = new VertexT2dN3dV3d(new Vector2d(0.5, 1.0), Vector3d.UnitY, Vector3d.UnitY * scale);
                t2 = new VertexT2dN3dV3d(new Vector2d(0.0, 1.0), -Vector3d.UnitX, -Vector3d.UnitX * scale);
                t3 = new VertexT2dN3dV3d(new Vector2d(0.0, 0.0), Vector3d.UnitZ, Vector3d.UnitZ * scale);
                break;

            case eDir.BackBottomRight:
                t1 = new VertexT2dN3dV3d(new Vector2d(0.5, 1.0), -Vector3d.UnitY, -Vector3d.UnitY * scale);
                t2 = new VertexT2dN3dV3d(new Vector2d(0.0, 0.0), Vector3d.UnitZ, Vector3d.UnitZ * scale);
                t3 = new VertexT2dN3dV3d(new Vector2d(0.0, 1.0), -Vector3d.UnitX, -Vector3d.UnitX * scale);
                break;

            case eDir.BackBottomLeft:
                t1 = new VertexT2dN3dV3d(new Vector2d(0.5, 1.0), -Vector3d.UnitY, -Vector3d.UnitY * scale);
                t2 = new VertexT2dN3dV3d(new Vector2d(1.0, 1.0), -Vector3d.UnitX, -Vector3d.UnitX * scale);
                t3 = new VertexT2dN3dV3d(new Vector2d(1.0, 0.0), -Vector3d.UnitZ, -Vector3d.UnitZ * scale);
                break;

            case eDir.BackTopLeft:
                t1 = new VertexT2dN3dV3d(new Vector2d(0.5, 1.0), Vector3d.UnitY, Vector3d.UnitY * scale);
                t2 = new VertexT2dN3dV3d(new Vector2d(1.0, 0.0), -Vector3d.UnitZ, -Vector3d.UnitZ * scale);
                t3 = new VertexT2dN3dV3d(new Vector2d(1.0, 1.0), -Vector3d.UnitX, -Vector3d.UnitX * scale);
                break;
            }
            first  = t1;
            second = t2;
            third  = t3;
        }
示例#3
0
    private void SetRotation(eDir dir)
    {
        switch (dir)
        {
        case eDir.UP:
            transform.rotation = Quaternion.Euler(0, 0, 0);
            return;

        case eDir.DOWN:
            transform.rotation = Quaternion.Euler(0, 180, 0);
            return;

        case eDir.LEFT:
            transform.rotation = Quaternion.Euler(0, 270, 0);
            return;

        case eDir.RIGHT:
            transform.rotation = Quaternion.Euler(0, 90, 0);
            return;

        default:
            Debug.Log("ERROR SetRotation");
            return;
        }
    }
        /// <summary>
        /// See ElevatorModule_IF.cs for explanation
        /// </summary>
        /// <param name="maxFloor"></param>
        public void Update()
        {
            m_floorPrev = m_floorCur;

            if (m_req == eDir.NONE)
            {
                return;
            }
            if (m_req == eDir.DOWN)
            {
                m_floorCur--;
            }
            if (m_req == eDir.UP)
            {
                m_floorCur++;
            }

            m_req = eDir.NONE;

            if (m_floorCur > m_maxFloor)
            {
                m_floorCur = m_maxFloor;
                return;
            }
            if (m_floorCur < 0)
            {
                m_floorCur = 0;
                return;
            }

            m_cntMove++;
        }
示例#5
0
    private void OnEnable()
    {
        mDir      = Vector3.zero;
        mDirState = eDir.None;

        Camera.main.GetComponent <CameraCtrl>().StartCameraMoveUpdate(mMyTrans);
    }
示例#6
0
    public void StartAttack(eDir dir)
    {
        // 方向から対象Idを取得する
        Vector2 targetPos = _MapManager.GetGridPosFromDir(transform.position, dir);
        int?    targetId  = _GameManager.GetCharacterId(targetPos);

        if (targetId == null)
        {
            Debug.Log("ERROR targetId");
            return;
        }

        // IDからパラメータを取得する
        CharacterParam?targetParam = _GameManager.GetCharacterParamFromId((int)targetId);

        if (targetParam == null)
        {
            Debug.Log("ERROR targetParam");
            return;
        }

        // 自身のパラメータと対象のパラメータからダメージを計算する
        int damage = CalculationDamage(_Param, (CharacterParam)targetParam);

        // アニメーションさせる
        _Attack.StartAnimation();

        // ダメージの表示をする
        _MessageMan.AddMessage("プレイヤー" + " は " + "スライム" + " に " + damage + " のダメージを与えた ");
    }
示例#7
0
    public override void Interaction(Unit u)
    {
        if (bExist == false)
        {
            return;
        }
        if ((int)m_vcPos.x != (int)u.m_vcPos.x || (int)m_vcPos.y != (int)u.m_vcPos.y)
        {
            return;
        }
        if (u.LastMove == eDir.None)
        {
            return;
        }

        eDir rollBack = eDir.None;

        switch (u.LastMove)
        {
        case eDir.Left: rollBack = eDir.Right; break;

        case eDir.Top: rollBack = eDir.Bottom; break;

        case eDir.Right: rollBack = eDir.Left; break;

        case eDir.Bottom: rollBack = eDir.Top; break;
        }

        u.Move(rollBack);
        u.Render();

        Render();
    }
示例#8
0
    public override void Interaction(Unit u)
    {
        if (bExist == false)
        {
            return;
        }
        if (m_nX != (int)u.m_vcPos.x || m_nY != (int)u.m_vcPos.y)
        {
            return;
        }
        if (u.LastMove == eDir.None)
        {
            return;
        }

        switch (u.LastMove)
        {
        case eDir.Left: LastMove = eDir.Left; m_nX--; break;

        case eDir.Top: LastMove = eDir.Top; m_nY--; break;

        case eDir.Right: LastMove = eDir.Right; m_nX++; break;

        case eDir.Bottom: LastMove = eDir.Bottom; m_nY++; break;
        }

        Render();
    }
示例#9
0
    virtual public void Move(eDir a_eDir)
    {
        switch (a_eDir)
        {
        case eDir.Left:
        {
            m_vcPos.x -= m_vcDir.x * m_fSpeed;
        }
        break;

        case eDir.Right:
        {
            m_vcPos.x += m_vcDir.x * m_fSpeed;
        }
        break;

        case eDir.Top:
        {
            m_vcPos.y -= m_vcDir.y * m_fSpeed;
        }

        break;

        case eDir.Bottom:
        {
            m_vcPos.y += m_vcDir.y * m_fSpeed;
        }
        break;
        }
    }
示例#10
0
        public SlicedSphere(double radius, Vector3d offset, eSubdivisions subdivs, eDir[] sides, bool useDL)
            : base(useDL)
        {
            double Diameter = radius;

            PrimitiveMode = OpenTK.Graphics.OpenGL.BeginMode.Triangles;
            if (sides[0] == eDir.All)
            {
                sides = new eDir[] { eDir.FrontTopRight,
                                     eDir.FrontBottomRight,
                                     eDir.FrontBottomLeft,
                                     eDir.FrontTopLeft,
                                     eDir.BackTopRight,
                                     eDir.BackBottomRight,
                                     eDir.BackBottomLeft,
                                     eDir.BackTopLeft, };
            }

            VertexArray = new VertexT2dN3dV3d[sides.Length * 3];
            IndexArray  = new uint[sides.Length * 3];
            uint counter = 0;

            foreach (eDir s in sides)
            {
                GetDefaultVertices(s, Diameter, out VertexArray[counter + 0], out VertexArray[counter + 1], out VertexArray[counter + 2]);
                IndexArray[counter + 0] = counter + 0;
                IndexArray[counter + 1] = counter + 1;
                IndexArray[counter + 2] = counter + 2;
                counter += 3;
            }

            if (subdivs != eSubdivisions.Zero)
            {
                for (int s = 0; s < (int)subdivs; s++)
                {
                    #region Assemble Chunks and convert to Arrays
                    List <Chunk> AllChunks = new List <Chunk>();
                    for (uint i = 0; i < IndexArray.Length; i += 3)
                    {
                        Chunk chu;
                        Subdivide(Diameter,
                                  ref VertexArray[IndexArray[i + 0]],
                                  ref VertexArray[IndexArray[i + 1]],
                                  ref VertexArray[IndexArray[i + 2]],
                                  out chu);
                        AllChunks.Add(chu);
                    }

                    Chunk.GetArray(ref AllChunks, out VertexArray, out IndexArray);
                    AllChunks.Clear();
                    #endregion Assemble Chunks and convert to Arrays
                }
            }

            for (int i = 0; i < VertexArray.Length; i++)
            {
                Vector3d.Add(ref VertexArray[i].Position, ref offset, out VertexArray[i].Position);
            }
        }
示例#11
0
    public void ChangeRoom(eDir a_eDir)
    {
        int nKey = m_refActiveRoom.nCoordKye;

        nKey += a_eDir.GetKeyGap();

        ChangeRoom(nKey);
    }
示例#12
0
 private bool CanMoveAction(eDir dir)
 {
     if (_Actor.CanMove(transform.position, dir))
     {
         return(true);
     }
     return(false);
 }
示例#13
0
    public void StartAnime(eDir dir)
    {
        Vector3 targetPos = ConvertActionToTargetPosition(dir);

        StartPos    = transform.position;
        EndPos      = transform.position + targetPos;
        ElapsedTime = 0;
    }
示例#14
0
        public static void RecursiveCreateRoom(ref ST_Room a_stRoom, eDir a_eDir = eDir.None)
        {
            if (a_eDir != eDir.None)
            {
                a_stRoom.eOpenDir |= a_eDir;
            }

            // 위
            if ((UnityEngine.Random.Range(0, 1.0f) > 0.5f))
            {
                var room = AddRoom(a_stRoom.nX, a_stRoom.nY + 1);

                if (room != null)
                {
                    a_stRoom.eOpenDir |= eDir.Top;
                    RecursiveCreateRoom(ref room, eDir.Bottom);
                }
            }

            // 왼쪽
            if ((a_stRoom.nX > 0) &&
                (UnityEngine.Random.Range(0, 1.0f) > 0.5f))
            {
                var room = AddRoom(a_stRoom.nX - 1, a_stRoom.nY);

                if (room != null)
                {
                    a_stRoom.eOpenDir |= eDir.Left;
                    RecursiveCreateRoom(ref room, eDir.Right);
                }
            }

            // 오른쪽
            if ((UnityEngine.Random.Range(0, 1.0f) > 0.5f))
            {
                var room = AddRoom(a_stRoom.nX + 1, a_stRoom.nY);

                if (room != null)
                {
                    a_stRoom.eOpenDir |= eDir.Right;
                    RecursiveCreateRoom(ref room, eDir.Left);
                }
            }

            // 아래
            if ((a_stRoom.nY > 0) &&
                (UnityEngine.Random.Range(0, 1.0f) > 0.5f))
            {
                var room = AddRoom(a_stRoom.nX, a_stRoom.nY - 1);

                if (room != null)
                {
                    a_stRoom.eOpenDir |= eDir.Bottom;
                    RecursiveCreateRoom(ref room, eDir.Top);
                }
            }
        }
示例#15
0
 public SMPathOut this[eDir dir]
 {
     get
     {
         return(_pathList[(int)dir]);
     }
     set
     {
         _pathList[(int)dir] = value;
     }
 }
示例#16
0
    IEnumerator co_AfterRotProcess(eDir ChangeDir, float angle)
    {
        if (ChangeDir == eDir.Left) //오른쪽
        {
            angle     = -90;
            AngleSafe = angle;

            transform.localScale = new Vector3(-2, 2, 1);
            while (true)
            {
                yield return(null);

                //if (mIsAttacking == false)
                //{
                angle    += .5f;
                AngleSafe = angle;

                RotateObject.transform.eulerAngles = new Vector3(0, 0, angle);
                if (angle == 0)
                {
                    break;
                }
                //}
            }
            DirState = ChangeDir;
            isRot    = false;
        }
        else if (ChangeDir == eDir.Right) //왼쪽
        {
            angle     = 90;
            AngleSafe = angle;

            transform.localScale = new Vector3(2, 2, 1);
            while (true)
            {
                yield return(null);

                //if (mIsAttacking == false)
                //{
                angle    -= .5f;
                AngleSafe = angle;

                RotateObject.transform.eulerAngles = new Vector3(0, 0, angle);
                if (angle == 0)
                {
                    break;
                }
                //}
            }
            DirState = ChangeDir;
            isRot    = false;
        }
        StartCoroutine("WalkAnimation");
    }
示例#17
0
 public Sprite GetCurrentSprite(eDir dir)
 {
     if (!IsAnimated && m_charsetType == eCharSetType.RPG_Maker_XP)
     {
         return(m_spriteXpIdleFrames[(int)dir]);
     }
     else
     {
         return(m_spriteFrames[(int)((int)dir * AnimFrames + CurrentFrame)]);
     }
 }
示例#18
0
 public Sprite GetCurrentSprite(eDir dir)
 {
     if (!IsAnimated)
     {
         return(m_spriteXpIdleFrames[(int)dir]);
     }
     else
     {
         return(m_spriteFrames[(int)(int)dir * AnimFrames + CurrentFrame]);
     }
 }
示例#19
0
 void Rot(eDir ChangeDir)
 {
     if (isRot)
     {
         return;
     }
     isRot = true;
     StartCoroutine(co_Rot(ChangeDir));
     StopCoroutine("WalkAnimation");
     Body.sprite = BodySprite[0];
 }
示例#20
0
 // 攻撃メソッド
 public void Attack(eDir dir)
 {
     if (_GameManager.GameSequence == eSequence.KEY_INPUT)
     {
         if (CanAttackAction(dir))
         {
             _GameManager.GameSequence = eSequence.ACT_BEGIN;
             _Actor.StartAttack(dir);
         }
     }
 }
示例#21
0
    private void ActionUpdate(eDir dir)
    {
        if (GameSequence == eSequence.KEY_INPUT)
        {
            _Player.Move(dir);
            OldDir = dir;
            // キャラクターの移動アニメーションからカメラをUpdateする必要がある
            //_Camera.Move();

            // _Player.Attack( dir );
        }
    }
示例#22
0
        public void Clear()
        {
            nX = 0;
            nY = 0;

            nRoomID = 0;
            eState  = eRoomState.None;

            eExistNPC = eNPC.None;
            eOpenDir  = eDir.None;
            bPortal   = false;
        }
示例#23
0
    public override int Update(float a_fDelta)
    {
        eDir eDir  = eDir.None;
        eDir eDirM = eDir.None;

        Console.SetCursorPosition(30, 40);
        Console.WriteLine(a_fDelta);

        if (eKey.Left.IsKeyDown() == true)
        {
            eDir = eDir.Left;
        }
        else if (eKey.Right.IsKeyDown() == true)
        {
            eDir = eDir.Right;
        }

        if (eKey.Down.IsKeyDown() == true)
        {
            eDir = eDir.Bottom;
        }
        else if (eKey.Up.IsKeyDown() == true)
        {
            eDir = eDir.Top;
        }

        if (eKey.Z.IsKeyDown() == true)
        {
            if (user.activeZ == false)
            {
                return(0);
            }
            foreach (var temp in monsters)
            {
                user.ActiveSkill(eSkillType.Fire, temp);
            }
            s.Update(user, a_fDelta);
        }


        if (eDir != eDir.None)
        {
            foreach (var temp in monsters)
            {
                eDirM = (eDir)ran.Next();
                temp.Move(eDirM);
            }
            user.Update(eDir);
        }

        return(0);
    }
示例#24
0
    public bool IsStair(Vector3 CurrentPos, eDir dir)
    {
        int Panel = getNextPanel(CurrentPos, dir);

        if (Panel == (int)eMapElement.STAIRS)
        {
            return(true);
        }
        else
        {
            return(false);
        }
    }
示例#25
0
    // 移動先が敵キャラクターか判定する
    public bool CanAttack(Vector3 CurrentPos, eDir dir)
    {
        int Panel = getNextPanel(CurrentPos, dir);

        if (Panel == (int)eMapElement.ENEMY)
        {
            return(true);
        }
        else
        {
            return(false);
        }
    }
示例#26
0
    void Move(Vector3 DirectionPos, Vector3 dir, eDir ChangeDir = eDir.Right, float EnemyDirScaleValue = -2)
    {
        float dis = Vector2.Distance(transform.position, DirectionPos);

        if (dis >= DetectRange)
        {
            transform.Translate(dir * Speed * Time.deltaTime);
        }
        else //TurnPoint에 도착했다면
        {
            Rot(ChangeDir);
        }
    }
示例#27
0
    /// <summary>
    /// Y轴方向弹簧效果
    /// </summary>
    /// <param name="target"></param>
    /// <param name="init_dir">初始方向</param>
    /// <param name="speed">震动速度</param>
    /// <param name="altitude">振幅</param>
    /// <param name="attenuation">振幅衰减速度</param>
    /// <returns></returns>
    public static SpringTransformer springY(GameObject target, eDir init_dir, float speed, float altitude, float attenuation)
    {
        SpringTransformer transformer = new SpringTransformer();

        transformer.m_InitPosition   = target.transform.localPosition;
        transformer.m_Dir            = init_dir;
        transformer.m_Speed          = speed;
        transformer.m_Altitude       = altitude;
        transformer.m_Attenuation    = attenuation;
        transformer.m_fTransformTime = float.MaxValue;
        transformer.target           = target;
        return(transformer);
    }
示例#28
0
 public eDir this[SMPathOut pathOutCheck]
 {
     get
     {
         for (eDir dir = eDir.Up; dir < eDir.Num; dir++)
         {
             if (object.ReferenceEquals(this[dir], pathOutCheck))
             {
                 return(dir);
             }
         }
         return(eDir.Num);
     }
 }
示例#29
0
    private void ResetDir(eDir dir)
    {
        switch (dir)
        {
        case eDir.Left:
            transform.localScale = new Vector3(2, 2, 1);
            break;

        case eDir.Right:
            transform.localScale = new Vector3(-2, 2, 1);
            break;
        }
        RotateObject.transform.eulerAngles = new Vector3(0, 0, AngleSafe);
    }
示例#30
0
    public override int Update(float a_fDelta)
    {
        eDir eDir = eDir.None;

        if (eKey.Left.IsKeyDown() == true)
        {
            eDir = eDir.Left;
        }
        else if (eKey.Right.IsKeyDown() == true)
        {
            eDir = eDir.Right;
        }

        if (eKey.Down.IsKeyDown() == true)
        {
            eDir = eDir.Bottom;
        }
        else if (eKey.Up.IsKeyDown() == true)
        {
            eDir = eDir.Top;
        }

        if (eKey.Z.IsKeyDown() == true)
        {
            if (user.activeZ == false)
            {
                return(0);
            }
            foreach (var temp in monsters)
            {
                user.ActiveSkill(eSkillType.Fire, temp);
            }
            user.ActiveSkill(eSkillType.Fire, Boss);
            s.Update(user, a_fDelta);
        }

        if (eDir != eDir.None)
        {
            user.Update(eDir);
            Define.SaveStatus(user);
        }

        if (Boss.bExist == false)
        {
            return(2);
        }

        return(0);
    }
示例#31
0
 public Projectile(Point pos, float speed, eDir dir, Vehicle owner)
 {
     throw new NotImplementedException();
 }
示例#32
0
 private void GetDefaultVertices( eDir s, double scale, out VertexT2dN3dV3d first, out VertexT2dN3dV3d second, out VertexT2dN3dV3d third )
 {
     VertexT2dN3dV3d t1 = new VertexT2dN3dV3d(),
                     t2 = new VertexT2dN3dV3d(),
                     t3 = new VertexT2dN3dV3d();
     switch ( s )
     {
     case eDir.FrontTopRight:
         t1 = new VertexT2dN3dV3d( new Vector2d( 0.5, 1.0 ), Vector3d.UnitY, Vector3d.UnitY * scale );
         t2 = new VertexT2dN3dV3d( new Vector2d( 0.0, 0.0 ), Vector3d.UnitZ, Vector3d.UnitZ * scale );
         t3 = new VertexT2dN3dV3d( new Vector2d( 0.5, 0.0 ), Vector3d.UnitX, Vector3d.UnitX * scale );
         break;
     case eDir.FrontBottomRight:
         t1 = new VertexT2dN3dV3d( new Vector2d( 0.5, 0.0 ), Vector3d.UnitX, Vector3d.UnitX * scale );
         t2 = new VertexT2dN3dV3d( new Vector2d( 0.0, 0.0 ), Vector3d.UnitZ, Vector3d.UnitZ * scale );
         t3 = new VertexT2dN3dV3d( new Vector2d( 0.5, 1.0 ), -Vector3d.UnitY, -Vector3d.UnitY * scale );
         break;
     case eDir.FrontBottomLeft: 
         t1 = new VertexT2dN3dV3d( new Vector2d( 0.5, 0.0 ), Vector3d.UnitX, Vector3d.UnitX * scale );
         t2 = new VertexT2dN3dV3d( new Vector2d( 0.5, 1.0 ), -Vector3d.UnitY, -Vector3d.UnitY * scale );
         t3 = new VertexT2dN3dV3d( new Vector2d( 1.0, 0.0 ), -Vector3d.UnitZ, -Vector3d.UnitZ * scale );
         break;
     case eDir.FrontTopLeft:
         t1 = new VertexT2dN3dV3d( new Vector2d( 1.0, 0.0 ), -Vector3d.UnitZ, -Vector3d.UnitZ * scale );
         t2 = new VertexT2dN3dV3d( new Vector2d( 0.5, 1.0 ), Vector3d.UnitY, Vector3d.UnitY * scale );
         t3 = new VertexT2dN3dV3d( new Vector2d( 0.5, 0.0 ), Vector3d.UnitX, Vector3d.UnitX * scale );
         break;
     case eDir.BackTopRight:
         t1 = new VertexT2dN3dV3d( new Vector2d( 0.5, 1.0 ), Vector3d.UnitY, Vector3d.UnitY * scale );
         t2 = new VertexT2dN3dV3d( new Vector2d( 0.0, 1.0 ), -Vector3d.UnitX, -Vector3d.UnitX * scale );
         t3 = new VertexT2dN3dV3d( new Vector2d( 0.0, 0.0 ), Vector3d.UnitZ, Vector3d.UnitZ * scale );
         break;
     case eDir.BackBottomRight:
         t1 = new VertexT2dN3dV3d( new Vector2d( 0.5, 1.0 ), -Vector3d.UnitY, -Vector3d.UnitY * scale );
         t2 = new VertexT2dN3dV3d( new Vector2d( 0.0, 0.0 ), Vector3d.UnitZ, Vector3d.UnitZ * scale );
         t3 = new VertexT2dN3dV3d( new Vector2d( 0.0, 1.0 ), -Vector3d.UnitX, -Vector3d.UnitX * scale );
         break;
     case eDir.BackBottomLeft:
         t1 = new VertexT2dN3dV3d( new Vector2d( 0.5, 1.0 ), -Vector3d.UnitY, -Vector3d.UnitY * scale );
         t2 = new VertexT2dN3dV3d( new Vector2d( 1.0, 1.0 ), -Vector3d.UnitX, -Vector3d.UnitX * scale );
         t3 = new VertexT2dN3dV3d( new Vector2d( 1.0, 0.0 ), -Vector3d.UnitZ, -Vector3d.UnitZ * scale );
         break;
     case eDir.BackTopLeft:
         t1 = new VertexT2dN3dV3d( new Vector2d( 0.5, 1.0 ), Vector3d.UnitY, Vector3d.UnitY * scale );
         t2 = new VertexT2dN3dV3d( new Vector2d( 1.0, 0.0 ), -Vector3d.UnitZ, -Vector3d.UnitZ * scale );
         t3 = new VertexT2dN3dV3d( new Vector2d( 1.0, 1.0 ), -Vector3d.UnitX, -Vector3d.UnitX * scale );
         break;
     }
     first = t1;
     second = t2;
     third = t3;
 }
示例#33
0
        public SlicedSphere( double radius, Vector3d offset, eSubdivisions subdivs, eDir[] sides, bool useDL )
            : base( useDL )
        {
            double Diameter = radius;

            PrimitiveMode = OpenTK.Graphics.OpenGL.BeginMode.Triangles;

            if ( sides[0] == eDir.All )
            {
                sides = new eDir[] {  eDir.FrontTopRight,
            eDir.FrontBottomRight,
            eDir.FrontBottomLeft,
            eDir.FrontTopLeft,
            eDir.BackTopRight,
            eDir.BackBottomRight,
            eDir.BackBottomLeft,
            eDir.BackTopLeft,};
            }

            VertexArray = new VertexT2dN3dV3d[sides.Length * 3];
            IndexArray = new uint[sides.Length * 3];

            uint counter = 0;
            foreach ( eDir s in sides )
            {
                GetDefaultVertices( s, Diameter, out VertexArray[counter + 0], out VertexArray[counter + 1], out VertexArray[counter + 2] );
                IndexArray[counter + 0] = counter + 0;
                IndexArray[counter + 1] = counter + 1;
                IndexArray[counter + 2] = counter + 2;
                counter += 3;
            }

            if ( subdivs != eSubdivisions.Zero )
            {

                for ( int s = 0; s < (int)subdivs; s++ )
                {
                    #region Assemble Chunks and convert to Arrays
                    List<Chunk> AllChunks = new List<Chunk>();
                    for ( uint i = 0; i < IndexArray.Length; i += 3 )
                    {
                        Chunk chu;
                        Subdivide( Diameter,
                                   ref VertexArray[IndexArray[i + 0]],
                                   ref VertexArray[IndexArray[i + 1]],
                                   ref VertexArray[IndexArray[i + 2]],
                                   out chu );
                        AllChunks.Add( chu );
                    }

                    Chunk.GetArray( ref AllChunks, out VertexArray, out IndexArray );
                    AllChunks.Clear();
                    #endregion Assemble Chunks and convert to Arrays
                }
            }

            for (int i=0; i<VertexArray.Length;i++)
            {
                Vector3d.Add(ref VertexArray[i].Position, ref offset, out VertexArray[i].Position);
            }
        }
示例#34
0
 public Sprite GetCurrentSprite( eDir dir )
 {
     if( !IsAnimated && m_charsetType == eCharSetType.RPG_Maker_XP )
         return m_spriteXpIdleFrames[(int)dir];
     else
         return m_spriteFrames[(int)((int)dir * AnimFrames + CurrentFrame)];
 }
示例#35
0
 public Player(int ID, Point pos, float speed, eDir dir, int hitPoints, Weapon weapon)
 {
     throw new NotImplementedException();
 }
示例#36
0
 protected Vehicle(Point pos, float speed, eDir dir, int hitPoints, Projectile weapon)
 {
     throw new NotImplementedException();
 }
示例#37
0
 protected dynamicObject(Point pos, float speed, eDir dir)
 {
     throw new NotImplementedException();
 }
示例#38
0
 public Enemy(Point pos, float speed, eDir dir, int hitPoints, Weapon weapon)
 {
     throw new NotImplementedException();
 }