コード例 #1
0
        public void Prepare(PlanetVO planet, AssetsCompleteDelegate onLoadComplete, object cookie)
        {
            if (planet == this.currentPlanet)
            {
                onLoadComplete(cookie);
                return;
            }
            AssetManager assetManager = Service.Get <AssetManager>();

            if (this.planetAssetHandle != AssetHandle.Invalid)
            {
                assetManager.Unload(this.planetAssetHandle);
                this.planetAssetHandle = AssetHandle.Invalid;
            }
            this.currentPlanet = planet;
            this.Reset();
            List <string> list = new List <string>();
            string        text = HardwareProfile.IsLowEndDevice() ? (planet.AssetName + "-lod1") : planet.AssetName;

            list.Add(text);
            assetManager.RegisterPreloadableAsset(text);
            List <object> list2 = new List <object>();

            list2.Add(this.currentPlanet);
            List <AssetHandle> list3 = new List <AssetHandle>();

            list3.Add(AssetHandle.Invalid);
            assetManager.MultiLoad(list3, list, new AssetSuccessDelegate(this.AssetSuccess), null, list2, onLoadComplete, cookie);
            this.planetAssetHandle = list3[0];
        }
コード例 #2
0
 public void AttachEffects(GameObject gameObject, object cookie)
 {
     if (!HardwareProfile.IsLowEndDevice())
     {
         PlanetVO planetVO = cookie as PlanetVO;
         this.LoadPlanetFX(planetVO.Uid, this.GetEffectNames(planetVO.PlanetaryFX), gameObject);
     }
 }
コード例 #3
0
 public override void AddToGame(Game game)
 {
     this.entityController           = Service.EntityController;
     this.battleController           = Service.BattleController;
     this.troopAbilityController     = Service.TroopAbilityController;
     this.audioManager               = Service.AudioManager;
     this.specialAttackController    = Service.SpecialAttackController;
     this.squadTroopAttackController = Service.SquadTroopAttackController;
     this.buildingNodeList           = this.entityController.GetNodeList <BuildingNode>();
     this.troopNodeList              = this.entityController.GetNodeList <TroopNode>();
     this.audioResetDeltaMax         = ((!HardwareProfile.IsLowEndDevice()) ? 33u : 330u);
     this.audioResetDeltaAccumulator = this.audioResetDeltaMax;
 }
コード例 #4
0
        public void ResetWorld()
        {
            EntityFactory entityFactory = Service.Get <EntityFactory>();
            EntityList    allEntities   = this.entityController.GetAllEntities();

            for (Entity entity = allEntities.Head; entity != null; entity = entity.Next)
            {
                entityFactory.DestroyEntity(entity, true, true);
            }
            this.DroidHut = null;
            Service.Get <SpatialIndexController>().Reset();
            Service.Get <BoardController>().ResetBoard();
            Service.Get <FXManager>().Reset();
            if (!HardwareProfile.IsLowEndDevice())
            {
                Service.Get <TerrainBlendController>().ResetTerrain();
            }
            Service.Get <EventManager>().SendEvent(EventId.WorldReset, null);
        }
コード例 #5
0
        private void AssetSuccess(object asset, object cookie)
        {
            GameObject gameObject = asset as GameObject;
            PlanetVO   planetVO   = cookie as PlanetVO;
            bool       flag       = HardwareProfile.IsLowEndDevice();

            if (planetVO != null && !flag)
            {
                Service.Get <PlanetEffectController>().AttachEffects(gameObject, planetVO);
            }
            Transform transform = gameObject.transform;

            transform.position = Vector3.zero;
            transform.rotation = Quaternion.AngleAxis(-90f, Vector3.up);
            if (!flag && transform.FindChild("terrainInnerMesh"))
            {
                Service.Get <TerrainBlendController>().IndexTerrainMesh(gameObject);
            }
            this.groundAsset = gameObject;
            Vector3 vector;
            Vector3 vector2;
            Vector3 vector3;
            Vector3 vector4;

            Vector3[] array;
            if (!this.TryGetLocator(gameObject, "locator_lowerLeft", out vector) || !this.TryGetLocator(gameObject, "locator_lowerRight", out vector2) || !this.TryGetLocator(gameObject, "locator_upperLeft", out vector3) || !this.TryGetLocator(gameObject, "locator_upperRight", out vector4))
            {
                Service.Get <StaRTSLogger>().Warn("Unable to find corner locators");
                array = PlanetView.DEFAULT_CORNER_LOCATORS;
            }
            else
            {
                array = new Vector3[]
                {
                    vector,
                    vector2,
                    vector3,
                    vector4
                };
            }
            this.SetCornerLocators(array);
        }
コード例 #6
0
        public void Render(ProjectorConfig config)
        {
            if (!config.AssetReady)
            {
                return;
            }
            if (string.IsNullOrEmpty(config.buildingEquipmentShaderName) || config.AnimPreference == AnimationPreference.NoAnimation || (config.AnimPreference == AnimationPreference.AnimationPreferred && HardwareProfile.IsLowEndDevice()))
            {
                this.baseRenderer.Render(config);
                return;
            }
            this.materialCopies = new List <Material>();
            Dictionary <Material, Material> dictionary = new Dictionary <Material, Material>();
            Shader shader = Service.AssetManager.Shaders.GetShader(config.buildingEquipmentShaderName);
            AssetMeshDataMonoBehaviour component = config.MainAsset.GetComponent <AssetMeshDataMonoBehaviour>();

            if (component != null)
            {
                int count = component.SelectableGameObjects.Count;
                for (int i = 0; i < count; i++)
                {
                    Renderer component2 = component.SelectableGameObjects[i].GetComponent <Renderer>();
                    if (component2.sharedMaterial == null)
                    {
                        Service.Logger.ErrorFormat("sharedMaterial missing on {0}", new object[]
                        {
                            component.SelectableGameObjects[i].name
                        });
                    }
                    else if (dictionary.ContainsKey(component2.sharedMaterial))
                    {
                        component2.sharedMaterial = dictionary[component2.sharedMaterial];
                    }
                    else
                    {
                        Material material = UnityUtils.EnsureMaterialCopy(component2);
                        this.materialCopies.Add(material);
                        dictionary.Add(component2.sharedMaterial, material);
                        material.shader = shader;
                    }
                }
            }
            dictionary.Clear();
            this.baseRenderer.Render(config);
        }
コード例 #7
0
        public virtual void Render(ProjectorConfig config)
        {
            this.config = config;
            bool flag  = config.AnimPreference == AnimationPreference.NoAnimation;
            bool flag2 = config.AnimPreference == AnimationPreference.AnimationPreferred && HardwareProfile.IsLowEndDevice();

            this.snapshot = (flag | flag2);
            if (this.snapshot)
            {
                this.renderCallback     = config.RenderCallback;
                this.snapshotFrameCount = config.SnapshotFrameDelay;
                Service.Get <ViewTimeEngine>().RegisterFrameTimeObserver(this);
                return;
            }
            if (config.RenderCallback != null)
            {
                config.RenderCallback.Invoke(this.renderTexture, config);
            }
        }
コード例 #8
0
 private static bool CanBeAnimated(ProjectorConfig config)
 {
     return(config.AnimPreference == AnimationPreference.AnimationAlways || (config.AnimPreference == AnimationPreference.AnimationPreferred && !HardwareProfile.IsLowEndDevice()));
 }
コード例 #9
0
        public static GeometryProjector GenerateProjector(ProjectorConfig config)
        {
            GeometryProjector geometryProjector = new GeometryProjector(config);

            if (config.FrameSprite != null)
            {
                geometryProjector.Renderer = new SpriteProjectorRenderer(config.FrameSprite, geometryProjector.ProjectorIndex);
            }
            else
            {
                geometryProjector.Renderer = new SurfaceProjectorRenderer(geometryProjector.ProjectorIndex);
            }
            if (config.Metered)
            {
                geometryProjector.Renderer = new ProjectorMeterDecorator(geometryProjector.Renderer);
            }
            geometryProjector.Renderer = new ProjectorOutlineDecorator(geometryProjector.Renderer);
            if (!string.IsNullOrEmpty(config.TrackerName))
            {
                geometryProjector.Renderer = new ProjectorTurretDecorator(geometryProjector.Renderer);
            }
            if (!string.IsNullOrEmpty(config.buildingEquipmentShaderName) && ProjectorUtils.CanBeAnimated(config))
            {
                geometryProjector.Renderer = new ProjectorEquipmentBuildingDecorator(geometryProjector.Renderer);
            }
            else
            {
                geometryProjector.Renderer = new ProjectorShaderSwapDecorator(geometryProjector.Renderer);
            }
            geometryProjector.Renderer = new ProjectorAnimationDecorator(geometryProjector.Renderer);
            bool flag  = config.AnimPreference == AnimationPreference.NoAnimation;
            bool flag2 = config.AnimPreference == AnimationPreference.AnimationPreferred && HardwareProfile.IsLowEndDevice();

            if (!flag && !flag2 && config.IconRotationSpeed > 0f)
            {
                geometryProjector.Renderer = new ProjectorRotationDecorator(geometryProjector.Renderer);
            }
            ProjectorAssetProcessor arg_16C_0 = geometryProjector.AssetProcessor;

            if (ProjectorUtils.< > f__mg$cache0 == null)
            {
                ProjectorUtils.< > f__mg$cache0 = new Action <GeometryProjector>(ProjectorUtils.OnDefaultAssetSuccess);
            }
            Action <GeometryProjector> arg_16C_1 = ProjectorUtils.< > f__mg$cache0;

            if (ProjectorUtils.< > f__mg$cache1 == null)
            {
                ProjectorUtils.< > f__mg$cache1 = new Action <GeometryProjector>(ProjectorUtils.OnDefaultAssetFailure);
            }
            arg_16C_0.LoadAllAssets(arg_16C_1, ProjectorUtils.< > f__mg$cache1);
            return(geometryProjector);
        }
コード例 #10
0
        public override void Start()
        {
            Service.Get <EventManager>().SendEvent(EventId.InitializeGeneralSystemsStart, null);
            new WorldTransitioner();
            new VictoryConditionController();
            new DefensiveBattleController();
            new RaidDefenseController();
            new CombatTriggerManager();
            new TrapViewController();
            new TrapController();
            new BattleController();
            new BattleRecordController();
            new BattlePlaybackController();
            new PostBattleRepairController();
            new ShooterController();
            new TargetingController();
            new TurretAttackController();
            new TroopAttackController();
            new BuffController();
            new TroopAbilityController();
            new ArmoryController();
            new DeployableShardUnlockController();
            new FXManager();
            new AnimationEventManager();
            new StarportDecalManager();
            if (!HardwareProfile.IsLowEndDevice())
            {
                new TerrainBlendController();
            }
            new BuildingTooltipController();
            new CurrencyEffects();
            new CurrencyController();
            new StorageEffects();
            new AnimController();
            new UnlockController();
            new RewardManager();
            new CampaignController();
            new TournamentController();
            new PvpManager();
            new NeighborVisitManager();
            new TransportController();
            new ShuttleController();
            new ShieldEffects();
            new ShieldController();
            new MobilizationEffectsManager();
            new SocialPushNotificationController();
            new FactionIconUpgradeController();
            new TroopDonationTrackController();
            new LimitedEditionItemController();
            VideoPlayerKeepAlive.Init();
            new VideoDataManager();
            if (GameConstants.IsMakerVideoEnabled())
            {
                new ThumbnailManager();
            }
            Service.Get <NotificationController>().Init();
            Service.Get <EventManager>().SendEvent(EventId.InitializeGeneralSystemsEnd, null);
            new TargetedBundleController();
            HolonetController holonetController = new HolonetController();

            holonetController.PrepareContent(new HolonetController.HolonetPreparedDelegate(this.OnHolonetPrepared));
            new InventoryCrateRewardController();
            new ObjectiveManager();
            new ObjectiveController();
        }