public override void OnModelChange() { base.OnModelChange(); m_emissivityState = EmissivityState.UNSET; CheckEmissivity(); }
private void UpdateEmissivity(EmissivityState state) { m_emissivityState = state; Color emissiveColor = Color.Black; switch (state) { case EmissivityState.LOCKED: emissiveColor = Color.ForestGreen; break; case EmissivityState.CONSTRAINED: emissiveColor = Color.Goldenrod; break; case EmissivityState.WORKING: emissiveColor = Color.Gray; break; case EmissivityState.NONE: break; case EmissivityState.UNSET: default: Debug.Assert(false, "Invalid emissivity state in ship merge block"); break;; } MyCubeBlock.UpdateEmissiveParts(Render.RenderObjectIDs[0], 1.0f, emissiveColor, Color.White); }
private void CheckEmissivity() { if (!InScene) { return; } EmissivityState state = EmissivityState.WORKING; var otherBlock = GetOtherMergeBlock(); if (!IsWorking) { state = EmissivityState.NONE; } else if (otherBlock != null) { var dir1 = Base6Directions.GetFlippedDirection(otherBlock.Orientation.TransformDirection(otherBlock.m_forward)); var dir2 = this.Orientation.TransformDirection(this.m_forward); if (dir1 == dir2) { state = EmissivityState.LOCKED; } } else if (InConstraint) { state = EmissivityState.CONSTRAINED; } if (state != m_emissivityState) { UpdateEmissivity(state); } }