public void Sync() { bool needUpdate = false; if (transform.position != lastPositon) { lastPositon = transform.position; needUpdate = true; } if (transform.rotation != lastRostation) { lastRostation = transform.rotation; needUpdate = true; } if (transform.lossyScale != lastScale) { lastScale = transform.lossyScale; needUpdate = true; } if (needUpdate) { BocsCyclesAPI.UpdateObject(this.gameObject); } }
private void UpdateCycles() { if (cyclesNeedsUpdate == false) { return; } if (graphType == GraphType.Material) { BocsCyclesAPI.UpdateMaterial(bcg.gameObject); } if (graphType == GraphType.Light) { BocsCyclesAPI.UpdateObject(bcg.gameObject); } if (graphType == GraphType.World) { BocsCyclesAPI.Cycles_request_settings(); BocsCyclesAPI.Cycles_request_reset(); } cyclesNeedsUpdate = false; }
public void Sync() { bool needUpdate = false; if (transform.position != lastPositon) { needUpdate = true; } if (transform.rotation != lastRostation) { needUpdate = true; } if (transform.lossyScale != lastScale) { needUpdate = true; } bool needReset = false; if (AutoSync) { Light l = GetComponent <Light>(); if (lastColor != l.color) { needReset = true; } if (lastType != l.type) { needReset = true; } if (lastIntensity != l.intensity) { needReset = true; } if (lastRange != l.range) { needReset = true; } if (lastAngle != l.spotAngle) { needReset = true; } if (lastShadow != l.shadows) { needReset = true; } } NSync(); if (needReset) { Reset(); return; } if (needUpdate) { BocsCyclesAPI.UpdateObject(this.gameObject); } }
public override void OnInspectorGUI() { BocsCyclesLight script = (BocsCyclesLight)target; script.AutoSync = EditorGUILayout.Toggle("Auto Sync", script.AutoSync); if (script.AutoSync) { return; } if (GUILayout.Button("Editor")) { EditorWindow.GetWindow <EditorNodeEdit>(); } EditorGUI.BeginChangeCheck(); GUILayout.BeginVertical(GUI.skin.box); //script._enabled = EditorGUILayout.Toggle("Enabled",script._enabled); script.TypeSelected = EditorGUILayout.Popup("Type", script.TypeSelected, script.Type); if (script.TypeSelected == 2) { script.SpotAngle = EditorGUILayout.FloatField("Spot Angle", script.SpotAngle); } script.Shadow = EditorGUILayout.Toggle("Shadow", script.Shadow); script.UseMis = EditorGUILayout.Toggle("Multiple Importance", script.UseMis); script.Size = EditorGUILayout.FloatField("Size", script.Size); script.MaxBounces = EditorGUILayout.IntField("Max Bounces", script.MaxBounces); script.Diffuse = EditorGUILayout.Toggle("Diffuse", script.Diffuse); script.Glossy = EditorGUILayout.Toggle("Glossy", script.Glossy); script.Transmission = EditorGUILayout.Toggle("Transmission", script.Transmission); script.Scatter = EditorGUILayout.Toggle("Scatter", script.Scatter); script.IsPortal = EditorGUILayout.Toggle("Portal", script.IsPortal); GUILayout.EndVertical(); bool needUpdate = false; if (EditorGUI.EndChangeCheck()) { needUpdate = true; } if (script.transform.root.position != lastPositon) { lastPositon = script.transform.root.position; needUpdate = true; } if (script.transform.root.rotation != lastRostation) { lastRostation = script.transform.root.rotation; needUpdate = true; } if (script.transform.root.localScale != lastScale) { lastScale = script.transform.root.localScale; needUpdate = true; } //Some Checks... if (script.Size < 0) { script.Size = 0; } if (script.MaxBounces < 0) { script.MaxBounces = 0; } if (needUpdate) { BocsCyclesAPI.UpdateObject(script.gameObject); } debug = EditorGUILayout.Foldout(debug, "Debug"); if (debug) { //Debug.Log(script.GetShaderCount()); for (int i = 0; i < script.GetGraphCount(); i++) { //GUILayout.TextField(script._nodes); GUI.skin.textArea.wordWrap = true; EditorGUILayout.TextArea(script.Nodes[i]); } } }
public override void OnInspectorGUI() { if (texLogo == null) { Init(); } //Rect imgRect = GUILayoutUtility.GetRect(Screen.width - 64, 32); //GUI.DrawTexture(imgRect, _logo, ScaleMode.ScaleToFit); script = (BocsCyclesMaterial)target; int w = 32; int h = 32; GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button(texReset, GUILayout.Width(w), GUILayout.Height(h))) { script.Reset(); UpdateNodeEditor(); } if (GUILayout.Button(texShiny, GUILayout.Width(w), GUILayout.Height(h))) { UpdateMat("node|t=BocsNodeOutput,x=380,y=10:node|t=BocsNodeDisneyBsdf,x=40,y=10:val|n=1,s=distribution,v=0:val|n=1,s=base_color,v=FF0000FF:val|n=1,s=subsurface_color,v=FF0000FF:val|n=1,s=subsurface,v=0:val|n=1,s=subsurface_radius,v=1 1 1:val|n=1,s=metallic,v=0:val|n=1,s=specular,v=1:val|n=1,s=specular_tint,v=0:val|n=1,s=roughness,v=0:val|n=1,s=anisotropic,v=0:val|n=1,s=anisotropic_rotation,v=0:val|n=1,s=sheen,v=1:val|n=1,s=sheen_tint,v=0:val|n=1,s=clearcoat,v=0:val|n=1,s=clearcoat_gloss,v=1:val|n=1,s=ior,v=1.45:val|n=1,s=transparency,v=0:connect|n1=1,n2=0,s1=bsdf,s2=surface,:"); UpdateNodeEditor(); } if (GUILayout.Button(texGlass, GUILayout.Width(w), GUILayout.Height(h))) { UpdateMat("node|t=BocsNodeOutput,x=350,y=10:node|t=BocsNodeDisneyBsdf,x=30,y=10:node|t=BocsNodeAbsorptionVolume,x=30,y=460:val|n=1,s=distribution,v=0:val|n=1,s=base_color,v=FFFFFFFF:val|n=1,s=subsurface_color,v=FF0000FF:val|n=1,s=subsurface,v=0:val|n=1,s=subsurface_radius,v=1 1 1:val|n=1,s=metallic,v=0:val|n=1,s=specular,v=0:val|n=1,s=specular_tint,v=0:val|n=1,s=roughness,v=0:val|n=1,s=anisotropic,v=0.5:val|n=1,s=anisotropic_rotation,v=0:val|n=1,s=sheen,v=1:val|n=1,s=sheen_tint,v=0:val|n=1,s=clearcoat,v=0:val|n=1,s=clearcoat_gloss,v=1:val|n=1,s=ior,v=1.45:val|n=1,s=transparency,v=1:val|n=2,s=color,v=FF0000FF:val|n=2,s=density,v=0:connect|n1=1,n2=0,s1=bsdf,s2=surface,:connect|n1=2,n2=0,s1=volume,s2=volume,:"); UpdateNodeEditor(); } if (GUILayout.Button(texChrome, GUILayout.Width(w), GUILayout.Height(h))) { UpdateMat("node|t=BocsNodeOutput,x=380,y=10:node|t=BocsNodeDisneyBsdf,x=40,y=10:val|n=1,s=distribution,v=0:val|n=1,s=base_color,v=FFFFFFFF:val|n=1,s=subsurface_color,v=FF0000FF:val|n=1,s=subsurface,v=0:val|n=1,s=subsurface_radius,v=1 1 1:val|n=1,s=metallic,v=1:val|n=1,s=specular,v=0:val|n=1,s=specular_tint,v=0:val|n=1,s=roughness,v=0:val|n=1,s=anisotropic,v=0:val|n=1,s=anisotropic_rotation,v=0:val|n=1,s=sheen,v=1:val|n=1,s=sheen_tint,v=0:val|n=1,s=clearcoat,v=0:val|n=1,s=clearcoat_gloss,v=1:val|n=1,s=ior,v=1.45:val|n=1,s=transparency,v=0:connect|n1=1,n2=0,s1=bsdf,s2=surface,:"); UpdateNodeEditor(); } if (GUILayout.Button(texMetal, GUILayout.Width(w), GUILayout.Height(h))) { UpdateMat("node|t=BocsNodeOutput,x=380,y=10:node|t=BocsNodeDisneyBsdf,x=40,y=10:val|n=1,s=distribution,v=0:val|n=1,s=base_color,v=FFFFFFFF:val|n=1,s=subsurface_color,v=FF0000FF:val|n=1,s=subsurface,v=0:val|n=1,s=subsurface_radius,v=1 1 1:val|n=1,s=metallic,v=1:val|n=1,s=specular,v=0:val|n=1,s=specular_tint,v=0:val|n=1,s=roughness,v=0.25:val|n=1,s=anisotropic,v=1:val|n=1,s=anisotropic_rotation,v=0:val|n=1,s=sheen,v=0:val|n=1,s=sheen_tint,v=0:val|n=1,s=clearcoat,v=1:val|n=1,s=clearcoat_gloss,v=1:val|n=1,s=ior,v=1.45:val|n=1,s=transparency,v=0:connect|n1=1,n2=0,s1=bsdf,s2=surface,:"); UpdateNodeEditor(); } if (GUILayout.Button(texChecker, GUILayout.Width(w), GUILayout.Height(h))) { UpdateMat("node|t=BocsNodeOutput,x=690,y=20,c=0:node|t=BocsNodeDisneyBsdf,x=350,y=20,c=0:node|t=BocsNodeCheckerTexture,x=20,y=20,c=0:val|n=1,s=distribution,v=0:val|n=1,s=base_color,v=FFFFFFFF:val|n=1,s=subsurface_color,v=FF0000FF:val|n=1,s=subsurface,v=0:val|n=1,s=subsurface_radius,v=1 1 1:val|n=1,s=metallic,v=0:val|n=1,s=specular,v=0:val|n=1,s=specular_tint,v=0:val|n=1,s=roughness,v=0.5:val|n=1,s=anisotropic,v=0.5:val|n=1,s=anisotropic_rotation,v=0:val|n=1,s=sheen,v=1:val|n=1,s=sheen_tint,v=0:val|n=1,s=clearcoat,v=0:val|n=1,s=clearcoat_gloss,v=1:val|n=1,s=ior,v=1.45:val|n=1,s=transparency,v=0:val|n=2,s=color1,v=848484FF:val|n=2,s=color2,v=FFFFFFFF:val|n=2,s=scale,v=4:connect|n1=1,n2=0,s1=bsdf,s2=surface,:connect|n1=2,n2=1,s1=color,s2=base_color,:"); UpdateNodeEditor(); } if (GUILayout.Button(texWire, GUILayout.Width(w), GUILayout.Height(h))) { UpdateMat("node|t=BocsNodeOutput,x=540,y=10:node|t=BocsNodeDisneyBsdf,x=40,y=120:node|t=BocsNodeWireframe,x=40,y=10:node|t=BocsNodeMixShader,x=380,y=10:node|t=BocsNodeDiffuseBsdf,x=40,y=580:val|n=1,s=distribution,v=0:val|n=1,s=base_color,v=FFFFFFFF:val|n=1,s=subsurface_color,v=FF0000FF:val|n=1,s=subsurface,v=0:val|n=1,s=subsurface_radius,v=1 1 1:val|n=1,s=metallic,v=0:val|n=1,s=specular,v=0:val|n=1,s=specular_tint,v=0:val|n=1,s=roughness,v=0.5:val|n=1,s=anisotropic,v=0.5:val|n=1,s=anisotropic_rotation,v=0:val|n=1,s=sheen,v=1:val|n=1,s=sheen_tint,v=0:val|n=1,s=clearcoat,v=0:val|n=1,s=clearcoat_gloss,v=1:val|n=1,s=ior,v=1.45:val|n=1,s=transparency,v=0:val|n=2,s=use_pixel_size,v=False:val|n=2,s=size,v=0.01:val|n=3,s=fac,v=1:val|n=4,s=color,v=FF0000FF:val|n=4,s=roughness,v=0:connect|n1=1,n2=3,s1=bsdf,s2=closure1,:connect|n1=2,n2=3,s1=fac,s2=fac,:connect|n1=3,n2=0,s1=closure,s2=surface,:connect|n1=4,n2=3,s1=bsdf,s2=closure2,:"); UpdateNodeEditor(); } if (GUILayout.Button(texLight, GUILayout.Width(w), GUILayout.Height(h))) { UpdateMat("node|t=BocsNodeOutput,x=370,y=20,c=0:node|t=BocsNodeEmission,x=30,y=20,c=0:val|n=1,s=color,v=FAF3B5FF:val|n=1,s=strength,v=1:connect|n1=1,n2=0,s1=emission,s2=surface,:"); UpdateNodeEditor(); } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); if (GUILayout.Button("Editor")) { EditorWindow.GetWindow <EditorNodeEdit>(); } //script._cacheMesh = EditorGUILayout.Toggle("Cache Mesh",script._cacheMesh); EditorGUI.BeginChangeCheck();//Don't Update Because we click Editor!! GUILayout.BeginVertical(GUI.skin.box); script.Visibility = (BocsCyclesMaterial.PathRayFlag)EditorGUILayout.EnumMaskField("Visibility", (System.Enum)script.Visibility); //script._smooth = EditorGUILayout.Toggle("Smooth",script._smooth); GUILayout.EndVertical(); if (EditorGUI.EndChangeCheck()) { BocsCyclesAPI.UpdateObject(script.gameObject); } //EditorGUI.BeginChangeCheck();//Don't Update Because we click Editor!! //GUILayout.BeginVertical(GUI.skin.box); //script._use_mis = EditorGUILayout.Toggle("Multiple Importance",script._use_mis); //script._use_transparent_shadow = EditorGUILayout.Toggle("Transparent Shadow",script._use_transparent_shadow); //script._heterogeneous_volume = EditorGUILayout.Toggle("Heterogeneous Volume",script._heterogeneous_volume); //script._volume_sampling_method = EditorGUILayout.Popup("Volume Sampling",script._volume_sampling_method,script._volume_sampling_methods); //script._volume_interpolation_method = EditorGUILayout.Popup("Volume Interpolation",script._volume_interpolation_method,script._volume_interpolation_methods); //GUILayout.EndVertical(); //if (EditorGUI.EndChangeCheck()) BocsCycles.CyclesUpdateMaterial(script.gameObject); debug = EditorGUILayout.Foldout(debug, "Debug"); if (debug) { //Debug.Log(script.GetShaderCount()); for (int i = 0; i < script.GetGraphCount(); i++) { //GUILayout.TextField(script._nodes); GUI.skin.textArea.wordWrap = true; EditorGUILayout.TextArea(script.Nodes[i]); } } }