| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- import { Color, MeshRenderer, RenderableComponent, SkeletalAnimation, _decorator } from "cc";
- import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
- import { CCComp } from "../../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
- import { Subway } from "../Subway";
- import { SubwayViewAnimator } from "./SubwayViewAnimator";
- import { SubwayViewController } from "./SubwayViewController";
- import { smc } from "../../common/SingletonModuleComp";
- import { Puppet } from "../../puppet/puppet";
- import { PuppetModelComp } from "../../puppet/model/PuppetModelComp";
- import { PuppetAnimatorType } from "../../puppet/model/PuppetEnum";
- const { ccclass, property } = _decorator;
- /** 地铁显示组件 */
- @ccclass('SubwayViewComp') // 定义为 Cocos Creator 组件
- @ecs.register('SubwayView', false) // 定义为 ECS 组件
- export class SubwayViewComp extends CCComp {
- @property({ type: SkeletalAnimation, tooltip: '角色动画' })
- ske: SkeletalAnimation = null!;
- /** 地铁动画规则管理 */
- animator: SubwayViewAnimator = null!;
- /** 地铁控制器 */
- controller: SubwayViewController = null!;
- /** 视图层逻辑代码分离演示 */
- onLoad() {
- const subway = this.ent as Subway;
- this.animator = this.ske.getComponent(SubwayViewAnimator)!;
- this.animator.subway = subway;
- this.controller = this.node.addComponent(SubwayViewController);
- this.controller.subway = subway;
- }
- createPuppet() {
- const v = this.ent as Subway;
- const account = smc.initialize.account
- const puppet = ecs.getEntity<Puppet>(Puppet)
- const puppetModel = puppet.get(PuppetModelComp)
- puppetModel.color = v.SubwayModel.color
- puppetModel.withColider = true
- puppet.load(this.node, v.SubwayModel.color, this.node.position.clone(),account.AccountModel.skin);
- v.addChild(puppet)
- puppet.PuppetView.animator.toRight()
- puppet.PuppetView.animator.playAni(PuppetAnimatorType.Run)
- puppet.PuppetView.animator.scale()
- }
- reset() {
- this.node.destroy();
- }
- }
|