static void UpdateCollisions(DayLightTilemapCollider2D script) { if (GUILayout.Button("Update")) { // PhysicsShapeManager.Clear(); script.Initialize(); //LightingSource2D.ForceUpdateAll(); LightingManager2D.ForceUpdate(); } }
private static void DrawTilemapColliderShadows(Pass pass) { for (int i = 0; i < pass.tilemapColliderCount; i++) { DayLightTilemapCollider2D id = pass.tilemapColliderList[i]; if (id.shadowLayer != pass.layerId) { continue; } Shadow.DrawTilemap(id, pass.offset); } }
private static void DrawTilemapColliderMasks(Pass pass) { for (int i = 0; i < pass.tilemapColliderCount; i++) { DayLightTilemapCollider2D id = pass.tilemapColliderList[i]; if (id.maskLayer != pass.layerId) { continue; } SpriteRenderer2D.DrawTilemap(id, pass.offset); } }
static public void DrawTilemap(DayLightTilemapCollider2D id, Vector2 offset) { //if (id.InAnyCamera() == false) { // return; //} if (id.rectangle.maskType != LightTilemapCollider.MaskType.Sprite) { return; } LightTilemapCollider.Base tilemap = id.GetCurrentTilemap(); Vector2 scale = tilemap.TileWorldScale(); float rotation = id.transform.eulerAngles.z; Material material = Lighting2D.materials.GetMask(); foreach (LightTile tile in id.rectangle.mapTiles) { if (tile.GetOriginalSprite() == null) { return; } tile.UpdateTransform(tilemap); Vector2 tilePosition = tile.GetWorldPosition(tilemap); tilePosition += offset; // if (tile.NotInRange(tilePosition, light.size)) { // continue; //} virtualSpriteRenderer.sprite = tile.GetOriginalSprite(); material.color = Color.white; material.mainTexture = virtualSpriteRenderer.sprite.texture; Universal.Sprite.FullRect.Simple.Draw(tile.spriteMeshObject, material, virtualSpriteRenderer, tilePosition, scale, rotation); material.mainTexture = null; } }
static public void DrawTilemap(DayLightTilemapCollider2D id, Vector2 position) { //if (id.mainShape.shadowType == DayLightCollider2D.shadowType.None) { // return; //} // if (id.mainShape.shadowType == DayLightCollider2D.shadowType.Sprite) { // return; //} //if (id.mainShape.height < 0) { // return; //}// //if (id.InAnyCamera() == false) { // continue; //} // shadowTranslucency GL.Color(Color.black); foreach (DayLightingTile dayTile in id.dayTiles) { DayLighting.TilemapShadowMesh shadow = dayTile.shadowMesh; if (shadow == null) { continue; } Vector3 pos = new Vector3(position.x, position.y, 0); Matrix4x4 matrix = Matrix4x4.TRS(pos, Quaternion.Euler(0, 0, 0), Vector3.one); foreach (MeshObject mesh in shadow.softMeshes) { GLExtended.DrawMeshPass(mesh, pos, Vector3.one, 0); } foreach (MeshObject mesh in shadow.meshes) { GLExtended.DrawMeshPass(mesh, pos, Vector3.one, 0); } } }
public void Update(DayLightTilemapCollider2D id) { Transform transform = id.transform; moved = false; if (sunDirection != Lighting2D.DayLightingSettings.direction) { sunDirection = Lighting2D.DayLightingSettings.direction; moved = true; } if (sunHeight != Lighting2D.DayLightingSettings.height) { sunHeight = Lighting2D.DayLightingSettings.height; moved = true; } if (sunSoftness != Lighting2D.DayLightingSettings.softness.intensity) { sunSoftness = Lighting2D.DayLightingSettings.softness.intensity; moved = true; } if (height != id.height) { height = id.height; moved = true; } // Unnecesary check if (height < 0.01f) { height = 0.01f; } }
public bool Setup(LightingLayerSetting slayer, Camera camera) { if (slayer.layer < 0) { return(false); } layerId = (int)slayer.layer; layer = slayer; this.camera = camera; offset = -camera.transform.position; colliderList = DayLightCollider2D.List; colliderCount = colliderList.Count; tilemapColliderList = DayLightTilemapCollider2D.GetList(); tilemapColliderCount = tilemapColliderList.Count; drawShadows = slayer.type != LayerType.MaskOnly; drawMask = slayer.type != LayerType.ShadowsOnly; return(true); }
static public void Draw(Pass pass) { for (int id = 0; id < pass.sortList.count; id++) { Sorting.SortObject sortObject = pass.sortList.list[id]; switch (sortObject.type) { case Sorting.SortObject.Type.Collider: DayLightCollider2D collider = (DayLightCollider2D)sortObject.lightObject; if (collider != null) { if (collider.InAnyCamera() == false) { continue; } if (pass.drawShadows) { if (collider.mainShape.shadowType == DayLightCollider2D.ShadowType.Collider || collider.mainShape.shadowType == DayLightCollider2D.ShadowType.SpritePhysicsShape) { Lighting2D.materials.GetShadowBlur().SetPass(0); GL.Begin(GL.TRIANGLES); Shadow.Draw(collider, pass.offset); GL.End(); } SpriteRendererShadow.Draw(collider, pass.offset); } if (pass.drawMask) { SpriteRenderer2D.Draw(collider, pass.offset); } } break; case Sorting.SortObject.Type.TilemapCollider: DayLightTilemapCollider2D tilemap = (DayLightTilemapCollider2D)sortObject.lightObject; if (tilemap != null) { if (pass.drawShadows) { if (tilemap.ShadowsDisabled() == false) { Lighting2D.materials.GetShadowBlur().SetPass(0); GL.Begin(GL.TRIANGLES); Shadow.DrawTilemap(tilemap, pass.offset); GL.End(); } } if (pass.drawMask) { if (tilemap.MasksDisabled() == false) { SpriteRenderer2D.DrawTilemap(tilemap, pass.offset); } } } break; } } }
override public void OnInspectorGUI() { DayLightTilemapCollider2D script = target as DayLightTilemapCollider2D; script.tilemapType = (MapType)EditorGUILayout.EnumPopup("Tilemap Type", script.tilemapType); EditorGUILayout.Space(); switch (script.tilemapType) { case MapType.UnityRectangle: script.rectangle.shadowType = (LightTilemapCollider.ShadowType)EditorGUILayout.EnumPopup("Shadow Type", script.rectangle.shadowType); EditorGUI.BeginDisabledGroup(script.rectangle.shadowType == LightTilemapCollider.ShadowType.None); script.shadowLayer = EditorGUILayout.Popup("Shadow Layer (Day)", script.shadowLayer, Lighting2D.Profile.layers.lightLayers.GetNames()); switch (script.rectangle.shadowType) { case LightTilemapCollider.ShadowType.Grid: case LightTilemapCollider.ShadowType.SpritePhysicsShape: script.shadowTileType = (ShadowTileType)EditorGUILayout.EnumPopup("Shadow Tile Type", script.shadowTileType); break; } script.height = EditorGUILayout.FloatField("Shadow Distance", script.height); if (script.height < 0.1f) { script.height = 0.1f; } EditorGUI.EndDisabledGroup(); EditorGUILayout.Space(); script.rectangle.maskType = (LightTilemapCollider.MaskType)EditorGUILayout.EnumPopup("Mask Type", script.rectangle.maskType); EditorGUI.BeginDisabledGroup(script.rectangle.maskType == LightTilemapCollider.MaskType.None); //if (script.rectangle.maskType == LightTilemapCollider.Rectangle.MaskType.BumpedSprite) { // GUIBumpMapMode.Draw(script.bumpMapMode); //} EditorGUI.EndDisabledGroup(); break; case MapType.UnityIsometric: break; case MapType.UnityHexagon: break; case MapType.SuperTilemapEditor: script.superTilemapEditor.shadowTypeSTE = (SuperTilemapEditorSupport.TilemapCollider2D.ShadowType)EditorGUILayout.EnumPopup("Shadow Type", script.superTilemapEditor.shadowTypeSTE); script.shadowLayer = EditorGUILayout.Popup("Shadow Layer (Day)", script.shadowLayer, Lighting2D.Profile.layers.lightLayers.GetNames()); EditorGUILayout.Space(); script.superTilemapEditor.maskTypeSTE = (SuperTilemapEditorSupport.TilemapCollider2D.MaskType)EditorGUILayout.EnumPopup("Mask Type", script.superTilemapEditor.maskTypeSTE); EditorGUI.BeginDisabledGroup(script.superTilemapEditor.maskTypeSTE == SuperTilemapEditorSupport.TilemapCollider2D.MaskType.None); script.maskLayer = EditorGUILayout.Popup("Mask Layer (Day)", script.maskLayer, Lighting2D.Profile.layers.lightLayers.GetNames()); if (script.superTilemapEditor.maskTypeSTE == SuperTilemapEditorSupport.TilemapCollider2D.MaskType.BumpedSprite) { GUIBumpMapMode.Draw(serializedObject, script); } EditorGUI.EndDisabledGroup(); break; } EditorGUILayout.Space(); UpdateCollisions(script); if (GUI.changed) { script.Initialize(); if (EditorApplication.isPlaying == false) { EditorUtility.SetDirty(target); EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene()); } } }
public void SortObjects() { sortList.Reset(); List <DayLightCollider2D> colliderList = DayLightCollider2D.List; for (int id = 0; id < colliderList.Count; id++) { DayLightCollider2D collider = colliderList[id]; if (collider.shadowLayer != layerId && collider.maskLayer != layerId) { continue; } switch (layer.sorting) { case LayerSorting.ZAxisLower: sortList.Add((object)collider, Sorting.SortObject.Type.Collider, -collider.transform.position.z); break; case LayerSorting.ZAxisHigher: sortList.Add((object)collider, Sorting.SortObject.Type.Collider, collider.transform.position.z); break; } switch (layer.sorting) { case LayerSorting.YAxisLower: sortList.Add((object)collider, Sorting.SortObject.Type.Collider, -collider.transform.position.y); break; case LayerSorting.YAxisHigher: sortList.Add((object)collider, Sorting.SortObject.Type.Collider, collider.transform.position.y); break; } } List <DayLightTilemapCollider2D> tilemapColliderList = DayLightTilemapCollider2D.list; for (int id = 0; id < tilemapColliderList.Count; id++) { DayLightTilemapCollider2D tilemap = tilemapColliderList[id]; if (tilemap.shadowLayer != layerId && tilemap.maskLayer != layerId) { continue; } switch (layer.sorting) { case LayerSorting.ZAxisLower: sortList.Add((object)tilemap, Sorting.SortObject.Type.TilemapCollider, -tilemap.transform.position.z); break; case LayerSorting.ZAxisHigher: sortList.Add((object)tilemap, Sorting.SortObject.Type.TilemapCollider, tilemap.transform.position.z); break; } switch (layer.sorting) { case LayerSorting.YAxisLower: sortList.Add((object)tilemap, Sorting.SortObject.Type.TilemapCollider, -tilemap.transform.position.y); break; case LayerSorting.YAxisHigher: sortList.Add((object)tilemap, Sorting.SortObject.Type.TilemapCollider, tilemap.transform.position.y); break; } } sortList.Sort(); }