private IEnumerator renderSprite(string unlockID)
    {
        AssetRequest <GameObject> assetRequest = Content.LoadAsync <GameObject>(unlockID);

        yield return(assetRequest);

        GameObject itemModel = Object.Instantiate(assetRequest.Asset);

        itemModel.transform.rotation = Quaternion.Euler(ITEM_MODEL_ROTATION);
        CameraCullingMaskHelper.SetLayerIncludingChildren(itemModel.transform, "IconRender");
        if (unlitTextureShader == null)
        {
            unlitTextureShader = Shader.Find("Unlit/Texture");
        }
        Material mat = new Material(unlitTextureShader)
        {
            mainTexture = itemModel.GetComponent <Renderer>().sharedMaterial.mainTexture
        };

        itemModel.GetComponent <Renderer>().material = mat;
        itemModel.AddComponent <ResourceCleaner>();
        ModelRenderer modelRenderer = new ModelRenderer(new ModelRendererConfig(itemModel.transform, MODEL_RENDER_OFFSET, new Vector2(256f, 256f))
        {
            FrameObjectInCamera = true
        });

        yield return(new WaitForEndOfFrame());

        callback(Sprite.Create(modelRenderer.Image, new Rect(0f, 0f, modelRenderer.Image.width, modelRenderer.Image.height), Vector2.zero), null);
        modelRenderer.Destroy();
    }
示例#2
0
 protected virtual void OnEnable()
 {
     if (canSlideFromCurrentState())
     {
         animator.SetBool(AnimationHashes.Params.Slide, value: true);
         wasInAirAtStart    = LocomotionUtils.IsInAir(LocomotionUtils.GetAnimatorStateInfo(animator));
         IsSliding          = false;
         isFloatingOnWater  = false;
         isSupportedByWater = false;
         lastSplashTime     = -1f;
         impulses           = base.gameObject.AddComponent <ForceAccumulatorPrimitive>();
         impulses.SetData(mutableData.ImpulseProperties);
         impulses.enabled            = true;
         mutableData.WaterProperties = MasterData.WaterProperties;
         maxSpeedOnWaterWhenSteering = mutableData.WaterProperties.MaxSpeed;
         curSpeedOnWater             = motion.Velocity.magnitude;
         curSpeedOnWater             = Mathf.Clamp(curSpeedOnWater, 0f, maxSpeedOnWaterWhenSteering);
         momentumAtStart             = motion.Velocity;
         if (mutableData.WaterRipples != null)
         {
             waterRipples = Object.Instantiate(mutableData.WaterRipples);
             waterRipples.Stop();
             CameraCullingMaskHelper.SetLayerIncludingChildren(waterRipples.transform, LayerMask.LayerToName(base.gameObject.layer));
         }
         base.Broadcaster.OnInteractionPreStartedEvent += onInteractionPreStartedEvent;
     }
     else
     {
         base.enabled = false;
     }
 }
示例#3
0
        protected override void OnEnable()
        {
            AnimatorStateInfo    animatorStateInfo = LocomotionUtils.GetAnimatorStateInfo(animator);
            LocomotionController currentController = GetComponent <LocomotionTracker>().GetCurrentController();

            if (currentController is SlideController)
            {
                base.Sled          = ((SlideController)currentController).Sled;
                base.SledTransform = ((SlideController)currentController).SledTransform;
                base.Pilot         = ((SlideController)currentController).Pilot;
                if (base.Sled == null || base.SledTransform == null || base.Pilot == null || LocomotionUtils.IsInAir(animatorStateInfo) || LocomotionUtils.IsLanding(animatorStateInfo) || ((SlideController)currentController).CurrentMode == Mode.Animated)
                {
                    base.enabled = false;
                    return;
                }
                ((SlideController)currentController).ToRaceController = true;
                FromSlideController = true;
            }
            else if (!LocomotionUtils.IsIdling(animatorStateInfo) && !LocomotionUtils.IsLocomoting(animatorStateInfo))
            {
                base.enabled = false;
                return;
            }
            base.OnEnable();
            if (myMutableData.SpeedLinesTubeRacePrefab != null)
            {
                speedLines = Object.Instantiate(myMutableData.SpeedLinesTubeRacePrefab);
                CameraCullingMaskHelper.SetLayerIncludingChildren(speedLines.transform, LayerMask.LayerToName(base.gameObject.layer));
                Vector3    localPosition = new Vector3(speedLines.transform.position.x, speedLines.transform.position.y, speedLines.transform.position.z);
                Quaternion localRotation = new Quaternion(speedLines.transform.rotation.x, speedLines.transform.rotation.y, speedLines.transform.rotation.z, speedLines.transform.rotation.w);
                speedLines.transform.parent        = base.transform;
                speedLines.transform.localPosition = localPosition;
                speedLines.transform.localRotation = localRotation;
                speedLines.SetActive(value: false);
            }
            if (visualizeTrackSegment)
            {
                steeringObject         = new GameObject();
                steeringObjectRenderer = steeringObject.AddComponent <LineRenderer>();
                steeringObjectRenderer.transform.parent = base.gameObject.transform;
                steeringObjectRenderer.useWorldSpace    = true;
                trackDirObject   = new GameObject();
                trackDirRenderer = trackDirObject.AddComponent <LineRenderer>();
                trackDirObject.transform.parent = base.gameObject.transform;
                trackDirRenderer.useWorldSpace  = true;
            }
            if (FromSlideController)
            {
                mode           = Mode.Animated;
                base.IsSliding = true;
            }
            steerVel = Vector3.zero;
        }
示例#4
0
 protected void spawnParticles()
 {
     if (mutableData.ParticlesPrefab != null)
     {
         particles = Object.Instantiate(mutableData.ParticlesPrefab);
         particles.Stop();
         CameraCullingMaskHelper.SetLayerIncludingChildren(particles.transform, LayerMask.LayerToName(base.gameObject.layer));
         Vector3    localPosition = new Vector3(particles.transform.position.x, particles.transform.position.y, particles.transform.position.z);
         Quaternion localRotation = new Quaternion(particles.transform.rotation.x, particles.transform.rotation.y, particles.transform.rotation.z, particles.transform.rotation.w);
         particles.transform.parent        = base.transform;
         particles.transform.localPosition = localPosition;
         particles.transform.localRotation = localRotation;
     }
 }
示例#5
0
 public void AnimEvent_SpawnSled()
 {
     if (base.enabled && sled == null)
     {
         if (!IsSliding)
         {
             AnimEvent_ApplyImpulse();
         }
         sled          = Object.Instantiate(mutableData.SledPrefab, thisTransform.position, thisTransform.rotation);
         sledTransform = sled.transform;
         sled.GetComponent <TubeLoader>().SetDataHandle(GetComponent <AvatarDataHandle>(), this);
         CameraCullingMaskHelper.SetLayerIncludingChildren(sledTransform, LayerMask.LayerToName(base.gameObject.layer));
     }
 }
示例#6
0
 private void enableWaterEffects()
 {
     if (mutableData.Ripples != null && waterRipples == null)
     {
         waterRipples = UnityEngine.Object.Instantiate(mutableData.Ripples);
         waterRipples.Stop();
         CameraCullingMaskHelper.SetLayerIncludingChildren(waterRipples.transform, LayerMask.LayerToName(base.gameObject.layer));
     }
     if (mutableData.Splash != null)
     {
         GameObject gameObject = UnityEngine.Object.Instantiate(mutableData.Splash);
         gameObject.transform.position = new Vector3(base.transform.position.x, logicalSurfaceHeight + mutableData.SplashHeightOffset, base.transform.position.z);
         CameraCullingMaskHelper.SetLayerIncludingChildren(gameObject.transform, LayerMask.LayerToName(base.gameObject.layer));
     }
 }
示例#7
0
        private void setUpNameTag(DataEntityHandle handle, bool isLocalPlayer)
        {
            if (handle.IsNull || !dataEntityCollection.TryGetComponent <SessionIdData>(handle, out var component))
            {
                return;
            }
            long   sessionId   = component.SessionId;
            string displayName = dataEntityCollection.GetComponent <DisplayNameData>(handle).DisplayName;
            bool   flag        = dataEntityCollection.HasComponent <FriendData>(handle);

            if (!activePlayerNameTags.ContainsKey(sessionId))
            {
                PlayerNameTag playerNameTagFromPool = getPlayerNameTagFromPool();
                if (isLocalPlayer)
                {
                    playerNameTagFromPool.transform.SetParent(LocalPlayerContainer, worldPositionStays: false);
                    playerNameTagFromPool.SetNameTagType(PlayerNameTag.Type.LocalPlayer);
                }
                else if (flag)
                {
                    playerNameTagFromPool.transform.SetParent(FriendPlayersContainer, worldPositionStays: false);
                    playerNameTagFromPool.SetNameTagType(PlayerNameTag.Type.Friend);
                }
                else
                {
                    playerNameTagFromPool.transform.SetParent(RemotePlayersContainer, worldPositionStays: false);
                    playerNameTagFromPool.SetNameTagType(PlayerNameTag.Type.RemotePlayer);
                }
                playerNameTagFromPool.Handle = handle;
                playerNameTagFromPool.SetNameText(displayName);
                playerNameTagFromPool.transform.localScale    = Vector3.one;
                playerNameTagFromPool.transform.localRotation = Quaternion.identity;
                Transform transform = getTransform(sessionId);
                if (transform != null)
                {
                    CameraCullingMaskHelper.SetLayerIncludingChildren(playerNameTagFromPool.transform, LayerMask.LayerToName(transform.gameObject.layer));
                }
                activePlayerNameTags.Add(sessionId, new PlayerNameTagAndRectTransform(playerNameTagFromPool, playerNameTagFromPool.GetComponent <RectTransform>()));
                if (this.OnPlayerNameAdded != null)
                {
                    this.OnPlayerNameAdded(sessionId);
                }
                if (!nameTagsActive)
                {
                    playerNameTagFromPool.SetActive(isActive: false);
                }
            }
        }
示例#8
0
        public void OnCollisionEnter(Collision collision)
        {
            if (!base.enabled)
            {
                return;
            }
            if (collision.gameObject.layer == waterLayer)
            {
                if (collision.contacts.Length > 0 && mutableData.WaterSplash != null && pilotBody != null && Time.time - lastSplashTime >= mutableData.SplashCooldown)
                {
                    GameObject gameObject = Object.Instantiate(mutableData.WaterSplash);
                    if (gameObject != null)
                    {
                        Vector3 position = pilotBody.transform.position;
                        position.y = collision.contacts[0].point.y + mutableData.SplashOffset;
                        gameObject.transform.position = position;
                        CameraCullingMaskHelper.SetLayerIncludingChildren(gameObject.transform, LayerMask.LayerToName(base.gameObject.layer));
                    }
                    lastSplashTime = Time.time;
                }
                transitionToWater();
            }
            if (LocomotionUtils.GetAnimatorStateInfo(animator).tagHash == AnimationHashes.Tags.ReactingToHit || !(collision.impulse.sqrMagnitude >= minMagnitudeForBumpSq) || !(Mathf.Abs(collision.impulse.y) < 0.707f))
            {
                return;
            }
            Vector3 vector = thisTransform.position - collision.contacts[0].point;

            vector.y = 0f;
            if (vector.x != 0f && vector.z != 0f)
            {
                Vector3 forward = thisTransform.forward;
                forward.y = 0f;
                if (forward.x != 0f && forward.z != 0f)
                {
                    float num = LocomotionUtils.SignedAngle(forward.normalized, vector.normalized);
                    num = ((num < -157.5f) ? 180f : ((num < -112.5f) ? (-135f) : ((num < -67.5f) ? (-90f) : ((num < -22.5f) ? (-45f) : ((num < 22.5f) ? 0f : ((num < 67.5f) ? 45f : ((num < 112.5f) ? 90f : ((!(num < 157.5f)) ? 180f : 135f))))))));
                    animator.SetFloat(AnimationHashes.Params.Angle, num);
                    animator.SetTrigger(AnimationHashes.Params.Bump);
                }
            }
        }
    private GameObject getParticleFromPool()
    {
        GameObject gameObject = null;

        for (int i = 0; i < objectPool.Count; i++)
        {
            if (!objectPool[i].activeSelf)
            {
                gameObject = objectPool[i];
            }
        }
        if (gameObject == null)
        {
            gameObject = UnityEngine.Object.Instantiate(particlePrefab);
            CameraCullingMaskHelper.SetLayerIncludingChildren(gameObject.transform, "UI");
            objectPool.Add(gameObject);
        }
        gameObject.SetActive(value: true);
        return(gameObject);
    }
 public void Start()
 {
     CameraCullingMaskHelper.SetLayerIncludingChildren(base.gameObject.transform, "AllPlayerInteractibles", recursive: true);
 }