//called by Futile public static void Init() { Quad = CreateFacetType("Quad", 10, 10, 60, CreateQuadLayer); Triangle = CreateFacetType("Triangle", 16, 16, 64,CreateTriLayer); defaultFacetType = Quad; }
public static void Init() //called by Futile { Quad = CreateFacetType("Quad", 10, 10, 60, CreateQuadLayer); Triangle = CreateFacetType("Triangle", 16, 16, 64, CreateTriLayer); defaultFacetType = Quad; }
protected void Init(FFacetType facetType, FAtlasElement element, int numberOfFacetsNeeded) { _element = element; base.Init(facetType,_element.atlas,numberOfFacetsNeeded); HandleElementChanged(); }
protected void Init(FFacetType facetType, FAtlasElement element, int numberOfFacetsNeeded) { _element = element; base.Init(facetType, _element.atlas, numberOfFacetsNeeded); HandleElementChanged(); }
public FMeshData(params FMeshFacet[] inFacets) { facets = new List<FMeshFacet>(inFacets); if(facets.Count != 0) { facetType = facets[0].facetType; } }
public FMeshData(List<FMeshFacet> inFacets) { facets = inFacets; if(facets.Count != 0) { facetType = facets[0].facetType; } }
public FMeshData(List <FMeshFacet> inFacets) { facets = inFacets; if (facets.Count != 0) { facetType = facets[0].facetType; } }
public FMeshData(params FMeshFacet[] inFacets) { facets = new List <FMeshFacet>(inFacets); if (facets.Count != 0) { facetType = facets[0].facetType; } }
public void Init(FutileParams futileParams) { enabled = true; _futileParams = futileParams; Application.targetFrameRate = _futileParams.targetFrameRate; FShader.Init(); //set up the basic shaders FFacetType.Init(); //set up the types of facets (Quads, Triangles, etc) screen = new FScreen(_futileParams); // //Camera setup from https://github.com/prime31/UIToolkit/blob/master/Assets/Plugins/UIToolkit/UI.cs // if (existingCamera != null) { _cameraHolder = existingCamera.gameObject; _camera = existingCamera; } else { _cameraHolder = new GameObject(); _camera = _cameraHolder.AddComponent <Camera>(); } _cameraHolder.transform.parent = gameObject.transform; _camera.tag = "MainCamera"; _camera.clearFlags = CameraClearFlags.SolidColor; _camera.nearClipPlane = 0.0f; _camera.farClipPlane = 500.0f; _camera.depth = 100; _camera.rect = new Rect(0.0f, 0.0f, 1.0f, 1.0f); _camera.backgroundColor = _futileParams.backgroundColor; //we multiply this stuff by scaleInverse to make sure everything is in points, not pixels _camera.orthographic = true; _camera.orthographicSize = screen.pixelHeight / 2 * displayScaleInverse; UpdateCameraPosition(); touchManager = new FTouchManager(); atlasManager = new FAtlasManager(); CreateDefaultAtlases(); _stages = new List <FStage>(); stage = new FStage("Futile.stage"); AddStage(stage); }
virtual protected void Init(FFacetType facetType, FAtlas atlas, int numberOfFacetsNeeded) { _facetType = facetType; _atlas = atlas; if(_shader == null) _shader = FShader.defaultShader; _numberOfFacetsNeeded = numberOfFacetsNeeded; _hasInited = true; }
//create your own FFacetTypes by creating them here public static FFacetType CreateFacetType(string facetTypeShortName, int initialAmount, int expansionAmount, int maxEmptyAmount, CreateRenderLayerDelegate createRenderLayer) { for(int s = 0; s<_facetTypes.Count; s++) { if(_facetTypes[s].name == facetTypeShortName) return _facetTypes[s]; //don't add it if we have it already } FFacetType newFacetType = new FFacetType(facetTypeShortName, _nextFacetTypeIndex++, initialAmount, expansionAmount, maxEmptyAmount, createRenderLayer); _facetTypes.Add (newFacetType); return newFacetType; }
virtual protected void Init(FFacetType facetType, FAtlas atlas, int numberOfFacetsNeeded) { _facetType = facetType; _atlas = atlas; if (_shader == null) { _shader = FShader.defaultShader; } _numberOfFacetsNeeded = numberOfFacetsNeeded; _hasInited = true; }
protected void Init(FFacetType facetType, FAtlasElement element, int numberOfFacetsNeeded) { _facetType = facetType; _element = element; if (_shader == null) { _shader = FShader.defaultShader; } _numberOfFacetsNeeded = numberOfFacetsNeeded; HandleElementChanged(); }
public void Init(FutileParams futileParams) { enabled = true; _futileParams = futileParams; //设置游戏帧率 Application.targetFrameRate = _futileParams.targetFrameRate; //设置basic shaders FShader.Init(); //设置facets' types (Quads, Triangles, etc) FFacetType.Init(); //初始化各引擎组件实例 screen = new FScreen(_futileParams); touchManager = new FTouchManager(); atlasManager = new FAtlasManager(); //设置主相机参数:Setup from https://github.com/prime31/UIToolkit/blob/master/Assets/Plugins/UIToolkit/UI.cs _cameraHolder = new GameObject(); _cameraHolder.transform.parent = gameObject.transform; _camera = _cameraHolder.AddComponent <Camera>(); _camera.tag = "MainCamera"; _camera.name = "Camera"; //_camera.clearFlags = CameraClearFlags.Depth; //TODO: check if this is faster or not? _camera.clearFlags = CameraClearFlags.SolidColor; _camera.nearClipPlane = 0.0f; _camera.farClipPlane = 500.0f; _camera.depth = 100; _camera.rect = new Rect(0.0f, 0.0f, 1.0f, 1.0f); _camera.backgroundColor = _futileParams.backgroundColor; //we multiply this stuff by scaleInverse to make sure everything is in points, not pixels _camera.orthographic = true; _camera.orthographicSize = screen.pixelHeight / 2 * displayScaleInverse; UpdateCameraPosition(); //创建默认Atlas CreateDefaultAtlases(); //初始化Stage管理 _stages = new List <FStage>(); stage = new FStage("Futile.stage"); AddStage(stage); }
public FFacetRenderLayer(FStage stage, FFacetType facetType, FAtlas atlas, FShader shader) { this.stage = stage; this.facetType = facetType; this.atlas = atlas; this.shader = shader; _expansionAmount = facetType.expansionAmount; _maxEmptyFacets = facetType.maxEmptyAmount; this.batchIndex = facetType.index * 10000000 + atlas.index * 10000; _gameObject = new GameObject("FRenderLayer (" + stage.name + ") (" + facetType.name + ")"); _transform = _gameObject.transform; _transform.parent = Futile.instance.gameObject.transform; _meshFilter = _gameObject.AddComponent <MeshFilter>(); _meshRenderer = _gameObject.AddComponent <MeshRenderer>(); // warning CS0618: `UnityEngine.Renderer.castShadows' is obsolete: `Property castShadows has been deprecated. Use shadowCastingMode instead.' // UNITY5 UPDATE: http://docs.unity3d.com/ScriptReference/MeshRenderer.html // http://docs.unity3d.com/ScriptReference/Renderer-shadowCastingMode.html // http://docs.unity3d.com/ScriptReference/Rendering.ShadowCastingMode.html //_meshRenderer.castShadows = false; _meshRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; _meshRenderer.receiveShadows = false; _meshRenderer.useLightProbes = false; _meshRenderer.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off; _mesh = _meshFilter.mesh; //we could possibly create a pool of materials so they can be reused, //but that would create issues when unloading textures, so it's probably not worth it _material = new Material(shader.shader); _material.mainTexture = atlas.texture; _meshRenderer.GetComponent <Renderer>().sharedMaterial = _material; #if UNITY_3_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 _gameObject.active = false; #else _gameObject.SetActive(false); _mesh.MarkDynamic(); #endif ExpandMaxFacetLimit(facetType.initialAmount); UpdateTransform(); }
//create your own FFacetTypes by creating them here public static FFacetType CreateFacetType(string facetTypeShortName, int initialAmount, int expansionAmount, int maxEmptyAmount, CreateRenderLayerDelegate createRenderLayer) { for (int s = 0; s < _facetTypes.Count; s++) { if (_facetTypes[s].name == facetTypeShortName) { return(_facetTypes[s]); //don't add it if we have it already } } FFacetType newFacetType = new FFacetType(facetTypeShortName, _nextFacetTypeIndex++, initialAmount, expansionAmount, maxEmptyAmount, createRenderLayer); _facetTypes.Add(newFacetType); return(newFacetType); }
public FMeshFacet AddFacet(FMeshFacet facet) { if(facets == null) { facets = new List<FMeshFacet>(); facetType = facet.facetType; } if(facetType != facet.facetType) //check if the facet type is different from what we already have { Debug.LogError("You can't mix facet types in FMeshData!"); } facets.Add(facet); return facet; }
public FFacetRenderLayer(FStage stage, FFacetType facetType, FAtlas atlas, FShader shader) { _stage = stage; _facetType = facetType; _atlas = atlas; _shader = shader; _expansionAmount = _facetType.expansionAmount; _maxEmptyFacets = _facetType.maxEmptyAmount; batchIndex = _facetType.index * 10000000 + atlas.index * 10000 + shader.index; _gameObject = new GameObject("FRenderLayer (" + _stage.name + ") (" + _facetType.name + ")"); //Esteban. _gameObject.layer = 11; _stage.layer = 11; _transform = _gameObject.transform; _transform.parent = Futile.instance.gameObject.transform; _meshFilter = _gameObject.AddComponent <MeshFilter>(); _meshRenderer = _gameObject.AddComponent <MeshRenderer>(); _meshRenderer.castShadows = false; _meshRenderer.receiveShadows = false; _mesh = _meshFilter.mesh; _material = new Material(_shader.shader); _material.mainTexture = _atlas.texture; _meshRenderer.renderer.material = _material; #if UNITY_3_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 _gameObject.active = false; #else _gameObject.SetActive(false); _mesh.MarkDynamic(); #endif ExpandMaxFacetLimit(_facetType.initialAmount); UpdateTransform(); }
public FMeshFacet AddFacet(FMeshFacet facet) { if (facets == null) { facets = new List <FMeshFacet>(); facetType = facet.facetType; } if (facetType != facet.facetType) //check if the facet type is different from what we already have { Debug.LogError("You can't mix facet types in FMeshData!"); } facets.Add(facet); return(facet); }
protected FRenderLayer CreateRenderLayer(FFacetType facetType, int batchIndex, FAtlas atlas, FShader shader) { //first, check and see if we already have a layer that matches the batchIndex int previousLiveLayerCount = _previousLiveLayers.Count; for (int p = 0; p < previousLiveLayerCount; ++p) { FRenderLayer previousLiveLayer = _previousLiveLayers[p]; if (previousLiveLayer.batchIndex == batchIndex) { _previousLiveLayers.RemoveAt(p); _liveLayers.Add(previousLiveLayer); previousLiveLayer.depth = _depthToUse++; return(previousLiveLayer); } } //now see if we have a cached (old, now unused layer) that matches the batchIndex int cachedLayerCount = _cachedLayers.Count; for (int c = 0; c < cachedLayerCount; ++c) { FRenderLayer cachedLayer = _cachedLayers[c]; if (cachedLayer.batchIndex == batchIndex) { _cachedLayers.RemoveAt(c); cachedLayer.AddToWorld(); _liveLayers.Add(cachedLayer); cachedLayer.depth = _depthToUse++; return(cachedLayer); } } //still no layer found? create a new one! FRenderLayer newLayer = facetType.createRenderLayer(_stage, facetType, atlas, shader); _liveLayers.Add(newLayer); _allLayers.Add(newLayer); newLayer.AddToWorld(); newLayer.depth = _depthToUse++; return(newLayer); }
public FFacetRenderLayer(FStage stage, FFacetType facetType, FAtlas atlas, FShader shader) { _stage = stage; _facetType = facetType; _atlas = atlas; _shader = shader; _expansionAmount = _facetType.expansionAmount; _maxEmptyFacets = _facetType.maxEmptyAmount; batchIndex = _facetType.index * 10000000 + atlas.index * 10000 + shader.index; _gameObject = new GameObject("FRenderLayer (" + _stage.name + ") (" + _facetType.name + ")"); _transform = _gameObject.transform; _transform.parent = Futile.instance.gameObject.transform; _meshFilter = _gameObject.AddComponent <MeshFilter>(); _meshRenderer = _gameObject.AddComponent <MeshRenderer>(); _meshRenderer.castShadows = false; _meshRenderer.receiveShadows = false; _mesh = _meshFilter.mesh; //we could possibly create a pool of materials so they can be reused, //but that would create issues when unloading textures, so it's probably not worth it _material = new Material(_shader.shader); _material.mainTexture = _atlas.texture; _meshRenderer.GetComponent <Renderer>().sharedMaterial = _material; #if UNITY_3_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 _gameObject.active = false; #else _gameObject.SetActive(false); _mesh.MarkDynamic(); #endif ExpandMaxFacetLimit(_facetType.initialAmount); UpdateTransform(); }
public FFacetRenderLayer(FStage stage, FFacetType facetType, FAtlas atlas, FShader shader) { this.stage = stage; this.facetType = facetType; this.atlas = atlas; this.shader = shader; _expansionAmount = facetType.expansionAmount; _maxEmptyFacets = facetType.maxEmptyAmount; this.batchIndex = facetType.index*10000000 + atlas.index*10000; _gameObject = new GameObject("FRenderLayer ("+stage.name+") ("+facetType.name+")"); _transform = _gameObject.transform; _transform.parent = Futile.instance.gameObject.transform; _meshFilter = _gameObject.AddComponent<MeshFilter>(); _meshRenderer = _gameObject.AddComponent<MeshRenderer>(); _meshRenderer.castShadows = false; _meshRenderer.receiveShadows = false; _mesh = _meshFilter.mesh; //we could possibly create a pool of materials so they can be reused, //but that would create issues when unloading textures, so it's probably not worth it _material = new Material(shader.shader); _material.mainTexture = atlas.texture; _meshRenderer.GetComponent<Renderer>().sharedMaterial = _material; #if UNITY_3_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 _gameObject.active = false; #else _gameObject.SetActive(false); _mesh.MarkDynamic(); #endif ExpandMaxFacetLimit(facetType.initialAmount); UpdateTransform(); }
public FFacetRenderLayer(FStage stage, FFacetType facetType, FAtlas atlas, FShader shader) { this.stage = stage; this.facetType = facetType; this.atlas = atlas; this.shader = shader; _expansionAmount = facetType.expansionAmount; _maxEmptyFacets = facetType.maxEmptyAmount; this.batchIndex = facetType.index*10000000 + atlas.index*10000; _gameObject = new GameObject("FRenderLayer ("+stage.name+") ("+facetType.name+")"); _transform = _gameObject.transform; _transform.parent = Futile.instance.gameObject.transform; _meshFilter = _gameObject.AddComponent<MeshFilter>(); _meshRenderer = _gameObject.AddComponent<MeshRenderer>(); _meshRenderer.castShadows = false; _meshRenderer.receiveShadows = false; _mesh = _meshFilter.mesh; _material = new Material(shader.shader); _material.mainTexture = atlas.texture; _meshRenderer.renderer.sharedMaterial = _material; //_meshRenderer.renderer.material = _material; #if UNITY_3_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 _gameObject.active = false; #else _gameObject.SetActive(false); _mesh.MarkDynamic(); #endif ExpandMaxFacetLimit(facetType.initialAmount); UpdateTransform(); }
public FFacetRenderLayer(FStage stage, FFacetType facetType, FAtlas atlas, FShader shader) { _stage = stage; _facetType = facetType; _atlas = atlas; _shader = shader; _expansionAmount = _facetType.expansionAmount; _maxEmptyFacets = _facetType.maxEmptyAmount; batchIndex = _facetType.index*10000000 + atlas.index*10000 + shader.index; _gameObject = new GameObject("FRenderLayer ("+_stage.name+") ("+_facetType.name+")"); _transform = _gameObject.transform; _transform.parent = Futile.instance.gameObject.transform; _meshFilter = _gameObject.AddComponent<MeshFilter>(); _meshRenderer = _gameObject.AddComponent<MeshRenderer>(); //_meshRenderer.castShadows = false; _meshRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; _meshRenderer.receiveShadows = false; _mesh = _meshFilter.mesh; _material = new Material(_shader.shader); _material.mainTexture = _atlas.texture; _meshRenderer.GetComponent<Renderer>().material = _material; #if UNITY_3_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 _gameObject.active = false; #else _gameObject.SetActive(false); _mesh.MarkDynamic(); #endif ExpandMaxFacetLimit(_facetType.initialAmount); UpdateTransform(); }
protected FFacetRenderLayer CreateFacetRenderLayer(FFacetType facetType, int batchIndex, FAtlas atlas, FShader shader) { //first, check and see if we already have a layer that matches the batchIndex int previousLiveLayerCount = _previousLiveLayers.Count; for(int p = 0; p<previousLiveLayerCount; ++p) { FFacetRenderLayer previousLiveLayer = _previousLiveLayers[p]; if(previousLiveLayer.batchIndex == batchIndex) { _previousLiveLayers.RemoveAt(p); _liveLayers.Add (previousLiveLayer); _allRenderables.Add(previousLiveLayer); return previousLiveLayer; } } //now see if we have a cached (old, now unused layer) that matches the batchIndex int cachedLayerCount = _cachedLayers.Count; for(int c = 0; c<cachedLayerCount; ++c) { FFacetRenderLayer cachedLayer = _cachedLayers[c]; if(cachedLayer.batchIndex == batchIndex) { _cachedLayers.RemoveAt(c); cachedLayer.AddToWorld(); _liveLayers.Add (cachedLayer); _allRenderables.Add(cachedLayer); return cachedLayer; } } //still no layer found? create a new one! FFacetRenderLayer newLayer = facetType.createRenderLayer(_stage, facetType,atlas,shader); _liveLayers.Add(newLayer); _allLayers.Add(newLayer); _allRenderables.Add(newLayer); newLayer.AddToWorld(); return newLayer; }
public void GetFacetRenderLayer(out FFacetRenderLayer renderLayer, out int firstFacetIndex, FFacetType facetType, FAtlas atlas, FShader shader, int numberOfFacetsNeeded) { int batchIndex = facetType.index*10000000 + atlas.index*10000 + shader.index; if(_topLayer == null) { _topLayer = CreateFacetRenderLayer(facetType, batchIndex, atlas, shader); _topLayer.Open(); } else { if(_topLayer.batchIndex != batchIndex) //we're changing layers! { _topLayer.Close(); //close the old layer _topLayer = CreateFacetRenderLayer(facetType, batchIndex, atlas, shader); _topLayer.Open(); //open the new layer } } renderLayer = _topLayer; firstFacetIndex = _topLayer.GetNextFacetIndex(numberOfFacetsNeeded); }
public FRenderLayer(FStage stage, FFacetType facetType, FAtlas atlas, FShader shader) { _stage = stage; _facetType = facetType; _atlas = atlas; _shader = shader; _expansionAmount = _facetType.expansionAmount; _maxEmptyFacets = _facetType.maxEmptyAmount; batchIndex = _facetType.index*10000000 + atlas.index*10000 + shader.index; _gameObject = new GameObject("FRenderLayer ("+_stage.name+") ("+_facetType.name+")"); _transform = _gameObject.transform; _transform.parent = Futile.instance.gameObject.transform; _meshFilter = _gameObject.AddComponent<MeshFilter>(); _meshRenderer = _gameObject.AddComponent<MeshRenderer>(); _meshRenderer.castShadows = false; _meshRenderer.receiveShadows = false; _mesh = _meshFilter.mesh; _material = new Material(_shader.shader); _material.mainTexture = _atlas.texture; _meshRenderer.renderer.material = _material; _gameObject.active = false; ExpandMaxFacetLimit(_facetType.initialAmount); UpdateTransform(); }
public FRenderQuadLayer(FStage stage, FFacetType facetType, FAtlas atlas, FShader shader) : base(stage,facetType,atlas,shader) { }
static private FFacetRenderLayer CreateQuadLayer(FStage stage, FFacetType facetType, FAtlas atlas, FShader shader) { return(new FQuadRenderLayer(stage, facetType, atlas, shader)); }
public FTriangleRenderLayer(FStage stage, FFacetType facetType, FAtlas atlas, FShader shader) : base(stage,facetType,atlas,shader) { }
public FMeshNode(FFacetType facetType, string elementName) : this(new FMeshData(facetType), Futile.atlasManager.GetElementWithName(elementName)) { }
static private FFacetRenderLayer CreateTriLayer(FStage stage, FFacetType facetType, FAtlas atlas, FShader shader) { return(new FTriangleRenderLayer(stage, facetType, atlas, shader)); }
public FMeshData(FFacetType facetType) { this.facets = new List <FMeshFacet>(); this.facetType = facetType; }
public FMeshNode(FFacetType facetType, FAtlasElement element) : this(new FMeshData(facetType), element) { }
public FRenderQuadLayer(FStage stage, FFacetType facetType, FAtlas atlas, FShader shader) : base(stage, facetType, atlas, shader) { }
protected void Init(FFacetType facetType, FAtlasElement element, int numberOfFacetsNeeded) { _facetType = facetType; _element = element; if(_shader == null) _shader = FShader.defaultShader; _numberOfFacetsNeeded = numberOfFacetsNeeded; HandleElementChanged(); }
public FTriangleRenderLayer(FStage stage, FFacetType facetType, FAtlas atlas, FShader shader) : base(stage, facetType, atlas, shader) { }
//获取Facet渲染层级 public void GetFacetRenderLayer(out FFacetRenderLayer renderLayer, out int firstFacetIndex, FFacetType facetType, FAtlas atlas, FShader shader, int numberOfFacetsNeeded) { int batchIndex = facetType.index * 10000000 + atlas.index * 10000 + shader.index; if (_topLayer == null) { _topLayer = CreateFacetRenderLayer(facetType, batchIndex, atlas, shader); _topLayer.Open(); } else { if (_topLayer.batchIndex != batchIndex) //we're changing layers! { _topLayer.Close(); //close the old layer _topLayer = CreateFacetRenderLayer(facetType, batchIndex, atlas, shader); _topLayer.Open(); //open the new layer } } renderLayer = _topLayer; firstFacetIndex = _topLayer.GetNextFacetIndex(numberOfFacetsNeeded); }
public FMeshData(FFacetType facetType) { this.facets = new List<FMeshFacet>(); this.facetType = facetType; }
private static FRenderLayer CreateTriLayer(FStage stage, FFacetType facetType, FAtlas atlas, FShader shader) { return new FRenderTriangleLayer(stage,facetType,atlas,shader); }
static private FFacetRenderLayer CreateQuadLayer(FStage stage, FFacetType facetType, FAtlas atlas, FShader shader) { return new FQuadRenderLayer(stage,facetType,atlas,shader); }
public FMeshNode (FFacetType facetType, string elementName) : this(new FMeshData(facetType), Futile.atlasManager.GetElementWithName(elementName)) { }
public FMeshNode (FFacetType facetType, FAtlasElement element) : this(new FMeshData(facetType), element) { }