public override int OnCalculateSize(bool force) { //If a previous fog node has the same exact color array as this one, //both offsets will point to only the first color array. _match = null; //Reset data lengths for (int i = 0; i < 3; i++) { _dataLengths[i] = 0; } //Null nodes are only empty headers. No data. if (_name == "<null>") { return(SCN0Fog.Size); } //Add keyframe array sizes for (int i = 0; i < 2; i++) { CalcKeyLen(KeyArrays[i]); } _match = FindColorMatch(_constantColor, FrameCount, 0) as SCN0FogNode; if (_match == null && !_constantColor) { _dataLengths[1] += 4 * (FrameCount + 1); } return(SCN0Fog.Size); }
public override int OnCalculateSize(bool force) { _match = null; _keyLen = 0; _lightLen = 0; _visLen = 0; if (_name != "<null>") { if (_startKeys._keyCount > 1) { _keyLen += 8 + _startKeys._keyCount * 12; } if (_endKeys._keyCount > 1) { _keyLen += 8 + _endKeys._keyCount * 12; } if (!_constant) { foreach (SCN0FogNode n in Parent.Children) { if (n == this) { break; } if (!n._constant) { for (int i = 0; i < FrameCount + 1; i++) { if (n._colors[i] != _colors[i]) { break; } if (i == FrameCount) { _match = n; } } } if (_match != null) { break; } } if (_match == null) { _lightLen += 4 * (FrameCount + 1); } } } return(SCN0Fog.Size); }
private void nodeList_SelectedIndexChanged(object sender, EventArgs e) { if (nodeList.SelectedItem == null) { btnRename.Enabled = false; return; } else if (btnRename.Enabled == false) btnRename.Enabled = true; _mainWindow.KeyframePanel.TargetSequence = nodeList.SelectedItem as ResourceNode; switch (tabIndex) { case 0: _lightSet = nodeList.SelectedItem as SCN0LightSetNode; lstAmb.Items.Clear(); lstAmb.Items.Add("<null>"); foreach (SCN0AmbientLightNode s in SelectedAnimation.GetFolder<SCN0AmbientLightNode>().Children) lstAmb.Items.Add(s); SCN0GroupNode lights = SelectedAnimation.GetFolder<SCN0LightNode>(); lstLight0.Items.Clear(); lstLight0.Items.Add("<null>"); foreach (SCN0LightNode s in lights.Children) lstLight0.Items.Add(s); lstLight1.Items.Clear(); lstLight1.Items.Add("<null>"); foreach (SCN0LightNode s in lights.Children) lstLight1.Items.Add(s); lstLight2.Items.Clear(); lstLight2.Items.Add("<null>"); foreach (SCN0LightNode s in lights.Children) lstLight2.Items.Add(s); lstLight3.Items.Clear(); lstLight3.Items.Add("<null>"); foreach (SCN0LightNode s in lights.Children) lstLight3.Items.Add(s); lstLight4.Items.Clear(); lstLight4.Items.Add("<null>"); foreach (SCN0LightNode s in lights.Children) lstLight4.Items.Add(s); lstLight5.Items.Clear(); lstLight5.Items.Add("<null>"); foreach (SCN0LightNode s in lights.Children) lstLight5.Items.Add(s); lstLight6.Items.Clear(); lstLight6.Items.Add("<null>"); foreach (SCN0LightNode s in lights.Children) lstLight6.Items.Add(s); lstLight7.Items.Clear(); lstLight7.Items.Add("<null>"); foreach (SCN0LightNode s in lights.Children) lstLight7.Items.Add(s); UpdateSelectedLightSets(); break; case 1: _ambLight = nodeList.SelectedItem as SCN0AmbientLightNode; chkAmbClr.Checked = _ambLight.ColorEnabled; chkAmbAlpha.Checked = _ambLight.AlphaEnabled; break; case 2: _light = nodeList.SelectedItem as SCN0LightNode; chkLightClr.Checked = _light.ColorEnabled; chkLightAlpha.Checked = _light.AlphaEnabled; chkLightSpec.Checked = _light.SpecularEnabled; lstLightType.SelectedIndex = (int)_light.LightType; lstDistFunc.SelectedIndex = (int)_light.DistanceFunction; lstSpotFunc.SelectedIndex = (int)_light.SpotFunction; break; case 3: _fog = nodeList.SelectedItem as SCN0FogNode; comboBox3.SelectedIndex = Array.IndexOf(fogEnum, _fog.Type); break; case 4: _camera = nodeList.SelectedItem as SCN0CameraNode; lstCamType.SelectedIndex = (int)_camera.Type; lstCamProj.SelectedIndex = (int)_camera.ProjectionType; break; } _mainWindow.KeyframePanel.TargetSequence = nodeList.SelectedItem as ResourceNode; }
internal unsafe void SetSCN0(SCN0Node node) { if (node == null) { _lightSet = null; _fog = null; } else { SCN0GroupNode g = node.GetFolder<SCN0LightSetNode>(); _lightSet = LightSetIndex < g.Children.Count && LightSetIndex >= 0 ? g.Children[LightSetIndex] as SCN0LightSetNode : null; g = node.GetFolder<SCN0FogNode>(); _fog = FogIndex < g.Children.Count && FogIndex >= 0 ? g.Children[FogIndex] as SCN0FogNode : null; } }
public override int OnCalculateSize(bool force) { _match = null; _keyLen = 0; _lightLen = 0; _visLen = 0; if (_name != "<null>") { if (_startKeys._keyCount > 1) _keyLen += 8 + _startKeys._keyCount * 12; if (_endKeys._keyCount > 1) _keyLen += 8 + _endKeys._keyCount * 12; if (!_constant) { foreach (SCN0FogNode n in Parent.Children) { if (n == this) break; if (!n._constant) { for (int i = 0; i < FrameCount + 1; i++) { if (n._colors[i] != _colors[i]) break; if (i == FrameCount) _match = n; } } if (_match != null) break; } if (_match == null) _lightLen += 4 * (FrameCount + 1); } } return SCN0Fog.Size; }