Exemple #1
0
        public static AnimationHook Read(DatReader datReader)
        {
            AnimationHook h = new AnimationHook();

            h.HookType  = (AnimationHookType)datReader.ReadUInt32();
            h.Direction = datReader.ReadUInt32();

            // The following HookTypes have no additional properties:
            // AnimationHookType.AnimationDone
            // AnimationHookType.DefaultScript
            // CreateBlockingParticle

            switch (h.HookType)
            {
            case AnimationHookType.Sound:
                h._hook = SoundHook.ReadHookType(datReader);
                break;

            case AnimationHookType.SoundTable:
                h._hook = SoundTableHook.ReadHookType(datReader);
                break;

            case AnimationHookType.Attack:
                h._hook = AttackHook.ReadHookType(datReader);
                break;

            case AnimationHookType.ReplaceObject:
                h._hook = ReplaceObjectHook.ReadHookType(datReader);
                break;

            case AnimationHookType.Ethereal:
                h._hook = EtherealHook.ReadHookType(datReader);
                break;

            case AnimationHookType.TransparentPart:
                h._hook = TransparentPartHook.ReadHookType(datReader);
                break;

            case AnimationHookType.Luminous:
                h._hook = LuminousHook.ReadHookType(datReader);
                break;

            case AnimationHookType.LuminousPart:
                h._hook = LuminousPartHook.ReadHookType(datReader);
                break;

            case AnimationHookType.Diffuse:
                h._hook = DiffuseHook.ReadHookType(datReader);
                break;

            case AnimationHookType.DiffusePart:
                h._hook = DiffusePartHook.ReadHookType(datReader);
                break;

            case AnimationHookType.Scale:
                h._hook = ScaleHook.ReadHookType(datReader);
                break;

            case AnimationHookType.CreateParticle:
                h._hook = CreateParticleHook.ReadHookType(datReader);
                break;

            case AnimationHookType.DestroyParticle:
                h._hook = DestroyParticleHook.ReadHookType(datReader);
                break;

            case AnimationHookType.StopParticle:
                h._hook = StopParticleHook.ReadHookType(datReader);
                break;

            case AnimationHookType.NoDraw:
                h._hook = NoDrawHook.ReadHookType(datReader);
                break;

            case AnimationHookType.DefaultScriptPart:
                h._hook = DefaultScriptPartHook.ReadHookType(datReader);
                break;

            case AnimationHookType.CallPES:
                h._hook = CallPESHook.ReadHookType(datReader);
                break;

            case AnimationHookType.Transparent:
                h._hook = TransparentHook.ReadHookType(datReader);
                break;

            case AnimationHookType.SoundTweaked:
                h._hook = SoundTweakedHook.ReadHookType(datReader);
                break;

            case AnimationHookType.SetOmega:
                h._hook = SetOmegaHook.ReadHookType(datReader);
                break;

            case AnimationHookType.TextureVelocity:
                h._hook = TextureVelocityHook.ReadHookType(datReader);
                break;

            case AnimationHookType.TextureVelocityPart:
                h._hook = TextureVelocityPartHook.ReadHookType(datReader);
                break;

            case AnimationHookType.SetLight:
                h._hook = SetLightHook.ReadHookType(datReader);
                break;
            }

            return(h);
        }
        public static AnimationHook ReadHook(BinaryReader reader)
        {
            // We peek forward to get the hook type, then revert our position.
            var hookType = (AnimationHookType)reader.ReadUInt32();

            reader.BaseStream.Position -= 4;

            AnimationHook hook;

            switch (hookType)
            {
            case AnimationHookType.Sound:
                hook = new SoundHook();
                break;

            case AnimationHookType.SoundTable:
                hook = new SoundTableHook();
                break;

            case AnimationHookType.Attack:
                hook = new AttackHook();
                break;

            case AnimationHookType.ReplaceObject:
                hook = new ReplaceObjectHook();
                break;

            case AnimationHookType.Ethereal:
                hook = new EtherealHook();
                break;

            case AnimationHookType.TransparentPart:
                hook = new TransparentPartHook();
                break;

            case AnimationHookType.Luminous:
                hook = new LuminousHook();
                break;

            case AnimationHookType.LuminousPart:
                hook = new LuminousPartHook();
                break;

            case AnimationHookType.Diffuse:
                hook = new DiffuseHook();
                break;

            case AnimationHookType.DiffusePart:
                hook = new DiffusePartHook();
                break;

            case AnimationHookType.Scale:
                hook = new ScaleHook();
                break;

            case AnimationHookType.CreateParticle:
                hook = new CreateParticleHook();
                break;

            case AnimationHookType.DestroyParticle:
                hook = new DestroyParticleHook();
                break;

            case AnimationHookType.StopParticle:
                hook = new StopParticleHook();
                break;

            case AnimationHookType.NoDraw:
                hook = new NoDrawHook();
                break;

            case AnimationHookType.DefaultScriptPart:
                hook = new DefaultScriptPartHook();
                break;

            case AnimationHookType.CallPES:
                hook = new CallPESHook();
                break;

            case AnimationHookType.Transparent:
                hook = new TransparentHook();
                break;

            case AnimationHookType.SoundTweaked:
                hook = new SoundTweakedHook();
                break;

            case AnimationHookType.SetOmega:
                hook = new SetOmegaHook();
                break;

            case AnimationHookType.TextureVelocity:
                hook = new TextureVelocityHook();
                break;

            case AnimationHookType.TextureVelocityPart:
                hook = new TextureVelocityPartHook();
                break;

            case AnimationHookType.SetLight:
                hook = new SetLightHook();
                break;

            case AnimationHookType.CreateBlockingParticle:
                hook = new CreateBlockingParticle();
                break;

            // The following HookTypes have no additional properties:
            // AnimationHookType.AnimationDone
            // AnimationHookType.DefaultScript
            case AnimationHookType.AnimationDone:
            case AnimationHookType.DefaultScript:
                hook = new AnimationHook();
                break;

            default:
                log.Warn($"Not Implemented Hook type encountered: {hookType}");
                hook = null;
                break;
            }

            if (hook != null)
            {
                hook.Unpack(reader);
            }

            return(hook);
        }