// Your block initialization public void BlockInit() { // No point to run this script if is a dedicated server because there's no graphics if (Anima.DedicatedServer) { return; } // Create the main Anima class m_anima = new Anima(); // Initialize Anima if (!m_anima.Init(Entity as MyEntity, "Holographic Radar", "Holo")) { throw new ArgumentException("Anima failed to initialize!"); } // Add parts m_part_1 = m_anima.AddPart(null, @"Radar\Radar_Part1"); m_part_2 = m_anima.AddPart(m_part_1, @"Radar\Radar_Part2"); m_part_3 = m_anima.AddPart(m_part_2, @"Radar\Radar_Part3"); // Assign sequences coreFunctionality(m_part_1); m_part_1.OnComplete = coreFunctionality; // Play sequences m_part_1.Play(Anima.Playback.LOOP); m_part_2.Play(Anima.Playback.LOOP); m_part_3.Play(Anima.Playback.LOOP); // Update each frame, note this may not work for all object's types! Entity.NeedsUpdate |= MyEntityUpdateEnum.EACH_FRAME; }
// Our callback to change sequences public void coreFunctionality(AnimaPart part) { bool status = block.IsWorking; if (!lastStatus && status) { // Powering on m_part_1.Sequence = Seq_SC_Radar_Part1_powerOn.Adquire(); m_part_2.Sequence = Seq_SC_Radar_Part2_powerOn.Adquire(); m_part_3.Sequence = Seq_SC_Radar_Part3_powerOn.Adquire(); blockMode = BlockMode.POWER_ON; } else if (lastStatus && !status) { // Powering off m_part_1.Sequence = Seq_SC_Radar_Part1_powerOff.Adquire(); m_part_2.Sequence = Seq_SC_Radar_Part2_powerOff.Adquire(); m_part_3.Sequence = Seq_SC_Radar_Part3_powerOff.Adquire(); blockMode = BlockMode.POWER_OFF; } else if (status) { // While active m_part_1.Sequence = Seq_SC_Radar_Part1_active.Adquire(); m_part_2.Sequence = Seq_SC_Radar_Part2_active.Adquire(); m_part_3.Sequence = Seq_SC_Radar_Part3_active.Adquire(); blockMode = BlockMode.ACTIVE; } else { // While inactive m_part_1.Sequence = Seq_SC_Radar_Part1_inactive.Adquire(); m_part_2.Sequence = Seq_SC_Radar_Part2_inactive.Adquire(); m_part_3.Sequence = Seq_SC_Radar_Part3_inactive.Adquire(); blockMode = BlockMode.INACTIVE; } lastStatus = status; }