예제 #1
0
    protected bool DropToGround(ref Vector3 pos)
    {
        RaycastHit raycastHit;
        int        num  = 1235288065;
        int        num1 = 8454144;

        if (TerrainMeta.TopologyMap && (TerrainMeta.TopologyMap.GetTopology(pos) & 82048) != 0)
        {
            return(false);
        }
        if (TerrainMeta.HeightMap && TerrainMeta.Collision && !TerrainMeta.Collision.GetIgnore(pos, 0.01f))
        {
            float height = TerrainMeta.HeightMap.GetHeight(pos);
            pos.y = Mathf.Max(pos.y, height);
        }
        if (!TransformUtil.GetGroundInfo(pos, out raycastHit, 80f, num, null))
        {
            return(false);
        }
        if ((1 << (raycastHit.transform.gameObject.layer & 31) & num1) == 0)
        {
            return(false);
        }
        pos = raycastHit.point;
        return(true);
    }
예제 #2
0
        private void RegenerateInTeamHeroModels()
        {
            DespawnCharacter();
            for (int i = 0; i < 9; i++)
            {
                FormationPosition formationPosition = (FormationPosition)(i + 1);
                uint roleID = ManageHeroesProxy.instance.GetCharacterInstanceIDAt(formationPosition);
                //uint cachedRoleID = 0;
                //_cachedFormationDic.TryGetValue(formationPosition, out cachedRoleID);

                //if (roleID != cachedRoleID)
                //{
                TransformUtil.ClearChildren(roleModelRoots[i], true);
                if (!ManageHeroesProxy.instance.IsPositionEmpty(formationPosition))
                {
                    if (GameProxy.instance.IsPlayer(roleID))
                    {
                        PlayerInfo      playerInfo      = GameProxy.instance.PlayerInfo;
                        CharacterEntity characterEntity = CharacterEntity.CreatePlayerEntityAsUIElement(playerInfo, roleModelRoots[i], false, false);
                        _characters.Add(characterEntity);
                    }
                    else
                    {
                        HeroInfo   heroInfo   = HeroProxy.instance.GetHeroInfo(roleID);
                        HeroEntity heroEntity = CharacterEntity.CreateHeroEntityAsUIElement(heroInfo, roleModelRoots[i], false, false);
                        _characters.Add(heroEntity);
                    }
                }
                _cachedFormationDic.AddOrReplace(formationPosition, roleID);
                //}
                formationBaseImages[i].SetSprite(roleID > 0 || ManageHeroesProxy.instance.CurrentFormationTeamInfo.formationInfo.formationData.GetPosEnalbe(formationPosition) ? _formationOccupiedSprite : _formationNormalSprite);
                roleShadows[i].gameObject.SetActive(roleID > 0);
            }
        }
예제 #3
0
    // 设置庄家
    public void SetDealer(int player_pos)
    {
        Vector3[] dealerPos = Coordinate.GetDealerPosArray(maxCount);
        int       target    = GetPlayerPos(player_pos - 1);

        if (dealer == null)
        {
            string dealerPath = "Prefabs/Dealer";
            dealer = Instantiate(Resources.Load(dealerPath)) as GameObject;
            dealer.transform.parent        = desktop.transform;
            dealer.transform.localScale    = new Vector3(1, 1, 1);
            dealer.transform.localPosition = dealerPos[target];
            TransformUtil.SetWarpAnchor(dealer);
        }
        else
        {
            // 显示庄家
            dealer.SetActive(true);
            Sequence s = DOTween.Sequence();
            s.Append(dealer.transform.DOLocalMove(dealerPos[target], 1));
            s.AppendCallback(() =>
            {
                TransformUtil.ResetAnchor(dealer, dealerPos[target]);
                dealer.GetComponent <Image>().SetNativeSize();
                TransformUtil.SetWarpAnchor(dealer);
            });
        }
    }
    public void UpdateVisuals(int totalNumCards)
    {
        this.m_numCardsText.Text = this.m_numCards.ToString();
        this.m_amountText.Text   = this.m_amount.ToString();
        if (this.m_numGoldText != null)
        {
            if (this.m_numGoldCards > 0)
            {
                this.m_numGoldText.gameObject.SetActive(true);
                object[] args = new object[] { this.m_numGoldCards.ToString() };
                this.m_numGoldText.Text = GameStrings.Format("GLUE_MASS_DISENCHANT_NUM_GOLDEN_CARDS", args);
                TransformUtil.SetLocalPosX(this.m_numCardsText, 7.638979f);
                this.m_barFrameMesh.GetComponent <MeshFilter>().mesh = MassDisenchant.Get().m_rarityBarGoldMesh;
                this.m_barFrameMesh.material = MassDisenchant.Get().m_rarityBarGoldMaterial;
            }
            else
            {
                this.m_numGoldText.gameObject.SetActive(false);
                TransformUtil.SetLocalPosX(this.m_numCardsText, 2.902672f);
                this.m_barFrameMesh.GetComponent <MeshFilter>().mesh = MassDisenchant.Get().m_rarityBarNormalMesh;
                this.m_barFrameMesh.material = MassDisenchant.Get().m_rarityBarNormalMaterial;
            }
        }
        float num = (totalNumCards <= 0f) ? 0f : (((float)this.m_numCards) / ((float)totalNumCards));

        this.m_amountBar.GetComponent <Renderer>().material.SetFloat("_Percent", num);
    }
예제 #5
0
        public void Move(CollisionObject item, Matrix4 transform)
        {
            var worldTransform = item.WorldTransform;
            var from           = worldTransform.ExtractTranslation( );
            var to             = transform.ExtractTranslation( );

            var closestConvexResultCallback = new ClosestNotMeConvexResultCallback(item, from, to)
            {
                CollisionFilterGroup = ( CollisionFilterGroups )(CollisionGroup.Objects | CollisionGroup.Level)
            };

            World.ConvexSweepTest(( ConvexShape )item.CollisionShape, worldTransform, transform, closestConvexResultCallback);
            if (closestConvexResultCallback.HasHit)
            {
                Vector3 linVel;
                Vector3 angVel;
                TransformUtil.CalculateVelocity(worldTransform, transform, 1.0f, out linVel, out angVel);
                Matrix4 T;
                TransformUtil.IntegrateTransform(worldTransform, linVel, angVel,
                                                 closestConvexResultCallback.ClosestHitFraction, out T);
                item.WorldTransform = T;
            }
            else
            {
                item.WorldTransform = transform;
            }
        }
    private static void SaveSkinnedMesh(string savePath, string name, GameObject model, string[] extraTransformNames, Material[] mats)
    {
        var renderer = model.GetComponentInChildren <SkinnedMeshRenderer>(true);

        if (renderer == null)
        {
            return;
        }

        var data = ScriptableObject.CreateInstance <SkinnedMeshData>();

        var bones = renderer.bones;

        string[] bonePaths = new string[bones.Length];

        for (int i = 0; i < bones.Length; i++)
        {
            string bonePath = TransformUtil.GetTransformPath(model.transform, bones[i]);
            bonePaths[i] = bonePath;
        }

        data.bones = bonePaths;
        //data.materials = renderer.sharedMaterials;
        data.materials           = mats;
        data.mesh                = renderer.sharedMesh;
        data.extraTransformNames = extraTransformNames;

        AssetDatabase.CreateAsset(data, savePath);

        AssetImporter.GetAtPath(savePath).assetBundleName = string.Format("models/skin_{0}.bundle", name);
    }
예제 #7
0
        private void RefreshVIPDetail()
        {
            VIPData currentVIPData = VIPData.GetVIPData(_currentVIPLevel);

            VIPDetailTitleText.text = Localization.Get(currentVIPData.name);
            if (currentVIPData.IsMinLevelVIPData())
            {
                previousVIPDetailButton.gameObject.SetActive(false);
                nextVIPDetailButton.gameObject.SetActive(true);
            }
            else if (currentVIPData.IsMaxLevelVIPData())
            {
                previousVIPDetailButton.gameObject.SetActive(true);
                nextVIPDetailButton.gameObject.SetActive(false);
            }
            else
            {
                previousVIPDetailButton.gameObject.SetActive(true);
                nextVIPDetailButton.gameObject.SetActive(true);
            }
            LeanTween.value(vipDetailContent.gameObject, OnVIPDetailContentXUpdate, vipDetailContent.anchoredPosition.x, -_currentVIPLevel * vipPrivilegeDetailItemPrefab.GetComponent <LayoutElement>().preferredWidth, 0.25f);

            TransformUtil.ClearChildren(vipBenefitsItemsRoot, true);
            List <GameResData> benefitItemList = currentVIPData.benefitItemList;

            for (int i = 0, benefitItemCount = benefitItemList.Count; i < benefitItemCount; i++)
            {
                CommonRewardIcon rewardIcon = CommonRewardIcon.Create(vipBenefitsItemsRoot);
                rewardIcon.SetGameResData(benefitItemList[i]);
            }
            VIPBenefitsRootGameObject.gameObject.SetActive(benefitItemList.Count > 0);
            drawVIPBenefitsButton.gameObject.SetActive(!VIPProxy.instance.HasReceivedGiftVIPLevelList.Contains(_currentVIPLevel));
        }
    public void State_Strafe_Enter(Vector3 strafePos, bool shouldUseNapalm = false)
    {
        Vector3 vector3;
        Vector3 vector31;

        if (this.CanUseNapalm() & shouldUseNapalm)
        {
            this.useNapalm      = shouldUseNapalm;
            this.lastNapalmTime = UnityEngine.Time.realtimeSinceStartup;
        }
        this.lastStrafeTime = UnityEngine.Time.realtimeSinceStartup;
        this._currentState  = PatrolHelicopterAI.aiState.STRAFE;
        if (!TransformUtil.GetGroundInfo(strafePos, out vector3, out vector31, 100f, LayerMask.GetMask(new string[] { "Terrain", "World", "Construction", "Water" }), base.transform))
        {
            this.strafe_target_position = strafePos;
        }
        else
        {
            this.strafe_target_position = vector3;
        }
        this.numRocketsLeft        = 12;
        this.lastRocketTime        = 0f;
        this.movementLockingAiming = true;
        Vector3 randomOffset = this.GetRandomOffset(strafePos, 175f, 192.5f, 20f, 30f);

        this.SetTargetDestination(randomOffset, 10f, 30f);
        this.SetIdealRotation(this.GetYawRotationTo(randomOffset), -1f);
        this.puttingDistance = true;
    }
        private void GestureListener_DragCompleted(object sender, DragCompletedGestureEventArgs e)
        {
            if (IsDragItem || !IsDragList)
            {
                return;
            }

            _lastDraggedYDist = -1.0;
            if (firstItem != null)
            {
                if (firstItem.Height > 70)
                {
                    firstItem.Height = 100;
                    TransformUtil.setScaleX(firstItem, 1);
                    TransformUtil.setTranslateX(firstItem, 0);
                }
                else
                {
                    //Debug.WriteLine("Delete");
                    CurrItem.Delete(0);
                }
            }
            firstItem  = null;
            IsDragList = false;
        }
예제 #10
0
    private void OnFrameMouseOver(UIEvent e)
    {
        string key  = string.Empty;
        string str2 = string.Empty;

        switch (this.m_showingCurrency)
        {
        case CurrencyType.GOLD:
            key  = "GLUE_TOOLTIP_GOLD_HEADER";
            str2 = "GLUE_TOOLTIP_GOLD_DESCRIPTION";
            break;

        case CurrencyType.ARCANE_DUST:
            key  = "GLUE_CRAFTING_ARCANEDUST";
            str2 = "GLUE_CRAFTING_ARCANEDUST_DESCRIPTION";
            break;
        }
        if (key != string.Empty)
        {
            KeywordHelpPanel panel = base.GetComponent <TooltipZone>().ShowTooltip(GameStrings.Get(key), GameStrings.Get(str2), 0.7f, true);
            SceneUtils.SetLayer(panel.gameObject, GameLayer.BattleNet);
            panel.transform.localEulerAngles = new Vector3(270f, 0f, 0f);
            panel.transform.localScale       = new Vector3(70f, 70f, 70f);
            if (UniversalInputManager.UsePhoneUI != null)
            {
                TransformUtil.SetPoint((Component)panel, Anchor.TOP, (Component)this.m_mouseOverZone, Anchor.BOTTOM, Vector3.zero);
            }
            else
            {
                TransformUtil.SetPoint((Component)panel, Anchor.BOTTOM, (Component)this.m_mouseOverZone, Anchor.TOP, Vector3.zero);
            }
        }
    }
예제 #11
0
 public Spell GetSpell(SpellType spellType)
 {
     foreach (SpellTableEntry entry in this.m_Table)
     {
         if (entry.m_Type == spellType)
         {
             if ((entry.m_Spell == null) && (entry.m_SpellPrefabName != null))
             {
                 string     name  = FileUtils.GameAssetPathToName(entry.m_SpellPrefabName);
                 GameObject obj2  = AssetLoader.Get().LoadActor(name, true, true);
                 Spell      spell = obj2.GetComponent <Spell>();
                 if (spell != null)
                 {
                     entry.m_Spell = spell;
                     TransformUtil.AttachAndPreserveLocalTransform(obj2.transform, base.gameObject.transform);
                 }
             }
             if (entry.m_Spell == null)
             {
                 Debug.LogError(string.Concat(new object[] { "Unable to load spell ", spellType, " from spell table ", base.gameObject.name }));
                 return(null);
             }
             Spell component = UnityEngine.Object.Instantiate <GameObject>(entry.m_Spell.gameObject).GetComponent <Spell>();
             component.SetSpellType(spellType);
             return(component);
         }
     }
     return(null);
 }
예제 #12
0
 public static void GlobalBroadcast(string messageName, object param = null)
 {
     foreach (Component rootObject in TransformUtil.GetRootObjects())
     {
         rootObject.BroadcastMessage(messageName, param, (SendMessageOptions)1);
     }
 }
 static int QPYX_SetZ_YXQP(IntPtr L_YXQP)
 {
     try
     {
         int QPYX_count_YXQP = LuaDLL.lua_gettop(L_YXQP);
         if (QPYX_count_YXQP == 2)
         {
             UnityEngine.Transform QPYX_arg0_YXQP = (UnityEngine.Transform)ToLua.CheckObject <UnityEngine.Transform>(L_YXQP, 1);
             float QPYX_arg1_YXQP = (float)LuaDLL.luaL_checknumber(L_YXQP, 2);
             TransformUtil.SetZ(QPYX_arg0_YXQP, QPYX_arg1_YXQP);
             return(0);
         }
         else if (QPYX_count_YXQP == 3)
         {
             UnityEngine.Transform QPYX_arg0_YXQP = (UnityEngine.Transform)ToLua.CheckObject <UnityEngine.Transform>(L_YXQP, 1);
             float QPYX_arg1_YXQP = (float)LuaDLL.luaL_checknumber(L_YXQP, 2);
             bool  QPYX_arg2_YXQP = LuaDLL.luaL_checkboolean(L_YXQP, 3);
             TransformUtil.SetZ(QPYX_arg0_YXQP, QPYX_arg1_YXQP, QPYX_arg2_YXQP);
             return(0);
         }
         else
         {
             return(LuaDLL.luaL_throw(L_YXQP, "invalid arguments to method: TransformUtil.SetZ"));
         }
     }
     catch (Exception e_YXQP)                {
         return(LuaDLL.toluaL_exception(L_YXQP, e_YXQP));
     }
 }
예제 #14
0
        private void InitToggles()
        {
            int start = (int)BlackMarketType.BlackMarket_Min + 1;

            int end = (int)BlackMarketType.BlackMarket_Max;

            if (!BlackMarketProxy.instance.isLimitActivityOpen)
            {
                end = (int)BlackMarketType.BlackMarket_LimitActivity;
            }
            TransformUtil.ClearChildren(toggleRoot, true);
            togglePrefab.gameObject.SetActive(true);
            for (int i = start; i < end; i++)
            {
                Toggle toggle = Instantiate <Toggle>(togglePrefab);
                toggle.transform.SetParent(toggleRoot, false);
                ToggleContent content = toggle.GetComponent <ToggleContent>();
                content.Set(i, Localization.Get(string.Format("ui.black_market_view.toggle.{0}", i)));
                if (i == (int)BlackMarketProxy.instance.selectType)
                {
                    toggle.isOn = true;
                }
                else
                {
                    toggle.isOn = false;
                }
            }
            togglePrefab.gameObject.SetActive(false);
        }
예제 #15
0
    static int SetZ(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 2)
            {
                UnityEngine.Transform arg0 = (UnityEngine.Transform)ToLua.CheckObject <UnityEngine.Transform>(L, 1);
                float arg1 = (float)LuaDLL.luaL_checknumber(L, 2);
                TransformUtil.SetZ(arg0, arg1);
                return(0);
            }
            else if (count == 3)
            {
                UnityEngine.Transform arg0 = (UnityEngine.Transform)ToLua.CheckObject <UnityEngine.Transform>(L, 1);
                float arg1 = (float)LuaDLL.luaL_checknumber(L, 2);
                bool  arg2 = LuaDLL.luaL_checkboolean(L, 3);
                TransformUtil.SetZ(arg0, arg1, arg2);
                return(0);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to method: TransformUtil.SetZ"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
예제 #16
0
        public void SetAxis(ref IndexedVector3 axisInA)
        {
            IndexedVector3 rbAxisA1, rbAxisA2;

            TransformUtil.PlaneSpace1(ref axisInA, out rbAxisA1, out rbAxisA2);
            IndexedVector3 pivotInA = m_rbAFrame._origin;

            //		m_rbAFrame._origin = pivotInA;

            //MathUtil.setBasis(ref m_rbAFrame,ref axisInA,ref rbAxisA1,ref rbAxisA2);
            m_rbAFrame._basis = new IndexedBasisMatrix(rbAxisA1.X, rbAxisA2.X, axisInA.X,
                                                       rbAxisA1.Y, rbAxisA2.Y, axisInA.Y,
                                                       rbAxisA1.Z, rbAxisA2.Z, axisInA.Z);

            IndexedVector3 axisInB = m_rbA.GetCenterOfMassTransform()._basis *axisInA;

            IndexedQuaternion rotationArc = MathUtil.ShortestArcQuat(ref axisInA, ref axisInB);
            IndexedVector3    rbAxisB1    = MathUtil.QuatRotate(ref rotationArc, ref rbAxisA1);
            IndexedVector3    rbAxisB2    = IndexedVector3.Cross(ref axisInB, ref rbAxisB1);

            m_rbBFrame._origin = m_rbB.GetCenterOfMassTransform().Inverse() * (m_rbA.GetCenterOfMassTransform() * (pivotInA));

            m_rbBFrame._basis = new IndexedBasisMatrix(rbAxisB1.X, rbAxisB2.X, axisInB.X,
                                                       rbAxisB1.Y, rbAxisB2.Y, axisInB.Y,
                                                       rbAxisB1.Z, rbAxisB2.Z, axisInB.Z);
        }
        protected override Rect GetBoundingRectangleCore()
        {
            if (this._item.Parent == null && this._item != this._item.Root && this._item.Name != null)
            {
                ModelItem modelItem = this.ModelService.FromName(this.ModelService.Root, this._item.Name, StringComparison.OrdinalIgnoreCase);
                if (modelItem != null)
                {
                    this._item = modelItem;
                }
            }
            PresentationSource presentationSource = PresentationSource.FromVisual((Visual)DesignerView.FromContext(this._item.Context));

            if (presentationSource == null || presentationSource.RootVisual == null || !this.ViewItem.IsVisible)
            {
                return(new Rect());
            }
            Rect selectionFrameBounds = ElementUtilities.GetSelectionFrameBounds(this.ViewItem);

            if (selectionFrameBounds.Location == new Point(0.0, 0.0) && selectionFrameBounds.Size == new Size(0.0, 0.0))
            {
                return(new Rect());
            }
            Rect rect1 = new Rect(selectionFrameBounds.Size);
            Rect rect2 = TransformUtil.GetSelectionFrameTransformToParentVisual(this.ViewItem, presentationSource.RootVisual).TransformBounds(rect1);

            return(new Rect(presentationSource.RootVisual.PointToScreen(rect2.Location), rect2.Size));
        }
예제 #18
0
        public override void ProcessAllTriangles(ITriangleCallback callback, ref IndexedVector3 aabbMin, ref IndexedVector3 aabbMax)
        {
            IndexedVector3 halfExtents = (aabbMax - aabbMin) * .5f;
            float          radius      = halfExtents.Length();
            IndexedVector3 center      = (aabbMax + aabbMin) * 0.5f;

            //this is where the triangles are generated, given AABB and plane equation (normal/constant)

            IndexedVector3 tangentDir0;
            IndexedVector3 tangentDir1;

            //tangentDir0/tangentDir1 can be precalculated
            TransformUtil.PlaneSpace1(ref m_planeNormal, out tangentDir0, out tangentDir1);

            IndexedVector3 supVertex0 = IndexedVector3.Zero;
            IndexedVector3 supVertex1 = IndexedVector3.Zero;

            IndexedVector3 projectedCenter = center - (IndexedVector3.Dot(m_planeNormal, center) - m_planeConstant) * m_planeNormal;

            IndexedVector3[] triangle = new IndexedVector3[3];
            triangle[0] = (projectedCenter + tangentDir0 * radius + tangentDir1 * radius);
            triangle[1] = (projectedCenter + tangentDir0 * radius - tangentDir1 * radius);
            triangle[2] = (projectedCenter - tangentDir0 * radius - tangentDir1 * radius);

            callback.ProcessTriangle(triangle, 0, 0);

            triangle[0] = projectedCenter - tangentDir0 * radius - tangentDir1 * radius;
            triangle[1] = projectedCenter - tangentDir0 * radius + tangentDir1 * radius;
            triangle[2] = projectedCenter + tangentDir0 * radius + tangentDir1 * radius;

            callback.ProcessTriangle(triangle, 0, 1);
        }
예제 #19
0
        public void InternalWritebackVelocity(float timeStep)
        {
            if (BulletGlobals.g_streamWriter != null && BulletGlobals.debugRigidBody)
            {
                BulletGlobals.g_streamWriter.WriteLine(String.Format("[{0}] internalWritebackVelocity ", (String)m_userObjectPointer));
                MathUtil.PrintVector3(BulletGlobals.g_streamWriter, "LinearVelocity", GetLinearVelocity());
                MathUtil.PrintVector3(BulletGlobals.g_streamWriter, "DeltaLinearVelocity", m_deltaLinearVelocity);
                MathUtil.PrintVector3(BulletGlobals.g_streamWriter, "AngularVelocity", GetAngularVelocity());
                MathUtil.PrintVector3(BulletGlobals.g_streamWriter, "DeltaAngularVelocity", m_deltaAngularVelocity);
            }

            if (m_inverseMass != 0f)
            {
                SetLinearVelocity(GetLinearVelocity() + m_deltaLinearVelocity);
                SetAngularVelocity(GetAngularVelocity() + m_deltaAngularVelocity);

                //correct the position/orientation based on push/turn recovery
                IndexedMatrix newTransform;
                TransformUtil.IntegrateTransform(GetWorldTransform(), m_pushVelocity, m_turnVelocity, timeStep, out newTransform);
                SetWorldTransform(ref newTransform);
                //m_originalBody->setCompanionId(-1);
            }

            if (BulletGlobals.g_streamWriter != null && BulletGlobals.debugRigidBody)
            {
                BulletGlobals.g_streamWriter.WriteLine("post integrate transform.");
                MathUtil.PrintMatrix(BulletGlobals.g_streamWriter, GetWorldTransform());
            }

            //m_deltaLinearVelocity = IndexedVector3.Zero;
            //m_deltaAngularVelocity = IndexedVector3.Zero;
            //m_pushVelocity = IndexedVector3.Zero;
            //m_turnVelocity = IndexedVector3.Zero;
        }
예제 #20
0
    /// <summary>
    /// 检查是否隐藏UI
    /// </summary>
    void CheckHidenWin()
    {
        bool isHiden = false;

        for (int i = m_IdPosList.Count - 1; i >= 0; i--)
        {
            int id = m_IdPosList[i];
            if (m_UIList.ContainsKey(id))
            {
                WindowBase winbs = m_UIList[id];
                if (winbs == null)
                {
                    continue;
                }
                T_UIConfig config = winbs.F_GetUIConfig();
                if (config.UI_Type == T_UIConfig.UI_TYPE.WIN)
                {
                    if (isHiden == true)
                    {
                        TransformUtil.ChangeLayer(winbs.transform, 0, 5);
                    }
                    else
                    {
                        TransformUtil.ChangeLayer(winbs.transform, 5, 0);
                    }

                    if (config.ShowMask == (int)MaskType.BlurTexture || config.ShowMask == (int)MaskType.HidenUnderUI)
                    {
                        isHiden = true;
                    }
                }
            }
        }
    }
예제 #21
0
        public void Draw(IDebugDraw drawer)
        {
            int i;

            for (i = 0; i < NUMRAYS_IN_BAR; i++)
            {
                drawer.DrawLine(ref source[i], ref hit_com[i], Color.Lime);
            }
            const float normalScale = 10.0f; // easier to see if this is big

            for (i = 0; i < NUMRAYS_IN_BAR; i++)
            {
                Vector3 to = hit_surface[i] + normalScale * normal[i];
                drawer.DrawLine(ref hit_surface[i], ref to, Color.White);
            }
            Quaternion qFrom = Quaternion.RotationAxis(new Vector3(1.0f, 0.0f, 0.0f), 0.0f);
            Quaternion qTo   = Quaternion.RotationAxis(new Vector3(1.0f, 0.0f, 0.0f), 0.7f);

            for (i = 0; i < NUMRAYS_IN_BAR; i++)
            {
                Matrix  from = Matrix.RotationQuaternion(qFrom) * Matrix.Translation(source[i]);
                Matrix  to = Matrix.RotationQuaternion(qTo) * Matrix.Translation(dest[i]);
                Vector3 linVel, angVel;
                TransformUtil.CalculateVelocity(from, to, 1.0f, out linVel, out angVel);
                Matrix T;
                TransformUtil.IntegrateTransform(from, linVel, angVel, hit_fraction[i], out T);
                Vector3 box1 = boxShapeHalfExtents;
                Vector3 box2 = -boxShapeHalfExtents;
                drawer.DrawBox(ref box1, ref box2, ref T, Color.Aqua);
            }
        }
예제 #22
0
        public List <List <Line3D> > Partition(List <Line3D> square, double width, double height)
        {
            //获取当前面的转换举证
            Matrix4 m = TransformUtil.GetMatrix(square);

            //将当前坐标转换到平面坐标
            List <Line3D> tf = TransformUtil.Transform(square, m);

            //计算投影
            List <Line2D> pf = TransformUtil.Projection(tf);


            List <List <Line2D> > partitions = Partition(pf, width, height, null);

            var rm = TransformUtil.GetInversetMatrix(m);


            //当前的结果
            List <List <Line3D> > result = new List <List <Line3D> >();

            //进行坐标转换
            partitions.ForEach(x => {
                List <Line3D> rt = TransformUtil.Projection(x, 0);

                result.Add(TransformUtil.Transform(rt, rm));
            });

            return(result);
        }
예제 #23
0
        private IEnumerator RefreshRoleModelCoroutine()
        {
            DespawnCharacter();
            TransformUtil.ClearChildren(roleModelRoot, true);
            yield return(new WaitForSeconds(0.4f));

            PlayerInfo playerInfo = _roleInfo as PlayerInfo;
            HeroInfo   heroInfo   = _roleInfo as HeroInfo;

            if (playerInfo != null)
            {
                CharacterEntity characterEntity = CharacterEntity.CreatePlayerEntityAsUIElement(playerInfo, roleModelRoot, true, true);
                Action.Controller.ActionController.instance.PlayerAnimAction(characterEntity, AnimatorUtil.VICOTRY_ID);
            }
            else if (heroInfo != null)
            {
                bool canClick = true;
                if (_roleInfo.heroData.hero_type == 4)//boss
                {
                    canClick = false;
                }
                _characterEntity = CharacterEntity.CreateHeroEntityAsUIElement(heroInfo, roleModelRoot, canClick, true);
                if (canClick)
                {
                    Action.Controller.ActionController.instance.PlayerAnimAction(_characterEntity, AnimatorUtil.VICOTRY_ID);
                }
            }
        }
예제 #24
0
        // Reflect the rectangle in the XAxis
        public void ReflectXAxis()
        {
            TransformUtil.ReflectXAxis(ref m_dMinX, ref m_dMinY);
            TransformUtil.ReflectXAxis(ref m_dMaxX, ref m_dMaxY);

            Normalize();
        }
예제 #25
0
    public bool DropToGround(Vector3 targetPos, bool force = false)
    {
        float   range = (force ? 10000f : (maxStepHeight + maxStepDownHeight));
        Vector3 pos;
        Vector3 normal;

        if (TransformUtil.GetGroundInfo(targetPos, out pos, out normal, range, 278986753))
        {
            if (UnityEngine.Physics.CheckSphere(pos + Vector3.up * 1f, 0.2f, 278986753))
            {
                return(false);
            }
            base.transform.position = pos;
            Vector3 eulerAngles = QuaternionEx.LookRotationForcedUp(base.transform.forward, averagedUp).eulerAngles;
            if (eulerAngles.z > 180f)
            {
                eulerAngles.z -= 360f;
            }
            else if (eulerAngles.z < -180f)
            {
                eulerAngles.z += 360f;
            }
            eulerAngles.z           = Mathf.Clamp(eulerAngles.z, -10f, 10f);
            base.transform.rotation = Quaternion.Euler(eulerAngles);
            return(true);
        }
        return(false);
    }
예제 #26
0
        public static Rect GetRenderSizeBounds(DependencyObject element)
        {
            if (element == null)
            {
                throw new ArgumentNullException("element");
            }
            Rect   rect   = new Rect();
            Visual visual = element as Visual;

            if (visual == null)
            {
                return(rect);
            }
            rect.Location = (Point)VisualTreeHelper.GetOffset(visual);
            UIElement uiElement = visual as UIElement;

            if (uiElement == null)
            {
                Size size = VisualTreeHelper.GetContentBounds(visual).Size;
                if (size.Width <= 0.0 && size.Height <= 0.0)
                {
                    Visual parentVisual = VisualTreeHelper.GetParent((DependencyObject)visual) as Visual;
                    if (parentVisual != null)
                    {
                        size = TransformUtil.GetTransformToDescendant(parentVisual, visual).TransformBounds(ElementUtilities.GetSelectionFrameBounds((DependencyObject)parentVisual)).Size;
                    }
                }
                rect.Size = size;
            }
            else
            {
                rect.Size = uiElement.RenderSize;
            }
            return(rect);
        }
예제 #27
0
    /// <summary>
    /// Shows the config and control window in Unity.
    /// </summary>
    private static void SettingsGUI()
    {
        TransformUtil tu = (TransformUtil)GetWindow <TransformUtil>();

        tu.title = "Transform Util";
        tu.Show();
    }
예제 #28
0
        public void RefreshUIDropReward()
        {
            List <GameResData> rewards = DungeonDetailProxy.instance.GetDropRewardList();

            GameResData resData;

            TransformUtil.ClearChildren(TranRewardRoot, true);
            int accountExp = 0;
            int heroExp    = 0;

            for (int i = 0, count = rewards.Count; i < count; i++)
            {
                resData = rewards[i];
                BaseResType type = resData.type;
                if (type == BaseResType.Hero || type == BaseResType.Equipment || type == BaseResType.Item)
                {
                    CommonRewardIcon icon = CommonRewardIcon.Create(TranRewardRoot);
                    icon.SetGameResData(resData);
                    icon.SetDesButtonType(ShowDescriptionType.click);
                }
                else if (type == BaseResType.Account_Exp)
                {
                    accountExp += resData.count;
                }
                else if (type == BaseResType.Hero_Exp)
                {
                    heroExp += resData.count;
                }
            }
            text_reward_hero_exp.text    = heroExp.ToString();
            text_reward_account_exp.text = accountExp.ToString();
        }
예제 #29
0
    // 初始化玩家位置
    private void InitPlayer()
    {
        if (playerObjs.Count > 0)
        {
            return;
        }
        int slide_count = maxCount / 2;

        Vector3[] playerPos = Coordinate.GetPlayerPosArray(maxCount);
        Vector3[] chipPos   = Coordinate.GetChipPosArray(maxCount);
        for (int i = 0; i < maxCount; i++)
        {
            // 初始化筹码位置
            string     chipPath = i > slide_count ? "Prefabs/ChipLeft" : "Prefabs/ChipRight";
            GameObject chipObj  = Instantiate(Resources.Load(chipPath)) as GameObject;
            chipObj.name                    = "chip" + i;
            chipObj.transform.parent        = desktop.transform;
            chipObj.transform.localScale    = new Vector3(1, 1, 1);
            chipObj.transform.localPosition = chipPos[i];
            chips.Add(chipObj);
            TransformUtil.SetWarpAnchor(chipObj);
            // 初始化玩家
            GameObject player = Instantiate(Resources.Load("Prefabs/Player")) as GameObject;
            player.name                 = "player" + i;
            player.transform.parent     = desktop.transform;
            player.transform.localScale = new Vector3(1, 1, 1);
            player.GetComponent <PlayerControler>().chipObj = chipObj;
            player.GetComponent <PlayerControler>().SetHandCardPosition(i > slide_count);
            player.transform.localPosition = playerPos[i];
            playerObjs.Add(player);
            TransformUtil.SetWarpAnchor(player);
        }
        roomLight.GetComponent <LightControler>().SetPalyerObjects(playerObjs);
    }
    public void UpdateGroundNormal()
    {
        Vector3 vector3;
        Vector3 vector31;

        if (Time.time >= this.nextGroundNormalUpdateTime)
        {
            this.nextGroundNormalUpdateTime = Time.time + UnityEngine.Random.Range(0.2f, 0.35f);
            this.targetUp = this.averagedUp;
            Transform[] transformArrays = this.groundSampleOffsets;
            for (int i = 0; i < (int)transformArrays.Length; i++)
            {
                if (!TransformUtil.GetGroundInfo(transformArrays[i].position + (Vector3.up * 2f), out vector3, out vector31, 4f, 278986753, null))
                {
                    this.targetUp += Vector3.up;
                }
                else
                {
                    this.targetUp += vector31;
                }
            }
            this.targetUp /= (float)((int)this.groundSampleOffsets.Length + 1);
        }
        this.averagedUp = Vector3.Lerp(this.averagedUp, this.targetUp, Time.deltaTime * 4f);
    }