Exemplo n.º 1
0
        private void OnSceneGUI()
        {
            this.m_Object.Update();
            OcclusionArea occlusionArea = (OcclusionArea)this.target;
            Color         color         = Handles.color;

            Handles.color = new Color(145f, 244f, 139f, 255f) / 255f;
            Vector3 p          = occlusionArea.transform.TransformPoint(this.m_Center.vector3Value);
            Vector3 vector     = this.m_Size.vector3Value * 0.5f;
            Vector3 a          = this.m_Size.vector3Value * 0.5f;
            Vector3 lossyScale = occlusionArea.transform.lossyScale;
            Vector3 b          = new Vector3(1f / lossyScale.x, 1f / lossyScale.y, 1f / lossyScale.z);

            vector = Vector3.Scale(vector, lossyScale);
            a      = Vector3.Scale(a, lossyScale);
            bool changed = GUI.changed;

            vector.x = this.SizeSlider(p, -Vector3.right, vector.x);
            vector.y = this.SizeSlider(p, -Vector3.up, vector.y);
            vector.z = this.SizeSlider(p, -Vector3.forward, vector.z);
            a.x      = this.SizeSlider(p, Vector3.right, a.x);
            a.y      = this.SizeSlider(p, Vector3.up, a.y);
            a.z      = this.SizeSlider(p, Vector3.forward, a.z);
            if (GUI.changed)
            {
                this.m_Center.vector3Value = this.m_Center.vector3Value + Vector3.Scale(Quaternion.Inverse(occlusionArea.transform.rotation) * (a - vector) * 0.5f, b);
                vector = Vector3.Scale(vector, b);
                a      = Vector3.Scale(a, b);
                this.m_Size.vector3Value = a + vector;
                base.serializedObject.ApplyModifiedProperties();
            }
            GUI.changed  |= changed;
            Handles.color = color;
        }
        private void OnSceneGUI()
        {
            this.m_Object.Update();
            OcclusionArea target = (OcclusionArea)this.target;
            Color         color  = Handles.color;

            Handles.color = new Color(145f, 244f, 139f, (float)byte.MaxValue) / (float)byte.MaxValue;
            Vector3 p          = target.transform.TransformPoint(this.m_Center.vector3Value);
            Vector3 a1         = this.m_Size.vector3Value * 0.5f;
            Vector3 a2         = this.m_Size.vector3Value * 0.5f;
            Vector3 lossyScale = target.transform.lossyScale;
            Vector3 b          = new Vector3(1f / lossyScale.x, 1f / lossyScale.y, 1f / lossyScale.z);
            Vector3 a3         = Vector3.Scale(a1, lossyScale);
            Vector3 a4         = Vector3.Scale(a2, lossyScale);
            bool    changed    = GUI.changed;

            a3.x = this.SizeSlider(p, -Vector3.right, a3.x);
            a3.y = this.SizeSlider(p, -Vector3.up, a3.y);
            a3.z = this.SizeSlider(p, -Vector3.forward, a3.z);
            a4.x = this.SizeSlider(p, Vector3.right, a4.x);
            a4.y = this.SizeSlider(p, Vector3.up, a4.y);
            a4.z = this.SizeSlider(p, Vector3.forward, a4.z);
            if (GUI.changed)
            {
                this.m_Center.vector3Value = this.m_Center.vector3Value + Vector3.Scale(Quaternion.Inverse(target.transform.rotation) * (a4 - a3) * 0.5f, b);
                Vector3 vector3 = Vector3.Scale(a3, b);
                this.m_Size.vector3Value = Vector3.Scale(a4, b) + vector3;
                this.serializedObject.ApplyModifiedProperties();
            }
            GUI.changed  |= changed;
            Handles.color = color;
        }
Exemplo n.º 3
0
        private OcclusionArea CreateNewArea()
        {
            GameObject    obj2 = new GameObject("Occlusion Area");
            OcclusionArea area = obj2.AddComponent <OcclusionArea>();

            Selection.activeGameObject = obj2;
            return(area);
        }
        OcclusionArea CreateNewArea()
        {
            GameObject    go = new GameObject("Occlusion Area");
            OcclusionArea oa = go.AddComponent <OcclusionArea>();

            Selection.activeGameObject = go;
            return(oa);
        }
Exemplo n.º 5
0
        private OcclusionArea CreateNewArea()
        {
            GameObject    gameObject    = new GameObject("Occlusion Area");
            OcclusionArea occlusionArea = gameObject.AddComponent <OcclusionArea>();

            Selection.activeGameObject = gameObject;
            return(occlusionArea);
        }
Exemplo n.º 6
0
    // Use this for initialization
    void Start()
    {
        occlusion = gameObject.AddComponent <OcclusionArea> ();

        flagText     = GameObject.Find("FlagText").GetComponent <Text> ();
        timerText    = GameObject.Find("TimerText").GetComponent <Text> ();
        gameOverText = GameObject.Find("GameOverText").GetComponent <Text> ();

        Reset();
    }
Exemplo n.º 7
0
        private void Awake()
        {
            this.area = this.GetComponent <OcclusionArea>();

            var box = this.gameObject.AddComponent <BoxCollider>();

            box.size      = this.Size;
            box.isTrigger = true;
            box.hideFlags = HideFlags.HideInInspector;
        }
Exemplo n.º 8
0
        void OnSceneGUI()
        {
            if (!target)
            {
                return;
            }
            m_Object.Update();

            OcclusionArea area = (OcclusionArea)target;


            Color tempColor = Handles.color;

            Handles.color = new Color(145f, 244f, 139f, 255f) / 255;

            Vector3 offset = area.transform.TransformPoint(m_Center.vector3Value);

            // Get min and max extends from center and size
            Vector3 min = m_Size.vector3Value * 0.5f;
            Vector3 max = m_Size.vector3Value * 0.5f;

            // Yes, it's weird to use lossyScale here, but that's what the occlusion volumes do
            Vector3 scale        = area.transform.lossyScale;
            Vector3 inverseScale = new Vector3(1 / scale.x, 1 / scale.y, 1 / scale.z);

            min = Vector3.Scale(min, scale);
            max = Vector3.Scale(max, scale);

            // Handles
            bool temp = GUI.changed;

            min.x = SizeSlider(offset, -Vector3.right, min.x);
            min.y = SizeSlider(offset, -Vector3.up, min.y);
            min.z = SizeSlider(offset, -Vector3.forward, min.z);
            max.x = SizeSlider(offset, Vector3.right, max.x);
            max.y = SizeSlider(offset, Vector3.up, max.y);
            max.z = SizeSlider(offset, Vector3.forward, max.z);

            // Apply cahnges if there were any
            if (GUI.changed)
            {
                // Occlusion volumes can't be rotated but the center is still affected by rotation, so
                // we need to rotate the offset (and apply the inverse lossyScale AFTER that)
                m_Center.vector3Value = m_Center.vector3Value + Vector3.Scale(Quaternion.Inverse(area.transform.rotation) * (max - min) * 0.5f, inverseScale);
                min = Vector3.Scale(min, inverseScale);
                max = Vector3.Scale(max, inverseScale);
                m_Size.vector3Value = (max + min);

                serializedObject.ApplyModifiedProperties();
            }
            GUI.changed |= temp;

            Handles.color = tempColor;
        }
Exemplo n.º 9
0
    static int _CreateOcclusionArea(IntPtr L)
    {
        int count = LuaDLL.lua_gettop(L);

        if (count == 0)
        {
            OcclusionArea obj = new OcclusionArea();
            LuaScriptMgr.Push(L, obj);
            return(1);
        }
        else
        {
            LuaDLL.luaL_error(L, "invalid arguments to method: OcclusionArea.New");
        }

        return(0);
    }
Exemplo n.º 10
0
    public static int get_size(IntPtr l)
    {
        int result;

        try
        {
            OcclusionArea occlusionArea = (OcclusionArea)LuaObject.checkSelf(l);
            LuaObject.pushValue(l, true);
            LuaObject.pushValue(l, occlusionArea.size);
            result = 2;
        }
        catch (Exception e)
        {
            result = LuaObject.error(l, e);
        }
        return(result);
    }
Exemplo n.º 11
0
    public static int set_size(IntPtr l)
    {
        int result;

        try
        {
            OcclusionArea occlusionArea = (OcclusionArea)LuaObject.checkSelf(l);
            Vector3       size;
            LuaObject.checkType(l, 2, out size);
            occlusionArea.size = size;
            LuaObject.pushValue(l, true);
            result = 1;
        }
        catch (Exception e)
        {
            result = LuaObject.error(l, e);
        }
        return(result);
    }
Exemplo n.º 12
0
    static int get_size(IntPtr L)
    {
        object o = LuaScriptMgr.GetLuaObject(L, 1);

        if (o == null)
        {
            LuaTypes types = LuaDLL.lua_type(L, 1);

            if (types == LuaTypes.LUA_TTABLE)
            {
                LuaDLL.luaL_error(L, "unknown member name size");
            }
            else
            {
                LuaDLL.luaL_error(L, "attempt to index size on a nil value");
            }
        }

        OcclusionArea obj = (OcclusionArea)o;

        LuaScriptMgr.PushValue(L, obj.size);
        return(1);
    }
Exemplo n.º 13
0
    static int set_center(IntPtr L)
    {
        object o = LuaScriptMgr.GetLuaObject(L, 1);

        if (o == null)
        {
            LuaTypes types = LuaDLL.lua_type(L, 1);

            if (types == LuaTypes.LUA_TTABLE)
            {
                LuaDLL.luaL_error(L, "unknown member name center");
            }
            else
            {
                LuaDLL.luaL_error(L, "attempt to index center on a nil value");
            }
        }

        OcclusionArea obj = (OcclusionArea)o;

        obj.center = LuaScriptMgr.GetNetObject <Vector3>(L, 3);
        return(0);
    }
Exemplo n.º 14
0
        private static Object ReadAsset(AssetStream stream, AssetInfo assetInfo, long offset, int size)
        {
            Object asset;

            switch (assetInfo.ClassID)
            {
            case ClassIDType.GameObject:
                asset = new GameObject(assetInfo);
                break;

            case ClassIDType.Transform:
                asset = new Transform(assetInfo);
                break;

            case ClassIDType.Camera:
                asset = new Camera(assetInfo);
                break;

            case ClassIDType.Material:
                asset = new Material(assetInfo);
                break;

            case ClassIDType.MeshRenderer:
                asset = new MeshRenderer(assetInfo);
                break;

            case ClassIDType.Texture2D:
                asset = new Texture2D(assetInfo);
                break;

            case ClassIDType.SceneSettings:
                asset = new OcclusionCullingSettings(assetInfo);
                break;

            case ClassIDType.MeshFilter:
                asset = new MeshFilter(assetInfo);
                break;

            case ClassIDType.OcclusionPortal:
                asset = new OcclusionPortal(assetInfo);
                break;

            case ClassIDType.Mesh:
                asset = new Mesh(assetInfo);
                break;

            case ClassIDType.Shader:
                asset = new Shader(assetInfo);
                break;

            case ClassIDType.TextAsset:
                asset = new TextAsset(assetInfo);
                break;

            case ClassIDType.Rigidbody2D:
                asset = new Rigidbody2D(assetInfo);
                break;

            case ClassIDType.Rigidbody:
                asset = new Rigidbody(assetInfo);
                break;

            case ClassIDType.CircleCollider2D:
                asset = new CircleCollider2D(assetInfo);
                break;

            case ClassIDType.PolygonCollider2D:
                asset = new PolygonCollider2D(assetInfo);
                break;

            case ClassIDType.BoxCollider2D:
                asset = new BoxCollider2D(assetInfo);
                break;

            case ClassIDType.PhysicsMaterial2D:
                asset = new PhysicsMaterial2D(assetInfo);
                break;

            case ClassIDType.MeshCollider:
                asset = new MeshCollider(assetInfo);
                break;

            case ClassIDType.BoxCollider:
                asset = new BoxCollider(assetInfo);
                break;

            case ClassIDType.SpriteCollider2D:
                asset = new CompositeCollider2D(assetInfo);
                break;

            case ClassIDType.EdgeCollider2D:
                asset = new EdgeCollider2D(assetInfo);
                break;

            case ClassIDType.CapsuleCollider2D:
                asset = new CapsuleCollider2D(assetInfo);
                break;

            case ClassIDType.AnimationClip:
                asset = new AnimationClip(assetInfo);
                break;

            case ClassIDType.AudioListener:
                asset = new AudioListener(assetInfo);
                break;

            case ClassIDType.AudioSource:
                asset = new AudioSource(assetInfo);
                break;

            case ClassIDType.AudioClip:
                asset = new AudioClip(assetInfo);
                break;

            case ClassIDType.RenderTexture:
                asset = new RenderTexture(assetInfo);
                break;

            case ClassIDType.Cubemap:
                asset = new Cubemap(assetInfo);
                break;

            case ClassIDType.Avatar:
                asset = new Avatar(assetInfo);
                break;

            case ClassIDType.AnimatorController:
                asset = new AnimatorController(assetInfo);
                break;

            case ClassIDType.GUILayer:
                asset = new GUILayer(assetInfo);
                break;

            case ClassIDType.Animator:
                asset = new Animator(assetInfo);
                break;

            case ClassIDType.RenderSettings:
                asset = new RenderSettings(assetInfo);
                break;

            case ClassIDType.Light:
                asset = new Light(assetInfo);
                break;

            case ClassIDType.Animation:
                asset = new Animation(assetInfo);
                break;

            case ClassIDType.MonoScript:
                asset = new MonoScript(assetInfo);
                break;

            case ClassIDType.NewAnimationTrack:
                asset = new NewAnimationTrack(assetInfo);
                break;

            case ClassIDType.FlareLayer:
                asset = new FlareLayer(assetInfo);
                break;

            case ClassIDType.Font:
                asset = new Font(assetInfo);
                break;

            case ClassIDType.PhysicMaterial:
                asset = new PhysicMaterial(assetInfo);
                break;

            case ClassIDType.SphereCollider:
                asset = new SphereCollider(assetInfo);
                break;

            case ClassIDType.CapsuleCollider:
                asset = new CapsuleCollider(assetInfo);
                break;

            case ClassIDType.SkinnedMeshRenderer:
                asset = new SkinnedMeshRenderer(assetInfo);
                break;

            case ClassIDType.BuildSettings:
                asset = new BuildSettings(assetInfo);
                break;

            case ClassIDType.AssetBundle:
                asset = new AssetBundle(assetInfo);
                break;

            case ClassIDType.WheelCollider:
                asset = new WheelCollider(assetInfo);
                break;

            case ClassIDType.MovieTexture:
                asset = new MovieTexture(assetInfo);
                break;

            case ClassIDType.TerrainCollider:
                asset = new TerrainCollider(assetInfo);
                break;

            case ClassIDType.TerrainData:
                asset = new TerrainData(assetInfo);
                break;

            case ClassIDType.LightmapSettings:
                asset = new LightmapSettings(assetInfo);
                break;

            case ClassIDType.OcclusionArea:
                asset = new OcclusionArea(assetInfo);
                break;

            case ClassIDType.NavMeshSettings:
                asset = new NavMeshSettings(assetInfo);
                break;

            case ClassIDType.ParticleSystem:
                asset = new ParticleSystem(assetInfo);
                break;

            case ClassIDType.ParticleSystemRenderer:
                asset = new ParticleSystemRenderer(assetInfo);
                break;

            case ClassIDType.SpriteRenderer:
                asset = new SpriteRenderer(assetInfo);
                break;

            case ClassIDType.Sprite:
                asset = new Sprite(assetInfo);
                break;

            case ClassIDType.Terrain:
                asset = new Terrain(assetInfo);
                break;

            case ClassIDType.AnimatorOverrideController:
                asset = new AnimatorOverrideController(assetInfo);
                break;

            case ClassIDType.CanvasRenderer:
                asset = new CanvasRenderer(assetInfo);
                break;

            case ClassIDType.Canvas:
                asset = new Canvas(assetInfo);
                break;

            case ClassIDType.RectTransform:
                asset = new RectTransform(assetInfo);
                break;

            case ClassIDType.NavMeshData:
                asset = new NavMeshData(assetInfo);
                break;

            case ClassIDType.OcclusionCullingData:
                asset = new OcclusionCullingData(assetInfo);
                break;

            case ClassIDType.SceneAsset:
                asset = new SceneAsset(assetInfo);
                break;

            case ClassIDType.LightmapParameters:
                asset = new LightmapParameters(assetInfo);
                break;

            case ClassIDType.SpriteAtlas:
                asset = new SpriteAtlas(assetInfo);
                break;

            default:
                return(null);
            }

            stream.BaseStream.Position = offset;
            if (Config.IsGenerateGUIDByContent)
            {
                byte[] data = stream.ReadBytes(size);
                asset.Read(data);

                using (MD5 md5 = MD5.Create())
                {
                    byte[] md5Hash = md5.ComputeHash(data);
                    assetInfo.GUID = new UtinyGUID(md5Hash);
                }
            }
            else
            {
                stream.AlignPosition = offset;
                asset.Read(stream);
                long read = stream.BaseStream.Position - offset;
                if (read != size)
                {
                    throw new Exception($"Read {read} but expected {size} for object {asset.GetType().Name}");
                }
            }
            return(asset);
        }
Exemplo n.º 15
0
    // Use this for initialization
    void Start()
    {
        Random.InitState(randomSeed);

        parentGen = GameObject.Find("Main").GetComponent <LevelGen>();
        iStats    = parentGen.islandStats[iStatsIndex];
        SetBaseHeight(iStats.baseLayerHeight);


        islandUpdater = GetComponent <IslandUpdater>();

        transform.position = Random.onUnitSphere;
        farHolder          = transform.Find("Far");
        closeHolder        = transform.Find("Close");

        cloudHolder            = transform.Find("CloudHolder");
        cloudHolder.localScale = Vector3.one * radius / 2;
        cloudCover             = cloudHolder.GetComponentInChildren <ParticleSystem>();
        cloudHolder.gameObject.SetActive(false); //TODO Re enable if this ever works well enough

        ParticleSystem.MainModule cloudCoverMain = cloudCover.main;
        cloudCoverMain.startSizeMultiplier *= radius;

        spin       = Random.Range(0.0f, 360.0f);
        spinSpeed  = Random.Range(-maxSpinSpeed, maxSpinSpeed);
        timeRecalc = Random.Range(0, parentGen.islandMoveIntervals);

        foreach (PerlinLayer layer in iStats.layerStats)
        {
            layer.Set(); //TODO maybe save seperatley incase we need to reaccess this (it will get overwritten by the next island)
        }

        GenerateLowQuality();
        tiles = new HexType[iStats.layerStats.Count + iStats.cityLayerStats.Count, size, size];
        GenerateBaseHexes();
        //TODO put in a loop
        if (iStats.cityLayerStats.Count != 0)
        {
            for (int index = 0; index < iStats.cityLayerStats.Count; index++)
            {
                iStats.cityLayerStats[index].GenerateHuts(iStats.layerStats.Count + index, tiles);
                iStats.cityLayerStats[index].GenerateConnections(iStats.layerStats.Count + index, tiles);
                iStats.cityLayerStats[index].RemoveSingleHuts(iStats.layerStats.Count + index, tiles);
                iStats.cityLayerStats[index].FillHoles(iStats.layerStats.Count + index, tiles);
                iStats.cityLayerStats[index].RemoveIfNoBottom(iStats.layerStats.Count + index, tiles);
                if (index != 0)
                {
                    iStats.cityLayerStats[index - 1].GenerateStairs(iStats.layerStats.Count + index - 1, tiles);
                }
                //iStats.cityLayerStats [index].RemoveSingleHuts (iStats.layerStats.Count + index, tiles);
            }
        }
        DrawBaseHexes();
        if (iStats.cityLayerStats.Count != 0)
        {
            DrawCityHexes();
        }

        CapsuleCollider cTemp = gameObject.GetComponent <CapsuleCollider>();

        cTemp.radius = radius + 5;
        cTemp.height = cTemp.radius * 2f;

        OcclusionArea oTemp = gameObject.GetComponent <OcclusionArea>();

        oTemp.size = Vector3.one * (radius + 1) * 2;

        islandUpdater.SetExpectedNumOfWeapons();

        //TODO Fix to allow more or less islands added.
        if (!isServer)
        {
            parentGen.islandStats[iStatsIndex].islands.Add(this);
            parentGen.AddOneIsland(this);
        }

        SetFar(true);

        Random.InitState((int)System.DateTime.Now.Ticks);

        if (isServer)
        {
            UpdateToSpherePosition(true);
        }
    }
Exemplo n.º 16
0
    //StaticOcclusionCulling SOC;

    private void Awake()
    {
        OA = OA.GetComponent <OcclusionArea>();
        BakeArea();
    }
 public static Tween TweenCenter(this OcclusionArea area, Vector3 to, float duration) =>
 Tweening.To(getter: () => area.center,
             setter: center => area.center = center,
             to, duration).SetTarget(area);
 public static Tween TweenSize(this OcclusionArea area, Vector3 to, float duration) =>
 Tweening.To(getter: () => area.size,
             setter: size => area.size = size,
             to, duration).SetTarget(area);
Exemplo n.º 19
0
        public void calculateBounds()
        {
            this.cullMagnitude    = 64f * this.bias;
            this.sqrCullMagnitude = this.cullMagnitude * this.cullMagnitude;
            if (this.lod == EObjectLOD.MESH)
            {
                ObjectsLOD.meshes.Clear();
                base.GetComponentsInChildren <MeshFilter>(true, ObjectsLOD.meshes);
                if (ObjectsLOD.meshes.Count == 0)
                {
                    base.enabled = false;
                    return;
                }
                Bounds item = default(Bounds);
                for (int i = 0; i < ObjectsLOD.meshes.Count; i++)
                {
                    Mesh sharedMesh = ObjectsLOD.meshes[i].sharedMesh;
                    if (!(sharedMesh == null))
                    {
                        Bounds bounds = sharedMesh.bounds;
                        item.Encapsulate(bounds.min);
                        item.Encapsulate(bounds.max);
                    }
                }
                item.Expand(-1f);
                item.center += this.center;
                item.size   += this.size;
                if (item.size.x < 1f || item.size.y < 1f || item.size.z < 1f)
                {
                    base.enabled = false;
                    return;
                }
                this.bounds = new List <Bounds>();
                this.bounds.Add(item);
            }
            else if (this.lod == EObjectLOD.AREA)
            {
                ObjectsLOD.areas.Clear();
                base.GetComponentsInChildren <OcclusionArea>(true, ObjectsLOD.areas);
                if (ObjectsLOD.areas.Count == 0)
                {
                    base.enabled = false;
                    return;
                }
                this.bounds = new List <Bounds>();
                for (int j = 0; j < ObjectsLOD.areas.Count; j++)
                {
                    OcclusionArea occlusionArea = ObjectsLOD.areas[j];
                    Bounds        item2;
                    item2..ctor(occlusionArea.transform.localPosition + occlusionArea.center, new Vector3(occlusionArea.size.x, occlusionArea.size.z, occlusionArea.size.y));
                    this.bounds.Add(item2);
                }
            }
            this.objects = new List <LevelObject>();
            for (int k = 0; k < this.bounds.Count; k++)
            {
                Bounds bounds2 = this.bounds[k];
                this.cullCenter += bounds2.center;
            }
            this.cullCenter /= (float)this.bounds.Count;
            this.cullCenter  = base.transform.TransformPoint(this.cullCenter);
            byte b;
            byte b2;

            Regions.tryGetCoordinate(this.cullCenter, out b, out b2);
            for (int l = (int)(b - 1); l <= (int)(b + 1); l++)
            {
                for (int m = (int)(b2 - 1); m <= (int)(b2 + 1); m++)
                {
                    for (int n = 0; n < LevelObjects.objects[l, m].Count; n++)
                    {
                        LevelObject levelObject = LevelObjects.objects[l, m][n];
                        if (levelObject.asset != null && !(levelObject.transform == null) && levelObject.asset.type != EObjectType.LARGE)
                        {
                            if (!levelObject.isSpeciallyCulled)
                            {
                                Vector3 vector = base.transform.InverseTransformPoint(levelObject.transform.position);
                                bool    flag   = false;
                                for (int num = 0; num < this.bounds.Count; num++)
                                {
                                    if (this.bounds[num].Contains(vector))
                                    {
                                        flag = true;
                                        break;
                                    }
                                }
                                if (flag)
                                {
                                    levelObject.isSpeciallyCulled = true;
                                    this.objects.Add(levelObject);
                                }
                            }
                        }
                    }
                }
            }
            if (this.objects.Count == 0)
            {
                base.enabled = false;
                return;
            }
        }