コード例 #1
0
    public void Kill(BodyController b)
    {
        int index = bodies.IndexOf(b);

        if (bodies.Count == 1)
        {
            GameManager.winner = (team == Team.Red) ? "Blue" : "Red";
            GameManager.GameOver();
            return;
        }


        bodies.RemoveAt(index);
        if (index == bodyIndex)
        {
            bodyIndex--;
            ChangeBody();
        }
        else if (index < bodyIndex)
        {
            bodyIndex--;
        }
        audioSource.Play();
        b.gameObject.GetComponent <SpriteRenderer>().enabled = false;
        b.gameObject.transform.Find("Quad").gameObject.SetActive(false);
        Destroy(b.gameObject, 3f);
    }
コード例 #2
0
ファイル: BodyController.cs プロジェクト: yemel/vjtp4
 private BodyController GetNextController()
 {
     if(nextController == null) {
        nextController = (BodyController) nextBody.GetComponent(typeof(BodyController));
        }
        return nextController;
 }
コード例 #3
0
ファイル: SnakeController.cs プロジェクト: yemel/vjtp4
 private BodyController GetBodyController()
 {
     if(bodyController == null) {
        bodyController = (BodyController) body.GetComponent(typeof(BodyController));
        }
        return bodyController;
 }
コード例 #4
0
 // Use this for initialization
 void Start()
 {
     bodyController = GetComponent <BodyController>();
     initAgent();
     attackManager = GetComponent <AttackManager>();
     //Destroy(this.GetComponent<CharacterController>());
 }
コード例 #5
0
    //Vector De Interaccion
    private Vector3 Calculateinteraction()
    {
        //Obtengo Valores negativos y positivos en el vector de manera aleatoria
        Vector3 randomize = new Vector3((Random.value * 2) - 1, (Random.value * 2) - 1, (Random.value * 2) - 1);

        //Hacer el vector con magnitud 1 y conservando su direccion
        randomize.Normalize();

        BodyController boidController = Controller.GetComponent <BodyController>();

        //Posicion central del rebaño
        Vector3 flockCenter = boidController.flockCenter;
        //Velocidad promedio del rebaño
        Vector3 flockVelocity = boidController.flockVelocity;
        //Posicion del objeto donde iran
        Vector3 follow = chasee.transform.localPosition;

        //Darle los valores recogidos
        flockCenter   = flockCenter - transform.localPosition;
        flockVelocity = flockVelocity - this.GetComponent <Rigidbody>().velocity;

        //Ubicacion del objeto a llegar
        follow = follow - transform.localPosition;

        //Devuelve velocidad de interaccion
        return(flockCenter + flockVelocity + follow * 2 + randomize * randomness);
    }
コード例 #6
0
    /**
     * 初始化
     */
    public void InitFunction(GameObject building, Vector3 position, MainController.FormFactorSideType sides, float platLength, float platWidth, float platHeight, float eaveColumnHeight, float goldColumnHeight, float mainRidgeHeightOffset, float allJijaHeight, List <Vector3> topFloorBorderList, int roofType, bool isStair, float rotateAngle = 0)
    {
        this.building = building;
        this.building.transform.parent = building.transform;
        this.rotateAngle = rotateAngle;
        this.sides       = sides;

        platformCenter              = position;
        platform                    = new GameObject("platform");
        platform.transform.parent   = this.building.transform;
        platform.transform.position = platformCenter;

        bodyCenter            = platformCenter + (platHeight / 2.0f + eaveColumnHeight / 2.0f) * Vector3.up;
        body                  = new GameObject("body");
        body.transform.parent = this.building.transform;

        roof = new GameObject("roof");
        roof.transform.parent = this.building.transform;

        platformController = building.AddComponent <PlatformController>();
        bodyController     = building.AddComponent <BodyController>();
        roofController     = building.AddComponent <RoofController>();

        //入口位置
        //entraneIndexList.SetEntranceIndex(0);


        platformController.InitFunction(this, platWidth, platLength, platHeight, isStair, rotateAngle);
        bodyController.InitFunction(this, eaveColumnHeight, goldColumnHeight);
        roofController.InitFunction(this, bodyController.GetColumnStructTopPosList(bodyController.eaveCornerColumnList), topFloorBorderList, platWidth, eaveColumnHeight, mainRidgeHeightOffset, allJijaHeight, roofType);

        buildingHeight = Vector3.Distance(roofTopCenter, platformCenter) + platformController.platHeight / 2.0f;
    }
コード例 #7
0
    // Create the hierarchy that handles local transformations
    // and joints for a given body.
    private KineticHierarchyController BuildRobotBodyAttachment(KineticHierarchyController parent, XmlNode part_xml,
                                                                XmlUtils.Defaults defaults)
    {
        string part_name = XmlUtils.GetString(part_xml, "name", string.Format("part_{0}", part_counter_));

        part_counter_++;

        // Build the body and set local position/rotation/scale relative to parent.
        BodyController body = SceneUtils.InstantiateWithController <BodyController>(part_name);

        body.Initialize(parent, part_name, XmlUtils.GetVector3(part_xml, "pos", Vector3.zero),
                        XmlUtils.GetRotation(part_xml, Quaternion.identity));


        List <XmlNode> joint_nodes = XmlUtils.GetChildNodes(part_xml, "joint");

        // Add all the joints in a hierarchy, one after another
        // (XML order is important).
        KineticHierarchyController last_game_object = body;

        for (int i = 0; i < joint_nodes.Count; ++i)
        {
            last_game_object = BuildJoint(last_game_object, part_name, i, joint_nodes[i], defaults);
        }
        return(last_game_object);
    }
コード例 #8
0
	public TurretUndeployingState(GameObject npc, CannonController[] cannonControllers, BodyController baseController, AnimationController animationController): base(npc)
	{
		stateID 					= StateID.UnDeploying;
		turretActor	 				= npc.GetComponent<SuperTurret>();
		this.cannonControllers 		= cannonControllers;
		this.baseController 		= baseController;
		this.animationController 	= animationController;
	}
コード例 #9
0
 public void StartCasting(GameObject ability, RaycastHit hit, GameObject sender)
 {
     AbilityObject    = ability;
     Hit              = hit;
     Sender           = sender;
     SenderController = Sender.GetComponent <BodyController> ();
     StartPosition    = Sender.transform.position;
 }
コード例 #10
0
 private BodyController GetNextController()
 {
     if (nextController == null)
     {
         nextController = (BodyController)nextBody.GetComponent(typeof(BodyController));
     }
     return(nextController);
 }
コード例 #11
0
 private BodyController GetBodyController()
 {
     if (bodyController == null)
     {
         bodyController = (BodyController)body.GetComponent(typeof(BodyController));
     }
     return(bodyController);
 }
コード例 #12
0
    private void LerpToPos(Team team, int index, Vector2 targetXY)
    {
        BodyController body      = orderedMovers[index];
        Vector3        startPos  = moverPositions[index];
        Vector3        targetPos = new Vector3(targetXY.x, targetXY.y, body.transform.position.z);

        body.transform.position = Vector3.Lerp(startPos, targetPos, 1 - timeUntilMove / GraceTime);
    }
コード例 #13
0
    public void MoveTailSegment()
    {
        BodyController tail = bodySegments[bodySegments.Count - 1];

        tail.SetPosition(lastHeadPosition);

        bodySegments.RemoveAt(bodySegments.Count - 1);
        bodySegments.Insert(0, tail);
    }
コード例 #14
0
 // Use this for initialization
 void Start()
 {
     if (bodyController == null)
     {
         Debug.LogWarning("Transform no asignado");
         bodyController = (BodyController)GameObject.FindObjectOfType(typeof(BodyController));
     }
     transformBodyController = bodyController.gameObject.GetComponent <Transform> ();
 }
コード例 #15
0
    private void Start()
    {
        bodyController = GetComponent <BodyController>();

        mainCamera = bodyController.cameraTrans.GetComponent <Camera>();

        initialFOV = mainCamera.fieldOfView;

        sniperScopeImage.enabled = false;
    }
コード例 #16
0
    void RandomColorBody(BodyController theBody)
    {
        SpriteRenderer theBodySprite = theBody.GetComponent <SpriteRenderer>();

        if (colorLenght < 50)
        {
            colorLenght += 5;
        }
        theBodySprite.color = new Color((theBodySprite.color.r * 255 + colorLenght) / 255, (theBodySprite.color.g * 255 + colorLenght - 5) / 255, (theBodySprite.color.b * 255 + colorLenght) / 255);
    }
コード例 #17
0
        public IController GetController()
        {
            ITransformable transf;

            string[] transformableNames = PrefabUtils.GetEntityAndComponentName(Transformable);
            if (transformableNames[0] == null)
            {
                transf = FatherEntity.SceneNodes[Transformable];
            }
            else
            {
                transf = GameWorldManager.Instance.GetEntity(transformableNames[0]).SceneNodes[transformableNames[1]];
            }

            switch (Type)
            {
            case ControllerType.BodyController:

                Body       body;
                GameEntity ent;

                string[] bodyNames = PrefabUtils.GetEntityAndComponentName(Body);
                if (bodyNames[0] == null)
                {
                    body = FatherEntity.PhysicsEntity.GetBody(Body);
                    ent  = FatherEntity;
                }
                else
                {
                    ent  = GameWorldManager.Instance.GetEntity(bodyNames[0]);
                    body = ent.PhysicsEntity.GetBody(bodyNames[1]);
                }

                BodyController bc = new BodyController(transf, body, ent);
                return(bc);

            case ControllerType.LineJointController:

                Joint joint;

                string[] jointNames = PrefabUtils.GetEntityAndComponentName(Joint);
                if (jointNames[0] == null)
                {
                    joint = FatherEntity.PhysicsEntity.GetJoint(Joint);
                }
                else
                {
                    joint = GameWorldManager.Instance.GetEntity(jointNames[0]).PhysicsEntity.GetJoint(jointNames[1]);
                }

                LineJointController ljc = new LineJointController(transf, joint.BodyA, joint.BodyB);
                return(ljc);
            }
            return(new BodyController(null, null, null));
        }
コード例 #18
0
 void Start()
 {
     bodyController = GetComponent <BodyController> ();
     CombatController.Instance.AddUnitToTeam(this);
     animator     = GetComponent <Animator> ();
     navMeshAgent = GetComponent <NavMeshAgent> ();
     OnDeath     += bodyController.Death;
     OnDeath     += hpBarController.Death;
     OnDeath     += Death;
     InitUnit();
 }
コード例 #19
0
    /// <summary>
    /// Recibir la informacion del BodyController
    /// </summary>
    /// <param name="theController">The controller.</param>
    public void SetController(GameObject theController)
    {
        Controller = theController;
        BodyController boidController = Controller.GetComponent <BodyController>();

        minVelocity = boidController.minVelocity;         //Obtengo la minima velocidad del rebaño
        maxVelocity = boidController.maxVelocity;         //Obtengo la maxima velocidad del rebaño
        randomness  = boidController.randomness;
        chasee      = boidController.chasee;
        inited      = true;
    }
コード例 #20
0
    /*** Unity Methods ***/

    void Start()
    {
        GameObject gameController = GameObject.FindGameObjectWithTag("GameController");

        //TODO: Initialize Body Controller
        body  = gameController.GetComponent(typeof(BodyController)) as BodyController;
        sound = gameController.GetComponent(typeof(SoundController)) as SoundController;

        SavedCameraPos  = Camera.main.transform.position;
        SavedCameraZoom = Camera.main.orthographicSize;
    }
コード例 #21
0
    ///////////////////////////////////////////////////////////////////////////////
    void Start()
    {
        /*		SpriteRenderer[] tRenderers = gameObject.GetComponentsInChildren<SpriteRenderer>();
        foreach (SpriteRenderer tRend in tRenderers) {
            Vector2 tOffset = tRend.material.mainTextureOffset;
            tOffset.y += tRend.sortingOrder * 5.5f;
            tRend.material.mainTextureOffset = tOffset;
        }*/

        m_tBody = gameObject.GetComponentInChildren<BodyController>();
    }
コード例 #22
0
    //ToolBoxController tools;


    void Start()
    {
        GameObject gameController = GameObject.FindGameObjectWithTag("GameController");

        //TODO: Initialize Body Controller
        bod = gameController.GetComponent(typeof(BodyController)) as BodyController;

        //TODO: Initialize ToolBox Controller
        toolBox = gameController.GetComponent(typeof(ToolBox)) as ToolBox;
        //Initializing Sound Engine
        sound = gameController.GetComponent(typeof(SoundController)) as SoundController;
    }
コード例 #23
0
 void Start()
 {
     m_tController = gameObject.GetComponentInParent<UnitController>();
     m_tBody = gameObject.GetComponentInParent<BodyController>();
     Renderer[] tFireEffects = gameObject.GetComponentsInChildren<Renderer>();
     foreach (Renderer tEffect in tFireEffects) {
         if (tEffect.name == "Fire 1")
             m_tFireEffect1 = tEffect;
         else if (tEffect.name == "Fire 2")
             m_tFireEffect2 = tEffect;
     }
 }
コード例 #24
0
    // Update is called once per frame
    void Update()
    {
        ArrowKeyMovement();
        if (Time.time > updateTime)
        {
            Vector3 oldPos = transform.position;
            transform.position += new Vector3(direction.x, direction.y, 0f) * stride;
            if (direction != prevDirection)
            {
                transform.rotation = Quaternion.Euler(new Vector3(0f, 0f, Mathf.Atan2(-direction.y, -direction.x) * 180f / Mathf.PI));
            }
            updateTime = Time.time + 1f / speed;

            if (justAte)
            {
                bodies.Insert(0, Instantiate(bodyPrefab, oldPos, Quaternion.identity, gameController.transform));
                bodies[0].GetComponent <BodyController>().direction = direction;
                justAte = false;
                speed  += 0.5f;
            }
            else if (bodies.Count > 1)
            {
                for (int i = 0; i < bodies.Count; i++)
                {
                    BodyController thisBody = bodies[i].GetComponent <BodyController>();
                    thisBody.UpdatePosition();
                }

                for (int i = bodies.Count - 1; i > 0; i--)
                {
                    BodyController thisBody = bodies[i].GetComponent <BodyController>();
                    BodyController headBody = bodies[i - 1].GetComponent <BodyController>();
                    thisBody.direction = headBody.direction;
                }
                bodies[0].GetComponent <BodyController>().direction = direction;
            }
            else
            {
                BodyController thisBody = bodies[0].GetComponent <BodyController>();
                thisBody.UpdatePosition();
                thisBody.direction = direction;
            }



            prevDirection = direction;
        }
    }
コード例 #25
0
        private void GameEntityCreateSceneNodes(GameEntity entity, Vector3 scale, IDictionary <string, object> parameters)
        {
            /* create main node */
            SceneNode mainNode = new SceneNode();

            /* rest of nodes */
            foreach (MeshSceneNodePrefab scnp in _sceneNodesPrefab.Values)
            {
                SceneNode scn = scnp.GetSceneNode(parameters, entity);
                entity.SceneNodes.Add(scnp.Name, scn);
                mainNode.AddChild(scn);
                scn.SetScale(scn.GetScale() * scale);
            }

            foreach (ArrayMeshSceneNodePrefab ascnp in _arrayMeshSceneNodesPrefab.Values)
            {
                for (int i = ascnp.StartIndex; i <= ascnp.EndIndex; i++)
                {
                    SceneNode scn = ascnp.GetSceneNode(parameters, entity);
                    mainNode.AddChild(scn);
                    scn.SetScale(scale);

                    if (ascnp.Path != null && entity.PhysicsEntity.GetBodyFromPath(ascnp.Path, i) != null)
                    {
                        BodyController controller = new BodyController(scn, entity.PhysicsEntity.GetBodyFromPath(ascnp.Path, i), entity);
                        entity.BodyControllers.Add(controller);

                        FrameUpdateManager.Instance.Register(controller);
                    }
                }
            }

            foreach (var cameraSceneNodePrefab in _cameraSceneNodesPrefab)
            {
                mainNode.AddAttachable(
                    new CameraAttachable(cameraSceneNodePrefab.Value.LookingDirection,
                                         cameraSceneNodePrefab.Value.UpVector,
                                         cameraSceneNodePrefab.Value.Near,
                                         cameraSceneNodePrefab.Value.Far,
                                         cameraSceneNodePrefab.Value.Fov,
                                         cameraSceneNodePrefab.Value.AspectRatio)
                    );
            }

            /* finish main node */
            SceneManager.Instance.RegisterSceneTree(mainNode);
            entity.MainNode = mainNode;
        }
コード例 #26
0
 private void initializeChildren()
 {
     for (int i = 0; i < transform.childCount; i++)
     {
         if (transform.GetChild(i).gameObject.CompareTag("PlayerHead"))
         {
             head = transform.GetChild(i).gameObject.GetComponent <HeadController>();
         }
         else if (transform.GetChild(i).gameObject.CompareTag("PlayerBody"))
         {
             bodies = gameObject.transform.GetChild(i);
         }
         else if (transform.GetChild(i).gameObject.CompareTag("PlayerTail"))
         {
             tail = gameObject.transform.GetChild(i).gameObject.GetComponent <BodyController>();
         }
     }
 }
コード例 #27
0
ファイル: Enemy.cs プロジェクト: WindowWasher/LD42
    // Use this for initialization
    void Start()
    {
        bodyController  = GetComponent <BodyController>();
        agentController = GetComponent <AgentMovementController>();
        attackManager   = GetComponent <AttackManager>();
        animator        = GetComponent <Animator>();

        animator.speed = animationSpeed;
        enemyManager   = GameObject.Find("ZombieSpawner").GetComponent <EnemyManager>();
        float randomNum = Random.Range(0f, 1f);

        playerKiller = (randomNum > 0.7f) && !preStartEnemy;
        //Debug.Log("PLayer Killer: " + playerKiller.ToString() + "- " + randomNum.ToString());
        //playerKiller = true;

        followPlayerOnSight = new FollowPlayerOnSight(this.gameObject, attackManager.meeleAttackRange - 0.5f);
        //attackFire = new AttackBarrier(this.gameObject, attackManager.meeleAttackRange - 0.5f, GameObject.Find("BonFire"));
        defaultTarget();
    }
コード例 #28
0
    void SpawnUnit()
    {
        GameObject     newUnit        = Instantiate(unitPrefab, teamGroup);
        UnitController unitController = newUnit.GetComponent <UnitController> ();

        unitController.unitCharacteristics = unitCharacteristics;
        unitController.InitUnit();
        BodyController bodyController = newUnit.GetComponent <BodyController> ();

        bodyController.SetBodyMaterial(teamColorMaterial);
        newUnit.transform.position = transform.position;
        if (finish == null)
        {
            Debug.LogError(gameObject.name + " finish is null.");
        }
        else
        {
            unitController.finish = finish;
            //unitController.SetMovementTarget (finish);
        }
        if (flag == null)
        {
            Debug.LogError(gameObject.name + " flag is null.");
        }
        else
        {
            unitController.flag = flag;
        }
        if (bodyPartsTransform == null)
        {
            Debug.LogError(gameObject.name + " bodyPartsTransform is null.");
        }
        else
        {
            bodyController.bodyPartsTransform = bodyPartsTransform;
        }
        unitController.spawner = transform;
        numUnitsToSpawn--;
        if (OnUnitSpawned != null)
        {
            OnUnitSpawned(unitController);
        }
    }
コード例 #29
0
    public void SetTrackingData(Animator _Animator, HumanBodyBonesTrackData _BoneData, Animator _Compare, BodyController _Controller)
    {
        CurrentAnimator       = _Animator;
        CurrentBoneData       = _BoneData;
        AnimatorToCompareTo   = _Compare;
        CurrentBodyController = _Controller;

        //J.transform.SetParent(transform);
        if (CurrentBoneData.ShowJointInfo)
        {
            GameObject J = Instantiate(CurrentBodyController.JointInfoPrefab, transform.position, Quaternion.identity);
            JI = J.GetComponent <JointInformation> ();
            JI.UpdateInformation(CurrentBoneData.NameOverWrite != "" ? CurrentBoneData.NameOverWrite : CurrentBoneData.Joint.ToString());
            transform.position    = CurrentAnimator.GetBoneTransform(CurrentBoneData.Joint).position;
            JI.transform.position = transform.position;
            JointInfoStartingPos  = JI.transform.position;
            JI.transform.position = JointInfoStartingPos + CurrentBoneData.JointInfoOffsetPos;
        }
    }
コード例 #30
0
        private void GameEntityCreateControllers(GameEntity entity)
        {
            foreach (ControllerPrefab cp in _controllersPrefab.Values)
            {
                cp.FatherEntity = entity;
                switch (cp.Type)
                {
                case ControllerType.BodyController:
                    BodyController bc = cp.GetController() as BodyController;
                    entity.BodyControllers.Add(bc);
                    FrameUpdateManager.Instance.Register(bc);
                    break;

                case ControllerType.LineJointController:
                    LineJointController ljc = cp.GetController() as LineJointController;
                    entity.LineJointControllers.Add(ljc);
                    FrameUpdateManager.Instance.Register(ljc);
                    break;
                }
            }
        }
コード例 #31
0
    //private Animator playerAnimator;
    //private Animator playerArrowAnimator;

    //private Vector3 arrowOffset;
    //private GameObject arrowBone;
    //private GameObject playerArrow;
    //private Vector3 playerArrowOffset = new Vector3(0, 0, 1f);
    //private GameObject handObj;

    //private GameObject arrowModel;
    //private GameObject playerArrow;

    void Start()
    {
        bodyController = GetComponent <BodyController>();
        //playerAnimator = GameObject.Find("PlayerModel").GetComponent<Animator>();
        //arrowModel = GameObject.Find("ArrowModel");
        //playerArrowAnimator = playerAnimator.GetComponent<Animator>();

        //playerAnimator.speed = 0.25f;
        //playerArrowAnimator.speed = 0.25f;
        //playerArrow = GameObject.Find("PlayerArrow");
        //playerArrow.SetActive(false);
        lockCursor();

        Physics.IgnoreLayerCollision(LayerMask.NameToLayer("PlayerLayer"), LayerMask.NameToLayer("DoorLayer"));

        //handObj = GameObject.Find("Hand_R");
        //arrowBone = GameObject.Find("ArrowBoneR");



        //arrowOffset = handObj.transform.position - arrowObj.transform.position;
    }
コード例 #32
0
    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Projectile")
        {
            //Explode();

            LaserBoltController laserBolt = other.gameObject.GetComponentInParent <LaserBoltController>();
            if (laserBolt)
            {
                laserBolt.Explode();
            }
        }
        else if (other.gameObject.tag == "Player")
        {
            Explode();

            BodyController controller = other.gameObject.GetComponent <BodyController>();
            if (controller)
            {
                controller.TakeDamage(10);
            }
        }
    }
コード例 #33
0
    // Start is called before the first frame update
    void Start()
    {
        body                    = transform.Find("Body").gameObject;
        bodyController          = body.GetComponent <BodyController>();
        pAnim                   = body.GetComponent <Animator>();
        rbPlayer                = GetComponent <Rigidbody>();
        dirt                    = transform.Find("Dirt").gameObject;
        mainCamera              = GameObject.Find("Main Camera");
        swordObject             = transform.Find("Sword").gameObject;
        swordController         = swordObject.GetComponent <SwordController>();
        swordController.pScript = this;
        sound                   = GetComponent <AudioSource>();
        hpView                  = GameObject.Find("HP View").GetComponent <TextMeshProUGUI>();

        killsView = GameObject.Find("Kills View").GetComponent <TextMeshProUGUI>();


        Physics.gravity = Menu.gravity * gravityModifier;
        updateView();

        //initialSpeed = speed;

        SetBounds();
    }
コード例 #34
0
        private IEnumerator <IYieldInstruction> BuildNpcs
        (
            Jobs job,
            FashionLevel level,
            IEnumerable <XmlNode> modelsXml,
            Hangout.Shared.Action onBuildingNpcsComplete
        )
        {
            // Key = FBID, Value = name, assets for model
            Dictionary <long, Pair <string, IEnumerable <Asset> > > modelInfos = new Dictionary <long, Pair <string, IEnumerable <Asset> > >();
            uint gettingAssets         = 0;
            ClientAssetRepository repo = GameFacade.Instance.RetrieveProxy <ClientAssetRepository>();

            foreach (XmlNode modelXml in modelsXml)
            {
                string  name;
                XmlNode fbidNode = modelXml.SelectSingleNode(".//@FBID");
                if (fbidNode == null)
                {
                    throw new Exception("modelXml doesn't have an FBID attribute: " + modelXml.OuterXml);
                }

                long uniqueId = long.Parse(fbidNode.InnerText);
                name = modelXml.Attributes["FirstName"].InnerText;                // +" " + modelXml.Attributes["LastName"].InnerText;

                // Only grab the avatars we don't already have loaded
                if (!JobHasNpc(job, uniqueId) && !modelInfos.ContainsKey(uniqueId))
                {
                    gettingAssets++;
                    List <AssetInfo> assetInfos = new List <AssetInfo>();
                    foreach (AssetInfo assetInfo in ClientAssetInfo.Parse(modelXml))
                    {
                        if (!mIgnoredAssets.Contains(assetInfo.AssetSubType))
                        {
                            assetInfos.Add(assetInfo);
                        }
                    }

                    repo.GetAssets <Asset>(assetInfos, delegate(IEnumerable <Asset> modelAssets)
                    {
                        gettingAssets--;
                        if (!modelInfos.ContainsKey(uniqueId))
                        {
                            modelInfos.Add(uniqueId, new Pair <string, IEnumerable <Asset> >(name, modelAssets));
                        }
                        else
                        {
                            Console.WriteLine("Attempted to download model info for " + uniqueId + " twice at the same time.");
                        }
                    });
                }
            }

            yield return(new YieldWhile(delegate()
            {
                return gettingAssets != 0;
            }));

            int spreadFrames = 25;
            List <Pair <long, INpc> > newNpcs = new List <Pair <long, INpc> >();

            foreach (KeyValuePair <long, Pair <string, IEnumerable <Asset> > > assets in modelInfos)
            {
                // This object will be cleaned up by the fashion model
                GameObject displayObject = (GameObject)GameObject.Instantiate(mRigPrototype);
                displayObject.SetActiveRecursively(false);

                HeadController headController = new HeadController(GameObjectUtility.GetNamedChildRecursive("Head", displayObject));
                BodyController bodyController = new BodyController(displayObject);

                bodyController.SetAssets(assets.Value.Second);
                headController.SetAssets(assets.Value.Second);

                bodyController.UpdateAssetsOverFrames(spreadFrames);
                headController.UpdateAssetsOverFrames(spreadFrames);

                INpc newNpc;
                if (job == Jobs.Model)
                {
                    newNpc = new FashionModel(assets.Value.First, level, displayObject, headController, bodyController);
                }
                else
                {
                    newNpc = new StationWorker(assets.Value.First, displayObject, headController, bodyController);
                }

                CharacterMediator.AddAnimationClipToRig(newNpc.DisplayObject, "Avatar/F_walk_normal_loop");
                CharacterMediator.AddAnimationClipToRig(newNpc.DisplayObject, "Avatar/F_idle_normal_loop");

                newNpcs.Add(new Pair <long, INpc>(assets.Key, newNpc));
            }

            yield return(new YieldWhile(delegate()
            {
                return spreadFrames-- != 0 || !mModelAnimationsDownloaded;
            }));

            foreach (Pair <long, INpc> npc in newNpcs)
            {
                switch (job)
                {
                case Jobs.Hair:
                    mHairStationWorkers.AddNpc(npc.First, npc.Second);
                    break;

                case Jobs.Makeup:
                    mMakeupStationWorkers.AddNpc(npc.First, npc.Second);
                    break;

                case Jobs.Model:
                    FashionModel newModel = (FashionModel)npc.Second;

                    newModel.SetImpatientSitIdle(mImpatientSitIdle);
                    newModel.SetSittingIdle(mSittingIdle);
                    newModel.SetMediumHurried(mMediumHurried, mMediumHurriedSpeed);
                    newModel.SetCatWalk(mCatWalk, mCatWalkSpeed);

                    mFashionModels.AddNpc(npc.First, npc.Second);
                    break;

                case Jobs.Seamstress:
                    mSewingStationWorkers.AddNpc(npc.First, npc.Second);
                    break;
                }
            }

            if (onBuildingNpcsComplete != null)
            {
                onBuildingNpcsComplete();
            }
        }
コード例 #35
0
    // On hit, we talk to the owning parent
    void OnMouseDown()
    {
        // Debug.Log("The parent was clicked! Tag: " + tag + "Name: " + name );
        switch (tag)
        {
        //Body parts:
        case "Body":
            //Tell the body that the current Tool has touched it

            BodyPartType part = BodyController.GetBodyPart(name);
            bod.applyCure(toolBox.selectedTool, part);

            break;

        case "Tool":
            ToolBox.Tool oldTool = toolBox.selectedTool;
            toolBox.selectTool(name);
            if (toolBox.selectedTool == oldTool)
            {
                //Debug.Log("Yes we just got the same thing.");
                return;
            }
            if (toolBox.selectedTool != ToolBox.Tool.None)
            {
                if (isToolSelected)
                {
                    activeTool.transform.position = oldPoint;
                    activeTool.GetComponent <Collider>().enabled = true;
                    activeTool = null;
                }
                activeTool = GameObject.Find(name) as GameObject;
                activeTool.GetComponent <Collider>().enabled = false;
                oldPoint = activeTool.transform.position;
                sound.playToolPickupEffect(toolBox.selectedTool);
                isToolSelected = true;
            }
            else
            {
                if (isToolSelected)
                {
                    isToolSelected = false;
                    activeTool.transform.position = oldPoint;
                    activeTool.GetComponent <Collider>().enabled = true;
                    activeTool = null;
                }
            }
            break;

        case "Background":
            if (isToolSelected)
            {
                isToolSelected = false;
                activeTool.transform.position = oldPoint;
                activeTool.GetComponent <Collider>().enabled = true;
                activeTool = null;
            }
            toolBox.selectTool("None");
            break;
        }
        // Communicate to owning script:
    }