Ejemplo n.º 1
0
        private static void OnLoadSuccess(DecalParam arg1, UnityObject arg2)
        {
            _logger.DebugFormat("Decal-Combined OnLoadSuccess !");
            if (arg2 == null || arg2.AsObject == null)
            {
                _logger.DebugFormat("arg2 == null || arg2.AsObject == null  !");
                return;
            }

            _debugGameObject = arg2.AsObject as GameObject;
            arg1.entity.assets.LoadedAssets.Add(arg1.assetInfo, arg2);
            Decal decal = _debugGameObject.AddComponent <Decal>();

            _debugGameObject.transform.localEulerAngles = Vector3.zero;
            Vector3 forward          = arg1.forward;
            float   multiplyingpower = forward.y / Math.Max(Math.Max(forward.x, forward.z), 0.01f);
            bool    ground           = (multiplyingpower > 0.577f);

            arg1.head.x = FreeMathUtility.yRoundx(forward);
            if (ground)
            {
                decal.transform.position = arg1.position;
            }
            else
            {
                arg1.head.y = 0;
                arg1.head.z = FreeMathUtility.yRoundz(forward);
                decal.transform.position = arg1.position - forward * 0.3f;
            }
            _debugGameObject.transform.localScale = new Vector3(0.75f, ground ? 0.06f : 0.64f, 0.75f);
            decal.transform.Rotate(arg1.head, Space.World);
            float result = Vector3.Dot(forward, decal.transform.forward);

            if (Math.Abs(result) > 0.1f)
            {
                Vector3 localEulerAngles = decal.transform.localEulerAngles;
                localEulerAngles.x = -localEulerAngles.x;
                localEulerAngles.z = -localEulerAngles.z;
                decal.transform.localEulerAngles = localEulerAngles;
            }

            if (arg1.contexts == null)
            {
                return;
            }
            var bundleName = AssetBundleConstant.Icon_Spray;
            var assetName  = string.Format("Spray_{0}", arg1.sprayPrintSpriteId);

            _logger.DebugFormat(assetName);
            var assetManager = arg1.contexts.session.commonSession.AssetManager;

            assetManager.LoadAssetAsync(assetName, new AssetInfo(bundleName, assetName), (source, unityObj) =>
            {
                if (unityObj != null && unityObj.AsObject != null)
                {
                    if (unityObj.AsObject is Texture2D)
                    {
                        Texture2D texture = unityObj.AsObject as Texture2D;
                        assetManager.LoadAssetAsync(texture, new AssetInfo("shaders", "New Material"), OnMaterialLoadSus);
                    }
                    else if (unityObj.AsObject is Sprite)
                    {
                        Sprite sprite = unityObj.AsObject as Sprite;
#if UNITY_EDITOR
                        Material m     = new Material(Shader.Find("Decalicious/Deferred Spray"));
                        decal.Material = m;
                        m.mainTexture  = sprite.texture;
                        _debugGameObject.GetComponent <MeshRenderer>().enabled = true;
#else
                        assetManager.LoadAssetAsync(sprite.texture, new AssetInfo("shaders", "New Material"), OnMaterialLoadSus);
#endif
                    }
                    else
                    {
                        _logger.DebugFormat("LoadAssetAsync failed !");
                        GameObject.Destroy(_debugGameObject);
                    }
                }
                else
                {
                    _logger.DebugFormat("bundleName : " + bundleName + " assetName : " + assetName);
                }
            });
        }
Ejemplo n.º 2
0
        public Object Frame(int frameTime)
        {
            var v = new Vector3();

            //            var battleModel = GameModelLocator.getInstance().gameModel;
            //
            //            var ce = battleModel.getClientEntityFormId(id);
            //
            //            if (ce == null)
            //            {
            //                ce = battleModel.getCurrentSelfClientEntity();
            //            }
            //
            //            var angle = ce.lerpAngle.x + battleModel.shakeAngleOffect.x;
            var            battleModel = GameModelLocator.GetInstance().GameModel;
            PlayerEntity   player      = SingletonManager.Get <FreeUiManager>().Contexts1.player.GetEntityWithEntityKey(new EntityKey(id, (int)EEntityType.Player));
            FreeMoveEntity move        = SingletonManager.Get <FreeUiManager>().Contexts1.freeMove.GetEntityWithEntityKey(new EntityKey(id, (int)EEntityType.FreeMove));

            //if (player == null && move == null)
            //{
            //    player = SingletonManager.Get<FreeUiManager>().Contexts1.player.flagSelfEntity;
            //}

            var angle = this._angle;

            if (player != null)
            {
                angle = player.orientation.Yaw + this._angle + battleModel.shakeAngleOffect.x;
            }

            var dir = new Vector3();

            var end = new Vector3();


            FreeMathUtility.AnglesToVector(angle, pitch, ref dir);

            PositionComponent pos = null;

            if (player != null)
            {
                pos = player.position;
            }

            if (move != null)
            {
                if (move.hasPosition)
                {
                    pos = move.position;
                }
            }

            if (pos != null)
            {
                FreeMathUtility.Vector3DMA(pos.Value, distance, dir, ref end);

                v.x = end.x;
                v.y = end.y + height;
                v.z = end.z;
            }
            else
            {
                return(null);
            }

            return(v);
        }
Ejemplo n.º 3
0
        public Object Frame(int frameTime)
        {
            var v = new Vector3();

            //            var battleModel:BattleModel = GameModelLocator.getInstance().gameModel;

            //			var ceS:ClientEntity = battleModel.getClientEntityFormId(source);
            //			var ceT:ClientEntity = battleModel.getClientEntityFormId(target);
            //
            //			if(ceS == null){
            //				ceS = battleModel.getCurrentSelfClientEntity();
            //			}
            //
            //			if(ceT == null){
            //				ceT = battleModel.getCurrentSelfClientEntity();
            //			}

            var ceS = SingletonManager.Get <FreeUiManager>().Contexts1.player.GetEntityWithEntityKey(new EntityKey(source, (int)EEntityType.Player));

            if (ceS == null)
            {
                ceS = SingletonManager.Get <FreeUiManager>().Contexts1.player.flagSelfEntity;
            }

            var ceT = SingletonManager.Get <FreeUiManager>().Contexts1.player.GetEntityWithEntityKey(new EntityKey(target, (int)EEntityType.Player));

            if (ceT == null)
            {
                ceT = SingletonManager.Get <FreeUiManager>().Contexts1.player.flagSelfEntity;
            }

            var sub = ceT.position.Value - ceS.position.Value;

            if (toSource)
            {
                sub = ceS.position.Value - ceT.position.Value;
            }
            var av = new Vector3();

            FreeMathUtility.VectorToAngles(sub, ref av);
            var angle = av.x;

            var dir = new Vector3();
            var end = new Vector3();

            var mins = new Vector3();
            var maxs = new Vector3();

            mins.Set(-10, -10, -10);
            maxs.Set(10, 10, 10);

            FreeMathUtility.AnglesToVector(angle, 0, ref dir);

            if (toSource)
            {
                FreeMathUtility.Vector3DMA(ceS.position.Value, distance, dir, ref end);
            }
            else
            {
                FreeMathUtility.Vector3DMA(ceT.position.Value, distance, dir, ref end);
            }
            v.x = end.x;
            v.y = end.y + height;
            v.z = end.z;

            return(v);
        }