protected Light(Light input) : base(input) { Color = input.Color; intensity = input.intensity; falloff = input.falloff; fov = input.fov; light_type = input.light_type; strct = input.strct; //Initialize new MeshVao meshVao = new GLMeshVao(); meshVao.type = TYPES.LIGHT; meshVao.vao = new Primitives.LineSegment(1, new Vector3(1.0f, 0.0f, 0.0f)).getVAO(); meshVao.metaData = new MeshMetaData(); meshVao.metaData.batchcount = 2; meshVao.material = RenderState.activeResMgr.GLmaterials["lightMat"]; instanceId = GLMeshBufferManager.addInstance(ref meshVao, this); //Add instance //Copy Matrices lightProjectionMatrix = input.lightProjectionMatrix; lightSpaceMatrices = new Matrix4[6]; for (int i = 0; i < 6; i++) { lightSpaceMatrices[i] = input.lightSpaceMatrices[i]; } update_struct(); RenderState.activeResMgr.GLlights.Add(this); }
public Light() { type = TYPES.LIGHT; fov = 360; intensity = 1.0f; falloff = ATTENUATION_TYPE.CONSTANT; light_type = LIGHT_TYPE.POINT; //Initialize new MeshVao meshVao = new GLMeshVao(); meshVao.type = TYPES.LIGHT; meshVao.vao = new Primitives.LineSegment(1, new Vector3(1.0f, 0.0f, 0.0f)).getVAO(); meshVao.metaData = new MeshMetaData(); meshVao.metaData.batchcount = 2; meshVao.material = Common.RenderState.activeResMgr.GLmaterials["lightMat"]; instanceId = GLMeshBufferManager.addInstance(ref meshVao, this); // Add instance //Init projection Matrix lightProjectionMatrix = Matrix4.CreatePerspectiveFieldOfView(MathUtils.radians(90), 1.0f, 1.0f, 300f); //Init lightSpace Matrices lightSpaceMatrices = new Matrix4[6]; for (int i = 0; i < 6; i++) { lightSpaceMatrices[i] = Matrix4.Identity * lightProjectionMatrix; } //Catch changes to MVector from the UI color = new MVector4(1.0f); color.PropertyChanged += catchPropertyChanged; }