protected override void Awake()
    {
        base.Awake();
        interactableObject = GetComponent <InteractableObject>();
        if (interactableObject == null)
        {
            interactableObject = gameObject.AddComponent <InteractableObject>();
        }

        Transform corporealCube = transform.Find("CorporealCube");
        Transform invertedCube  = transform.Find("InvertedCube");

        pickupCube = GetComponent <PickupObject>();

        corporealCubeDimensionObj = corporealCube.GetComponent <PillarDimensionObject>();
        invertedCubeDimensionObj  = invertedCube.GetComponent <PillarDimensionObject>();

        cubeFrameRenderer      = corporealCube.GetComponent <SuperspectiveRenderer>();
        corporealGlassRenderer = corporealCube.Find("Glass").GetComponent <SuperspectiveRenderer>();
        invertedCubeRenderer   = invertedCube.GetComponent <SuperspectiveRenderer>();
        raymarchRenderer       = invertedCube.Find("Glass (Raymarching)").GetComponent <SuperspectiveRenderer>();

        thisCollider                   = GetComponent <BoxCollider>();
        defaultPhysicsMaterial         = thisCollider.material;
        kinematicCollider              = invertedCube.Find("KinematicCollider").GetComponent <BoxCollider>();
        detectWhenPlayerIsNearCollider = invertedCube.Find("DetectPlayerIsNearCollider").GetComponent <BoxCollider>();
    }
    // Use this for initialization
    void Awake()
    {
        thisPillar    = GetComponent <DimensionPillar>();
        thisRenderer  = GetComponent <SuperspectiveRenderer>();
        optionalGlass = GetComponentInChildren <GlassGlow>();

        wasActive = thisPillar.enabled;
    }
Пример #3
0
        IEnumerator Start()
        {
            r = GetComponent <SuperspectiveRenderer>();
            if (r == null)
            {
                r = gameObject.AddComponent <SuperspectiveRenderer>();
            }

            yield return(null);

            startEmission = r.GetColor(emissionColorKey);
        }
Пример #4
0
    // Use this for initialization
    void Start()
    {
        if (buttonToReactTo == null)
        {
            buttonToReactTo = GetComponent <Button>();
        }
        if (buttonToReactTo == null)
        {
            Debug.LogWarning("No button to react to, disabling color change script", gameObject);
            enabled = false;
            return;
        }

        r = GetComponent <SuperspectiveRenderer>();
        if (r == null)
        {
            r = gameObject.AddComponent <SuperspectiveRenderer>();
        }

        if (useMaterialAsEndColor)
        {
            pressColor    = r.GetMainColor();
            pressEmission = r.GetColor("_EmissionColor");
        }

        if (useMaterialAsStartColor)
        {
            startColor    = r.GetMainColor();
            startEmission = r.GetColor("_EmissionColor");
        }
        else
        {
            r.SetMainColor(startColor);
            r.SetColor("_EmissionColor", startEmission);
        }

        buttonToReactTo.OnButtonPressFinish   += ButtonPressFinish;
        buttonToReactTo.OnButtonUnpressFinish += ButtonUnpressFinish;
    }
Пример #5
0
 void Start()
 {
     thisRenderer          = GetComponent <SuperspectiveRenderer>();
     solutionColor         = thisRenderer.GetMainColor();
     solutionEmissionColor = thisRenderer.GetColor("_EmissionColor");
 }
Пример #6
0
        protected override void Awake()
        {
            base.Awake();

            dimensionObject = gameObject.FindDimensionObjectRecursively <DimensionObject>();
            string shaderPath = "Shaders/Suberspective/SuberspectivePortal";

            portalMaterial = new Material(Resources.Load <Shader>(shaderPath));
            if (fallbackMaterial == null)
            {
                fallbackMaterial = Resources.Load <Material>("Materials/Invisible");
            }

            if (renderers == null || renderers.Length == 0)
            {
                if (compositePortal)
                {
                    renderers = GetComponentsInChildren <Renderer>()
                                .Select(r => r.GetOrAddComponent <SuperspectiveRenderer>()).ToArray();
                }
                else
                {
                    renderers = new SuperspectiveRenderer[] { GetComponents <Renderer>().Select(r => r.GetOrAddComponent <SuperspectiveRenderer>()).FirstOrDefault() };
                }
            }
            foreach (var r in renderers)
            {
                r.gameObject.layer = LayerMask.NameToLayer("Portal");
                r.SetMaterial(pauseRenderingAndLogic ? fallbackMaterial : portalMaterial);
            }
            if (colliders == null || colliders.Length == 0)
            {
                if (compositePortal)
                {
                    colliders = GetComponentsInChildren <Collider>();
                }
                else
                {
                    colliders = new Collider[] { GetComponent <Collider>() };
                }
            }

            if (colliders.Length == 0)
            {
                Debug.LogError("No Colliders found in this object or its children", gameObject);
                enabled = false;
                return;
            }

            CreateCompositeTrigger();
            InitializeCompositeTrigger();

            foreach (var c in colliders)
            {
                if (c.gameObject != this.gameObject)
                {
                    // PortalColliders handle non-player objects passing through portals
                    c.gameObject.AddComponent <PortalCollider>().portal = this;
                    if (c is BoxCollider boxCollider)
                    {
                        var size = boxCollider.size;
                        size             = new Vector3(size.x, size.y, portalThickness);
                        boxCollider.size = size;
                    }
                }
            }

            volumetricPortalPrefab = Resources.Load <GameObject>("Prefabs/VolumetricPortal");
            volumetricPortals      = colliders.Select(r => Instantiate(volumetricPortalPrefab, r.transform, false).GetOrAddComponent <SuperspectiveRenderer>()).ToArray();
            for (int i = 0; i < volumetricPortals.Length; i++)
            {
                SuperspectiveRenderer vp = volumetricPortals[i];
                Collider collider        = colliders[i];
                Vector3  vpScale         = Vector3.one;
                if (collider is BoxCollider boxCollider)
                {
                    vpScale = boxCollider.size / 10f;
                }
                else if (collider is MeshCollider meshCollider)
                {
                    vpScale = meshCollider.bounds.size / 10f;
                }
                else
                {
                    Debug.LogError("Collider type: " + collider.GetType().ToString() + " not handled.");
                }
                vpScale.z = 1f;
                vp.transform.localScale = vpScale;

                vp.enabled = false;
            }
        }
Пример #7
0
 // Use this for initialization
 void Start()
 {
     thisRenderer       = GetComponent <SuperspectiveRenderer>();
     startEmissionColor = thisRenderer.GetColor(emissionColorName);
 }