diff --git a/CHANGELOG b/CHANGELOG index 9e6d99f7..70bc5f95 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,16 @@ +Numbering scheme: +Each environment release number is of the form vX.Y. X is the major version +number, Y is the minor version number. Experiment results within the same X +should not change, as modifications made to the environment are either +new features or backward compatible bug fixes. We will maintain vX branches +pointing at the most recent vX.Y + +v1.1 +- Add support for running multiple environment instances in a single process. +- Replaced left_players and right_players with a single players flag. This allows for controling players in both teams by a single agent (useful for self-play). +- Make ball_owned_player and ball_owned_team consistent (fix for https://github.com/google-research/football/issues/45). +- Removed paper.pdf and references to it. The paper is now at https://arxiv.org/abs/1907.11180. + v1.0 (released July 19th, 2019) - added support for multi agent training with run_multiagent_rllib.py example. - added enable_sides_swap parameter to create_environment, which enables random swapping of team sides for each episode. This is useful for self-play training. diff --git a/README.md b/README.md index b730cc41..67be223c 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ This is not an official Google product. We'd like to thank Bastiaan Konings Schuiling, who authored and open-sourced the original version of this game. -For more information, please look at our [paper (github)](https://github.com/google-research/football/blob/master/paper.pdf). +For more information, please look at our [paper](https://arxiv.org/abs/1907.11180). Mailing list: https://groups.google.com/forum/#!forum/google-research-football @@ -213,13 +213,12 @@ directory. Have a look at existing scenarios for example. ## Multiagent support Using play_game script (see 'Playing game yourself' section for details) it is possible to set up a game played between multiple agents. -`left_players` and `right_players` command line parameters are -the comma-separated lists of players on the left and right teams, respectively. +`players` command line parameter is a comma-separated lists of players for both teams. For example, to play yourself using a gamepad with two lazy bots on your team against three bots you can run -`python3 -m gfootball.play_game --left_players=gamepad,lazy:players=2 --right_players=bot,bot,bot`. +`python3 -m gfootball.play_game --players=gamepad:left_players=1;lazy:left_players=2;bot:right_players=1;bot:right_players=1;bot:right_players=1`. -Notice the use of `players=2` for the lazy player, bot player does not support it. +Notice the use of `left_players=2` for the lazy player, bot player does not support it. You can implement your own player controlling multiple players by adding its implementation to the env/players directory (no other changes are needed). diff --git a/gfootball/build_game_engine.sh b/gfootball/build_game_engine.sh index d8c5637f..13603e6e 100755 --- a/gfootball/build_game_engine.sh +++ b/gfootball/build_game_engine.sh @@ -15,5 +15,5 @@ set -e # Delete pre-existing version of CMakeCache.txt to make 'pip3 install' work. rm -f third_party/gfootball_engine/CMakeCache.txt -pushd third_party/gfootball_engine && cmake . && make -j10 && popd +pushd third_party/gfootball_engine && cmake . && make -j && popd pushd third_party/gfootball_engine && ln -sf libgame.so _gameplayfootball.so && popd diff --git a/gfootball/env/__init__.py b/gfootball/env/__init__.py index ecc625a7..cb22c33c 100644 --- a/gfootball/env/__init__.py +++ b/gfootball/env/__init__.py @@ -18,7 +18,6 @@ from __future__ import division from __future__ import print_function - from gfootball.env import config from gfootball.env import football_env from gfootball.env import observation_preprocessing @@ -28,17 +27,16 @@ def create_environment(env_name='', stacked=False, representation='extracted', - with_checkpoints=False, + rewards='scoring', enable_goal_videos=False, enable_full_episode_videos=False, render=False, write_video=False, dump_frequency=1, logdir='', - data_dir=None, - font_file=None, - right_players=None, - number_of_players_agent_controls=1, + extra_players=None, + number_of_left_players_agent_controls=1, + number_of_right_players_agent_controls=0, enable_sides_swap=False, channel_dimensions=( observation_preprocessing.SMM_WIDTH, @@ -91,9 +89,8 @@ def create_environment(env_name='', CornerMode, ThrowInMode, PenaltyMode}. Can only be used when the scenario is a flavor of normal game (i.e. 11 versus 11 players). - with_checkpoints: True to add intermediate checkpoint rewards to guide - the agent to move to the opponent goal. - If False, only scoring provides a reward. + rewards: Comma separated list of rewards to be added. + Currently supported rewards are 'scoring' and 'checkpoints'. enable_goal_videos: whether to dump traces up to 200 frames before goals. enable_full_episode_videos: whether to dump traces for every episode. render: whether to render game frames. @@ -103,14 +100,13 @@ def create_environment(env_name='', dump_frequency: how often to write dumps/videos (in terms of # of episodes) Sub-sample the episodes for which we dump videos to save some disk space. logdir: directory holding the logs. - data_dir: location of the game engine data - Safe to leave as the default value. - font_file: location of the game font file - Safe to leave as the default value. - right_players: A list of right players (adversary) to use in the environment. - Reserved for future usage to provide an opponent to train against. - (which could be used for self-play). - number_of_players_agent_controls: Number of players an agent controls. + extra_players: A list of extra players to use in the environment. + Each player is defined by a string like: + "$player_name:left_players=?,right_players=?,$param1=?,$param2=?...." + number_of_left_players_agent_controls: Number of left players an agent + controls. + number_of_right_players_agent_controls: Number of right players an agent + controls. enable_sides_swap: Whether to randomly pick a field side at the beginning of each episode for the team that the agent controls. channel_dimensions: (width, height) tuple that represents the dimensions of @@ -119,27 +115,26 @@ def create_environment(env_name='', Google Research Football environment. """ assert env_name - if right_players is None: - right_players = [] + players = [('agent:left_players=%d,right_players=%d' % ( + number_of_left_players_agent_controls, + number_of_right_players_agent_controls))] + if extra_players is not None: + players.extend(extra_players) c = config.Config({ 'enable_sides_swap': enable_sides_swap, 'dump_full_episodes': enable_full_episode_videos, 'dump_scores': enable_goal_videos, - 'left_players': [('agent:players=%d' % number_of_players_agent_controls)], + 'players': players, 'level': env_name, 'render': render, 'tracesdir': logdir, 'write_video': write_video, - 'right_players': right_players, }) - if data_dir: - c['data_dir'] = data_dir - if font_file: - c['font_file'] = font_file env = football_env.FootballEnv(c) if dump_frequency > 1: env = wrappers.PeriodicDumpWriter(env, dump_frequency) - if with_checkpoints: + assert 'scoring' in rewards.split(',') + if 'checkpoints' in rewards.split(','): env = wrappers.CheckpointRewardWrapper(env) if representation.startswith('pixels'): env = wrappers.PixelsStateWrapper(env, 'gray' in representation, @@ -150,8 +145,10 @@ def create_environment(env_name='', env = wrappers.SMMWrapper(env, channel_dimensions) else: raise ValueError('Unsupported representation: {}'.format(representation)) - if number_of_players_agent_controls == 1: - env = wrappers.SingleAgentWrapper(env) + if (number_of_left_players_agent_controls + + number_of_right_players_agent_controls == 1): + env = wrappers.SingleAgentObservationWrapper(env) + env = wrappers.SingleAgentRewardWrapper(env) if stacked: # Import FrameStack here to avoid unconditional dependence on baselines. from baselines.common.atari_wrappers import FrameStack diff --git a/gfootball/env/config.py b/gfootball/env/config.py index 5a216271..cd3955dc 100644 --- a/gfootball/env/config.py +++ b/gfootball/env/config.py @@ -19,7 +19,6 @@ import copy import logging -import os import sys import traceback @@ -62,30 +61,39 @@ def parse_player_definition(definition): Returns: A tuple (name, dict). """ - if ':' not in definition: - return definition, {} - - (name, params) = definition.split(':') - d = {} - for param in params.split(','): - (key, value) = param.split('=') - d[key] = value + name = definition + d = {'left_players': 0, + 'right_players': 0} + if ':' in definition: + (name, params) = definition.split(':') + for param in params.split(','): + (key, value) = param.split('=') + d[key] = value + if d['left_players'] == 0 and d['right_players'] == 0: + d['left_players'] = 1 return name, d -def parse_number_of_players(definition): +def count_players(definition): """Returns a number of players given a definition.""" - return int(parse_player_definition(definition)[1].get('players', 1)) + _, player_definition = parse_player_definition(definition) + return (int(player_definition['left_players']) + + int(player_definition['right_players'])) -def get_number_of_players(players): - """Returns a total number of players controlled.""" - return sum([parse_number_of_players(player) for player in players]) +def count_left_players(definition): + """Returns a number of left players given a definition.""" + return int(parse_player_definition(definition)[1]['left_players']) + + +def count_right_players(definition): + """Returns a number of players given a definition.""" + return int(parse_player_definition(definition)[1]['right_players']) def get_agent_number_of_players(players): """Returns a total number of players controlled by an agent.""" - return sum([parse_number_of_players(player) for player in players + return sum([count_players(player) for player in players if player.startswith('agent')]) @@ -94,19 +102,12 @@ class Config(object): def __init__(self, values=None): self._values = { 'action_set': 'default', - 'right_players': [], - 'data_dir': - os.path.abspath(os.path.join(os.path.dirname(libgame.__file__), - 'data')), 'enable_sides_swap': False, - 'font_file': - os.path.abspath(os.path.join(os.path.dirname(libgame.__file__), - 'fonts', 'AlegreyaSansSC-ExtraBold.ttf')), 'display_game_stats': True, 'dump_full_episodes': False, 'dump_scores': False, 'game_difficulty': 0.6, - 'left_players': ['agent:players=1'], + 'players': ['agent:left_players=1'], 'level': '11_vs_11_stochastic', 'physics_steps_per_frame': 10, 'real_time': False, @@ -114,22 +115,20 @@ def __init__(self, values=None): 'tracesdir': '/tmp/dumps', 'write_video': False } - if 'GFOOTBALL_DATA_DIR' in os.environ: - self._values['data_dir'] = os.environ['GFOOTBALL_DATA_DIR'] - if 'GFOOTBALL_FONT' in os.environ: - self._values['font_file'] = os.environ['GFOOTBALL_FONT'] if values: self._values.update(values) self.NewScenario() def number_of_left_players(self): - return get_number_of_players(self._values['left_players']) + return sum([count_left_players(player) + for player in self._values['players']]) def number_of_right_players(self): - return get_number_of_players(self._values['right_players']) + return sum([count_right_players(player) + for player in self._values['players']]) def number_of_players_agent_controls(self): - return get_agent_number_of_players(self._values['left_players']) + return get_agent_number_of_players(self._values['players']) def __eq__(self, other): assert isinstance(other, self.__class__) @@ -166,8 +165,6 @@ def GameConfig(self): cfg.render_mode = libgame.e_RenderingMode.e_Onscreen if self[ 'render'] else libgame.e_RenderingMode.e_Disabled cfg.high_quality = self['render'] - cfg.data_dir = self['data_dir'] - cfg.font_file = self['font_file'] cfg.physics_steps_per_frame = self['physics_steps_per_frame'] return cfg diff --git a/gfootball/env/football_env.py b/gfootball/env/football_env.py index 12b3e4e9..d96cc0fb 100644 --- a/gfootball/env/football_env.py +++ b/gfootball/env/football_env.py @@ -40,12 +40,8 @@ def __init__(self, config): # There can be at most one agent at a time. We need to remember its # team and the index on the team to generate observations appropriately. self._agent = None - self._agent_left_team = True self._agent_index = -1 - self._left_players = self._construct_players(config['left_players'], - player_config, True) - self._right_players = self._construct_players(config['right_players'], - player_config, False) + self._players = self._construct_players(config['players'], player_config) self._env = football_env_wrapper.FootballEnvWrapper(self._config) self._num_actions = len(football_action_set.get_action_set(self._config)) self.last_observation = None @@ -58,9 +54,10 @@ def action_space(self): [self._num_actions] * self._config.number_of_players_agent_controls()) return gym.spaces.Discrete(self._num_actions) - def _construct_players(self, definitions, config, left_team): + def _construct_players(self, definitions, config): result = [] - position = 0 + left_position = 0 + right_position = 0 for definition in definitions: (name, d) = cfg.parse_player_definition(definition) config_name = 'player_{}'.format(name) @@ -81,82 +78,74 @@ def _construct_players(self, definitions, config, left_team): if name == 'agent': assert not self._agent, 'Only one \'agent\' player allowed' self._agent = player - self._agent_left_team = left_team self._agent_index = len(result) - self._agent_position = position + self._agent_left_position = left_position + self._agent_right_position = right_position result.append(player) - position += player.num_controlled_players() + left_position += player.num_controlled_left_players() + right_position += player.num_controlled_right_players() config['index'] += 1 return result - def _convert_observations(self, original, left_team, player, player_position): + def _convert_observations(self, original, player, + left_player_position, right_player_position): """Converts generic observations returned by the environment to the player specific observations. Args: original: original observations from the environment. - left_team: is the player on the left team or not. player: player for which to generate observations. - player_position: index into observation corresponding to the player. + left_player_position: index into observation corresponding to the left + player. + right_player_position: index into observation corresponding to the right + player. """ - observations = {} - for v in constants.EXPOSED_OBSERVATIONS: - # Active and sticky_actions are added below. - if v != 'active' and v != 'sticky_actions': - observations[v] = copy.deepcopy(original[v]) - length = player.num_controlled_players() - if left_team: - observations['active'] = copy.deepcopy( - original['left_agent_controlled_player'][ - player_position:player_position + length]) - observations['sticky_actions'] = copy.deepcopy( - original['left_agent_sticky_actions'][ - player_position:player_position + length]) - observations['is_active_left'] = True - else: - observations['active'] = copy.deepcopy( - original['right_agent_controlled_player'][ - player_position:player_position + length]) - observations['sticky_actions'] = copy.deepcopy( - original['right_agent_sticky_actions'][ - player_position:player_position + length]) - observations['is_active_left'] = False - diff = constants.EXPOSED_OBSERVATIONS.difference(observations.keys()) - assert not diff or (len(diff) == 1 and 'frame' in observations) - if 'frame' in original: - observations['frame'] = original['frame'] + observations = [] + for is_left in [True, False]: + prefix = 'left' if is_left else 'right' + position = left_player_position if is_left else right_player_position + for x in range(player.num_controlled_left_players() if is_left + else player.num_controlled_right_players()): + o = {} + for v in constants.EXPOSED_OBSERVATIONS: + # Active and sticky_actions are added below. + if v != 'active' and v != 'sticky_actions': + o[v] = copy.deepcopy(original[v]) + assert (len(original[prefix + '_agent_controlled_player']) == + len(original[prefix + '_agent_sticky_actions'])) + if position + x >= len(original[prefix + '_agent_controlled_player']): + o['active'] = -1 + o['sticky_actions'] = [] + else: + o['active'] = ( + original[prefix + '_agent_controlled_player'][position + x]) + o['sticky_actions'] = copy.deepcopy( + original[prefix + '_agent_sticky_actions'][position + x]) + o['is_left'] = is_left + if 'frame' in original: + o['frame'] = original['frame'] + observations.append(o) return observations def _get_actions(self): obs = self._env.observation() actions = [] - player_position = 0 - for player in self._left_players: - adopted_obs = self._convert_observations(obs, True, player, - player_position) - player_position += player.num_controlled_players() + left_player_position = 0 + right_player_position = 0 + for player in self._players: + adopted_obs = self._convert_observations(obs, player, + left_player_position, + right_player_position) + left_player_position += player.num_controlled_left_players() + right_player_position += player.num_controlled_right_players() a = player.take_action(adopted_obs) if isinstance(a, np.ndarray): a = a.tolist() - elif not isinstance(a, list): + if not isinstance(a, list): a = [a] - assert len(adopted_obs['active']) == len( + assert len(adopted_obs) == len( a), 'Player returned {} actions instead of {}.'.format( - len(a), len(adopted_obs['active'])) - actions.extend(a) - player_position = 0 - for player in self._right_players: - adopted_obs = self._convert_observations(obs, False, player, - player_position) - player_position += player.num_controlled_players() - a = player.take_action(adopted_obs) - if isinstance(a, np.ndarray): - a = a.tolist() - elif not isinstance(a, list): - a = [a] - assert len(adopted_obs['active']) == len( - a), 'Player returned {} actions instead of {}.'.format( - len(a), len(adopted_obs['active'])) + len(a), len(adopted_obs)) actions.extend(a) return actions @@ -164,31 +153,32 @@ def step(self, action): if self._agent: self._agent.set_action(action) observation, reward, done = self._env.step(self._get_actions()) + score_reward = reward if self._agent: - observation = self._convert_observations(observation, - self._agent_left_team, - self._agent, - self._agent_position) - if not self._agent_left_team: - reward = -reward + observation = self._convert_observations(observation, self._agent, + self._agent_left_position, + self._agent_right_position) + reward = ([reward] * self._agent.num_controlled_left_players() + + [-reward] * self._agent.num_controlled_right_players()) self.last_observation = observation - return observation, np.array(reward, dtype=np.float32), done, {} + return (observation, np.array(reward, dtype=np.float32), done, + {'score_reward': score_reward}) def reset(self): self._env.reset() if self._config['swap_sides'] != self._last_swapped_sides: - self._left_players, self._right_players = ( - self._right_players, self._left_players) - self._agent_left_team = not self._agent_left_team + for player in self._players: + player.swap_sides() + self._agent_left_position, self._agent_right_position = ( + self._agent_right_position, self._agent_left_position) self._last_swapped_sides = self._config['swap_sides'] - for player in self._left_players + self._right_players: + for player in self._players: player.reset() observation = self._env.observation() if self._agent: - observation = self._convert_observations(observation, - self._agent_left_team, - self._agent, - self._agent_position) + observation = self._convert_observations(observation, self._agent, + self._agent_left_position, + self._agent_right_position) self.last_observation = observation return observation diff --git a/gfootball/env/football_env_core.py b/gfootball/env/football_env_core.py index e393d4a8..48d48535 100644 --- a/gfootball/env/football_env_core.py +++ b/gfootball/env/football_env_core.py @@ -29,9 +29,9 @@ from six.moves import range import timeit -_engine = None -_engine_in_use = False -_rendering_supported = False +_unused_engines = [] +_unused_rendering_engine = None +_active_rendering = False class FootballEnvCore(object): @@ -42,10 +42,9 @@ def __init__(self, config): @cfg.log def reset(self, trace): - global _engine - global _engine_in_use - global _rendering_supported """Reset environment for a new episode using a given config.""" + global _unused_engines + global _unused_rendering_engine self._waiting_for_game_count = 0 self._steps_time = 0 self._step = 0 @@ -56,17 +55,19 @@ def reset(self, trace): self._config.NewScenario() self._scenario_cfg = self._config.ScenarioConfig() if not self._env: - assert not _engine_in_use, ('Environment does not support multiple ' - 'instances of the game in the same process.') - if not _engine: - _engine = libgame.GameEnv() - _engine.start_game(self._config.GameConfig()) - _rendering_supported = self._config['render'] + if self._config['render']: + if _unused_rendering_engine: + self._env = _unused_rendering_engine + _unused_rendering_engine = None + self.rendering_in_use() else: - assert _rendering_supported or not self._config['render'], ('Enabling ' - 'rendering when initially it was disabled is not supported.') - _engine_in_use = True - self._env = _engine + if _unused_engines: + self._env = _unused_engines.pop() + if not self._env: + if self._config['render']: + self.rendering_in_use() + self._env = libgame.GameEnv() + self._env.start_game(self._config.GameConfig()) self._left_controllers = [] self._right_controllers = [] for _ in range(self._scenario_cfg.left_agents): @@ -80,10 +81,23 @@ def reset(self, trace): self._env.step() return True + def rendering_in_use(self): + global _active_rendering + assert not _active_rendering, ('Environment does not support multiple ' + 'rendering instances in the same process.') + _active_rendering = True + def close(self): + global _unused_engines + global _unused_rendering_engine + global _active_rendering if self._env: - global _engine_in_use - _engine_in_use = False + if self._config['render']: + assert not _unused_rendering_engine + _unused_rendering_engine = self._env + _active_rendering = False + else: + _unused_engines.append(self._env) self._env = None def __del__(self): diff --git a/gfootball/env/observation_preprocessing.py b/gfootball/env/observation_preprocessing.py index c26ec75d..d61024b9 100644 --- a/gfootball/env/observation_preprocessing.py +++ b/gfootball/env/observation_preprocessing.py @@ -39,7 +39,7 @@ def get_smm_layers(config): if config and config['enable_sides_swap']: - return [] + SMM_LAYERS + ['is_active_left'] + return [] + SMM_LAYERS + ['is_left'] return SMM_LAYERS @@ -74,24 +74,23 @@ def generate_smm(observation, config=None, (N, H, W, C) - shaped np array representing SMM. N stands for the number of players we are controlling. """ - active = observation['active'] - frame = np.zeros((len(active), channel_dimensions[1], channel_dimensions[0], - len(get_smm_layers(config))), dtype=np.uint8) - for a_index, a in enumerate(active): + frame = np.zeros((len(observation), channel_dimensions[1], + channel_dimensions[0], len(get_smm_layers(config))), + dtype=np.uint8) + + for o_i, o in enumerate(observation): for index, layer in enumerate(get_smm_layers(config)): - if layer not in observation: + if layer not in o: continue if layer == 'active': - if a == -1: + if o[layer] == -1: continue - team = ('right_team' if ('is_active_left' in observation and - not observation['is_active_left']) + team = ('right_team' if ('is_left' in o and not o['is_left']) else 'left_team') - mark_points(frame[a_index, :, :, index], - np.array(observation[team][a]).reshape(-1)) - elif layer == 'is_active_left': - frame[a_index, :, :, index] = 1 if observation[layer] else 0 + mark_points(frame[o_i, :, :, index], + np.array(o[team][o[layer]]).reshape(-1)) + elif layer == 'is_left': + frame[o_i, :, :, index] = 1 if o[layer] else 0 else: - mark_points(frame[a_index, :, :, index], - np.array(observation[layer]).reshape(-1)) + mark_points(frame[o_i, :, :, index], np.array(o[layer]).reshape(-1)) return frame diff --git a/gfootball/env/observation_processor.py b/gfootball/env/observation_processor.py index a892bfc9..46e81844 100644 --- a/gfootball/env/observation_processor.py +++ b/gfootball/env/observation_processor.py @@ -207,7 +207,7 @@ def write_dump(name, trace, skip_visuals=False, config={}): os.close(fd) try: # For some reason sometimes the file is missing, so the code fails. - tf.gfile.Copy(temp_path, name + '.avi', overwrite=True) + tf.io.gfile.copy(temp_path, name + '.avi', overwrite=True) os.remove(temp_path) except: logging.info(traceback.format_exc()) @@ -218,7 +218,7 @@ def write_dump(name, trace, skip_visuals=False, config={}): temp_frames.append(o._trace['observation']['frame']) o._trace['observation']['frame'] = 'removed' to_pickle.append(o._trace) - with tf.gfile.Open(name + '.dump', 'wb') as f: + with tf.io.gfile.GFile(name + '.dump', 'wb') as f: six.moves.cPickle.dump(to_pickle, f) for o in trace: if 'frame' in o._trace['observation']: @@ -368,7 +368,7 @@ def write_dump(self, name): config._last_dump = timeit.default_timer() if self._dump_directory is None: self._dump_directory = self._config['tracesdir'] - tf.gfile.MakeDirs(self._dump_directory) + tf.io.gfile.makedirs(self._dump_directory) config._file_name = '{2}/{0}_{1}'.format( name, datetime.datetime.now().strftime('%Y%m%d-%H%M%S%f'), diff --git a/gfootball/env/player_base.py b/gfootball/env/player_base.py index 246e1800..0d247a79 100644 --- a/gfootball/env/player_base.py +++ b/gfootball/env/player_base.py @@ -19,11 +19,26 @@ class PlayerBase(object): """Base player class.""" - def __init__(self, player_config): - self._num_controlled_players = int(player_config.get('players', 1)) + def __init__(self, player_config=None): + self._num_left_controlled_players = 1 + self._num_right_controlled_players = 0 + if player_config: + self._num_left_controlled_players = int(player_config['left_players']) + self._num_right_controlled_players = int(player_config['right_players']) + + def num_controlled_left_players(self): + return self._num_left_controlled_players + + def num_controlled_right_players(self): + return self._num_right_controlled_players def num_controlled_players(self): - return self._num_controlled_players + return (self._num_left_controlled_players + + self._num_right_controlled_players) def reset(self): pass + + def swap_sides(self): + self._num_left_controlled_players, self._num_right_controlled_players = ( + self._num_right_controlled_players, self._num_left_controlled_players) diff --git a/gfootball/env/players/bot.py b/gfootball/env/players/bot.py index 1430578b..083c376a 100644 --- a/gfootball/env/players/bot.py +++ b/gfootball/env/players/bot.py @@ -68,7 +68,7 @@ def _closest_opponent_to_object(self, o): min_d = None closest = None for p in self._observation[ - 'right_team' if self._observation['is_active_left'] else 'left_team']: + 'right_team' if self._observation['is_left'] else 'left_team']: d = self._object_distance(o, p) if min_d is None or d < min_d: min_d = d @@ -89,7 +89,7 @@ def _closest_front_opponent(self, o, target): min_d = None closest = None for p in self._observation[ - 'right_team' if self._observation['is_active_left'] else 'left_team']: + 'right_team' if self._observation['is_left'] else 'left_team']: delta_opp = p - o if np.dot(delta, delta_opp) <= 0: continue @@ -135,7 +135,7 @@ def _best_pass_target(self, active): best_score = None best_target = None for player in self._observation[ - 'left_team' if self._observation['is_active_left'] else 'right_team']: + 'left_team' if self._observation['is_left'] else 'right_team']: if self._object_distance(player, active) > 0.3: continue score = self._score_pass_target(active, player) @@ -166,14 +166,14 @@ def _avoid_opponent(self, active, opponent, target): def _get_action(self): """Returns action to perform for the current observations.""" - is_active_left = self._observation['is_active_left'] - active = self._observation['left_team' if is_active_left else 'right_team'][ - self._observation['active'][0]] + is_left = self._observation['is_left'] + active = self._observation['left_team' if is_left else 'right_team'][ + self._observation['active']] # Corner etc. - just pass the ball if self._observation['game_mode'] != 0: return football_action_set.action_long_pass - if self._observation['ball_owned_team'] == (1 if is_active_left else 0): + if self._observation['ball_owned_team'] == (1 if is_left else 0): if self._last_action == football_action_set.action_pressure: return football_action_set.action_sprint self._pressure_enabled = True @@ -182,7 +182,7 @@ def _get_action(self): if self._pressure_enabled: self._pressure_enabled = False return football_action_set.action_release_pressure - target_x = 0.85 if is_active_left else -0.85 + target_x = 0.85 if is_left else -0.85 if (self._shoot_distance > np.linalg.norm(self._observation['ball'][:2] - [target_x, 0])): @@ -214,10 +214,9 @@ def _get_action(self): return move_action def take_action(self, observations): - assert len(observations['active'] - ) == 1, 'Bot does not support multiple player control' + assert len(observations) == 1, 'Bot does not support multiple player control' self._last_observation = self._observation - self._observation = observations + self._observation = observations[0] if not self._last_observation: self._last_observation = self._observation self._last_action = self._get_action() diff --git a/gfootball/env/players/gamepad.py b/gfootball/env/players/gamepad.py index 76bfe9f4..18a9c79d 100644 --- a/gfootball/env/players/gamepad.py +++ b/gfootball/env/players/gamepad.py @@ -52,8 +52,7 @@ def __init__(self, player_config, env_config): self._joystick.init() def take_action(self, observations): - assert len(observations['active'] - ) == 1, 'Gamepad does not support multiple player control' + assert len(observations) == 1, 'Gamepad does not support multiple player control' x_axis = self._joystick.get_axis(0) y_axis = self._joystick.get_axis(1) left = x_axis < -0.5 diff --git a/gfootball/env/players/keyboard.py b/gfootball/env/players/keyboard.py index 5e8d2f85..8bd5a2d9 100644 --- a/gfootball/env/players/keyboard.py +++ b/gfootball/env/players/keyboard.py @@ -47,8 +47,7 @@ def __init__(self, player_config, env_config): event_queue.add_controller('keyboard') def take_action(self, observations): - assert len(observations['active'] - ) == 1, 'keyboard does not support multiple player control' + assert len(observations) == 1, 'Keyboard does not support multiple player control' if not self._init_done: self._init_done = True pygame.display.set_mode((1, 1), pygame.NOFRAME) diff --git a/gfootball/env/players/lazy.py b/gfootball/env/players/lazy.py index 82694ee2..2a67d5fc 100644 --- a/gfootball/env/players/lazy.py +++ b/gfootball/env/players/lazy.py @@ -26,4 +26,4 @@ def __init__(self, player_config, env_config): player_base.PlayerBase.__init__(self, player_config) def take_action(self, observations): - return [football_action_set.action_idle] * len(observations['active']) + return [football_action_set.action_idle] * len(observations) diff --git a/gfootball/env/players/replay.py b/gfootball/env/players/replay.py index d1e42b49..cbb299e2 100644 --- a/gfootball/env/players/replay.py +++ b/gfootball/env/players/replay.py @@ -30,12 +30,10 @@ def __init__(self, player_config, env_config): self._player = player_config['index'] def take_action(self, observations): - assert len(observations['active'] - ) == 1, 'Replay does not support multiple player control' if self._step == len(self._replay): print("Replay finished.") exit(0) - step = self._replay[self._step]['debug']['action'][ + actions = self._replay[self._step]['debug']['action'][ self._player:self.num_controlled_players() + self._player] self._step += 1 - return step + return actions diff --git a/gfootball/env/scenario_builder.py b/gfootball/env/scenario_builder.py index 61d775cd..8dcb1a8a 100644 --- a/gfootball/env/scenario_builder.py +++ b/gfootball/env/scenario_builder.py @@ -37,6 +37,7 @@ def all_scenarios(): path = os.path.join(os.path.dirname(os.path.dirname(path)), 'scenarios') scenarios = [] for m in pkgutil.iter_modules([path]): + # There was API change in pkgutil between Python 3.5 and 3.6... if m.__class__ == tuple: scenarios.append(m[1]) else: @@ -52,10 +53,6 @@ def __init__(self, config): self._config = config self.SetFlag('swap_sides', False) self.SetFlag('kickoff_for_goal_loosing_team', False) - if self._config['enable_sides_swap']: - self.SetFlag('swap_sides', random.choice([True, False])) - # Swapping sides also enabled kickoff_for_goal_loosing_team. - self.SetFlag('kickoff_for_goal_loosing_team', True) self._active_team = Team.e_Left scenario = None try: @@ -65,6 +62,10 @@ def __init__(self, config): logging.warning(e) exit(1) scenario.build_scenario(self) + if self._config['enable_sides_swap']: + self.SetFlag('swap_sides', random.choice([True, False])) + # Swapping sides also enabled kickoff_for_goal_loosing_team. + self.SetFlag('kickoff_for_goal_loosing_team', True) self.SetTeam(libgame.e_Team.e_Left) self._FakePlayersForEmptyTeam(self._scenario_cfg.left_team) self.SetTeam(libgame.e_Team.e_Right) diff --git a/gfootball/env/wrappers.py b/gfootball/env/wrappers.py index e69ad810..1961703c 100644 --- a/gfootball/env/wrappers.py +++ b/gfootball/env/wrappers.py @@ -164,7 +164,7 @@ def observation(self, obs): config=self.env.unwrapped._config) -class SingleAgentWrapper(gym.ObservationWrapper): +class SingleAgentObservationWrapper(gym.ObservationWrapper): """A wrapper that converts an observation to a minimap.""" def __init__(self, env): @@ -178,59 +178,69 @@ def observation(self, obs): return obs[0] +class SingleAgentRewardWrapper(gym.RewardWrapper): + """A wrapper that converts an observation to a minimap.""" + + def __init__(self, env): + gym.RewardWrapper.__init__(self, env) + + def reward(self, reward): + return reward[0] + + class CheckpointRewardWrapper(gym.RewardWrapper): """A wrapper that adds a dense checkpoint reward.""" def __init__(self, env): gym.RewardWrapper.__init__(self, env) - self._collected_checkpoints = 0 + self._collected_checkpoints = {True: 0, False: 0} self._num_checkpoints = 10 self._checkpoint_reward = 0.1 def reset(self): - self._collected_checkpoints = 0 + self._collected_checkpoints = {True: 0, False: 0} return self.env.reset() def reward(self, reward): if self.env.unwrapped.last_observation is None: return reward - if reward == 1: - reward += self._checkpoint_reward * ( - self._num_checkpoints - self._collected_checkpoints) - self._collected_checkpoints = self._num_checkpoints - return reward + assert len(reward) == len(self.env.unwrapped.last_observation) - o = self.env.unwrapped.last_observation - is_left_to_right = o['is_active_left'] + for rew_index in range(len(reward)): + o = self.env.unwrapped.last_observation[rew_index] + is_left_to_right = o['is_left'] - # Check if left team player has the ball. - if ('ball_owned_team' not in o or - o['ball_owned_team'] != (0 if is_left_to_right else 1) or - 'ball_owned_player' not in o or o['ball_owned_player'] == -1): - return reward + if reward[rew_index] == 1: + reward[rew_index] += self._checkpoint_reward * ( + self._num_checkpoints - + self._collected_checkpoints[is_left_to_right]) + self._collected_checkpoints[is_left_to_right] = self._num_checkpoints + continue - if is_left_to_right: - d = ((o['ball'][0] - 1) ** 2 + o['ball'][1] ** 2) ** 0.5 - else: - d = ((o['ball'][0] + 1) ** 2 + o['ball'][1] ** 2) ** 0.5 + # Check if the active player has the ball. + if ('ball_owned_team' not in o or + o['ball_owned_team'] != (0 if is_left_to_right else 1) or + 'ball_owned_player' not in o or + o['ball_owned_player'] != o['active']): + continue - # Collect the checkpoints. - # We give reward for distance 1 to 0.2. - while self._collected_checkpoints < self._num_checkpoints: - if self._num_checkpoints == 1: - threshold = 0.99 - 0.8 + if is_left_to_right: + d = ((o['ball'][0] - 1) ** 2 + o['ball'][1] ** 2) ** 0.5 else: - threshold = (0.99 - 0.8 / (self._num_checkpoints - 1) * - self._collected_checkpoints) - if d > threshold: - break - reward += self._checkpoint_reward - self._collected_checkpoints += 1 - + d = ((o['ball'][0] + 1) ** 2 + o['ball'][1] ** 2) ** 0.5 + + # Collect the checkpoints. + # We give reward for distance 1 to 0.2. + while (self._collected_checkpoints[is_left_to_right] < + self._num_checkpoints): + if self._num_checkpoints == 1: + threshold = 0.99 - 0.8 + else: + threshold = (0.99 - 0.8 / (self._num_checkpoints - 1) * + self._collected_checkpoints[is_left_to_right]) + if d > threshold: + break + reward[rew_index] += self._checkpoint_reward + self._collected_checkpoints[is_left_to_right] += 1 return reward - - def step(self, action): - observation, reward, done, info = self.env.step(action) - info['score_reward'] = float(reward) - return observation, self.reward(reward), done, info diff --git a/gfootball/examples/run_multiagent_rllib.py b/gfootball/examples/run_multiagent_rllib.py index 95351f81..d043fdd1 100644 --- a/gfootball/examples/run_multiagent_rllib.py +++ b/gfootball/examples/run_multiagent_rllib.py @@ -42,7 +42,6 @@ class RllibGFootball(MultiAgentEnv): def __init__(self, num_agents): self.env = football_env.create_environment( env_name='test_example_multiagent', stacked=False, - with_checkpoints=False, logdir='/tmp/rllib_test', enable_goal_videos=False, enable_full_episode_videos=False, render=True, dump_frequency=0, diff --git a/gfootball/examples/run_ppo2.py b/gfootball/examples/run_ppo2.py index 250bd0e2..3601a851 100644 --- a/gfootball/examples/run_ppo2.py +++ b/gfootball/examples/run_ppo2.py @@ -37,7 +37,7 @@ 'extracted_stacked'], 'Observation to be used for training.') flags.DEFINE_enum('reward_experiment', 'scoring', - ['scoring', 'scoring_with_checkpoints'], + ['scoring', 'scoring,checkpoints'], 'Reward to be used for training.') flags.DEFINE_enum('policy', 'cnn', ['cnn', 'lstm', 'mlp'], 'Policy architecture') @@ -68,7 +68,7 @@ def create_single_football_env(seed): """Creates gfootball environment.""" env = football_env.create_environment( env_name=FLAGS.level, stacked=('stacked' in FLAGS.state), - with_checkpoints=('with_checkpoints' in FLAGS.reward_experiment), + rewards=FLAGS.reward_experiment, logdir=logger.get_dir(), enable_goal_videos=FLAGS.dump_scores and (seed == 0), enable_full_episode_videos=FLAGS.dump_full_episodes and (seed == 0), diff --git a/gfootball/play_game.py b/gfootball/play_game.py index d5c15223..7a279646 100644 --- a/gfootball/play_game.py +++ b/gfootball/play_game.py @@ -23,10 +23,9 @@ FLAGS = flags.FLAGS -flags.DEFINE_string( - 'left_players', 'keyboard', - 'Comma separated list of left players, single keyboard player by default') -flags.DEFINE_string('right_players', '', 'List of right players') +flags.DEFINE_string('players', 'keyboard:left_players=1', + 'Semicolon separated list of players, single keyboard ' + 'player on the left by default') flags.DEFINE_string('level', '', 'Level to play') flags.DEFINE_enum('action_set', 'full', ['default', 'full'], 'Action set') flags.DEFINE_bool('real_time', True, @@ -34,16 +33,13 @@ def main(_): - left_players = FLAGS.left_players.split(',') if FLAGS.left_players else '' - right_players = FLAGS.right_players.split(',') if FLAGS.right_players else '' - assert not ( - 'agent' in left_players or 'agent' in right_players - ), 'Player type \'agent\' can not be used with play_game. Use tfhub player.' + players = FLAGS.players.split(';') if FLAGS.players else '' + assert not (any(['agent' in player for player in players]) + ), ('Player type \'agent\' can not be used with play_game.') cfg = config.Config({ 'action_set': FLAGS.action_set, - 'right_players': right_players, 'dump_full_episodes': True, - 'left_players': left_players, + 'players': players, 'real_time': FLAGS.real_time, 'render': True }) diff --git a/gfootball/replay.py b/gfootball/replay.py index 0abf09ae..fcc082c1 100644 --- a/gfootball/replay.py +++ b/gfootball/replay.py @@ -61,9 +61,10 @@ def modify_trace(replay): def build_players(dump_file, spec): players = [] for player in spec: - player_type = 'replay:path={},players=1'.format(dump_file) - for _ in range(config.parse_number_of_players(player)): - players.append(player_type) + players.extend(['replay:path={},left_players=1'.format( + dump_file)] * config.count_left_players(player)) + players.extend(['replay:path={},right_players=1'.format( + dump_file)] * config.count_right_players(player)) return players def replay(directory, dump, config_update={}): @@ -76,8 +77,7 @@ def replay(directory, dump, config_update={}): assert replay[0]['debug']['frame_cnt'] == 1, ( 'Trace does not start from the beginning of the episode, can not replay') cfg = config.Config(replay[0]['debug']['config']) - cfg['left_players'] = build_players(temp_path, cfg['left_players']) - cfg['right_players'] = build_players(temp_path, cfg['right_players']) + cfg['players'] = build_players(temp_path, cfg['players']) config_update['physics_steps_per_frame'] = int(100 / FLAGS.fps) config_update['real_time'] = False if 'render' not in config_update: diff --git a/paper.pdf b/paper.pdf deleted file mode 100644 index b9775834..00000000 Binary files a/paper.pdf and /dev/null differ diff --git a/setup.py b/setup.py index 329bb01f..c29442b8 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ def run(self): setup( name='gfootball', - version='0.2', + version='1.1', description=('Google Research Football - RL environment based on ' 'open-source game Gameplay Football'), author='Google LLC', diff --git a/third_party/gfootball_engine/CMakeLists.txt b/third_party/gfootball_engine/CMakeLists.txt index e3652082..b1157c3d 100644 --- a/third_party/gfootball_engine/CMakeLists.txt +++ b/third_party/gfootball_engine/CMakeLists.txt @@ -133,7 +133,7 @@ add_library(datalib ${DATA_SOURCES} ${DATA_HEADERS}) set(LIBRARIES gamelib menulib datalib glee blunted2 rt ${Boost_LIBRARIES} ${PYTHON_LIBRARY} ${SDL2_IMAGE_LIBRARIES} ${SDL2_TTF_LIBRARIES} ${SDL2_GFX_LIBRARIES} - ${SDL2_LIBRARY} ${SGE_LIBRARY} dl m sqlite3 ${OPENGL_LIBRARIES}) + ${SDL2_LIBRARY} ${SGE_LIBRARY} ${OPENGL_LIBRARIES}) add_library(baselib OBJECT ${BASE_SOURCES} ${BASE_HEADERS} ${BASE_GEOMETRY_HEADERS} ${BASE_MATH_HEADERS}) add_library(systemscommonlib OBJECT ${SYSTEMS_COMMON_SOURCES} diff --git a/third_party/gfootball_engine/LICENSE b/third_party/gfootball_engine/LICENSE old mode 100755 new mode 100644 diff --git a/third_party/gfootball_engine/__init__.py b/third_party/gfootball_engine/__init__.py index 22ca49b9..6f6431f1 100644 --- a/third_party/gfootball_engine/__init__.py +++ b/third_party/gfootball_engine/__init__.py @@ -21,20 +21,19 @@ import os import sys + + game_path = os.path.dirname(os.path.abspath(__file__)) if game_path not in sys.path: sys.path.append(game_path) -if (('/nonexistent/lib/python27.zip' in sys.path or - '/nonexistent/lib/python3.6' in sys.path) and - '/nonexistent/interpreter' not in sys.path): - gfootball_dir = os.path.dirname(os.path.abspath(__file__)) - font_file = os.path.join(gfootball_dir, 'third_party/fonts') - if not 'GFOOTBALL_FONT' in os.environ: - os.environ['GFOOTBALL_FONT'] = font_file - data_dir = os.path.join(gfootball_dir, 'third_party/gfootball_engine') - if not 'GFOOTBALL_DATA_DIR' in os.environ: - os.environ['GFOOTBALL_DATA_DIR'] = data_dir +gfootball_dir = os.path.dirname(os.path.abspath(__file__)) +font_file = os.path.join(gfootball_dir, 'fonts/AlegreyaSansSC-ExtraBold.ttf') +if 'GFOOTBALL_FONT' not in os.environ: + os.environ['GFOOTBALL_FONT'] = font_file +data_dir = os.path.join(gfootball_dir, 'data') +if 'GFOOTBALL_DATA_DIR' not in os.environ: + os.environ['GFOOTBALL_DATA_DIR'] = data_dir try: from _gameplayfootball import * @@ -44,7 +43,7 @@ logging.warning('Looks like game engine is not compiled, please run:') engine_path = os.path.abspath(os.path.dirname(__file__)) logging.warning( - '  pushd {} && cmake . && make -j10 && popd'.format(game_path)) + '  pushd {} && cmake . && make -j && popd'.format(game_path)) logging.warning('  pushd {} && ln -s libgame.so ' '_gameplayfootball.so && popd'.format(engine_path)) raise diff --git a/third_party/gfootball_engine/ai.cpp b/third_party/gfootball_engine/ai.cpp index e2ea390b..d67122a0 100644 --- a/third_party/gfootball_engine/ai.cpp +++ b/third_party/gfootball_engine/ai.cpp @@ -13,22 +13,21 @@ #undef NDEBUG +#include "ai.hpp" + +#include #include +#include + +#include +#include #include #include -#include #include -#include -#include -#include -#include "managers/resourcemanagerpool.hpp" -#include -#include "ai.hpp" #include "ai/ai_keyboard.hpp" +#include "file.h" #include "gametask.hpp" -#include "helpers.h" - using namespace boost::python; using namespace boost::interprocess; @@ -65,8 +64,7 @@ std::string Position::debug() { std::to_string(value[2]); } -GameEnv::~GameEnv() { -} +GameEnv::~GameEnv() { } void setConfig(ScenarioConfig scenario_config) { scenario_config.ball_position.coords[0] = @@ -93,20 +91,22 @@ void setConfig(ScenarioConfig scenario_config) { } std::string GameEnv::start_game(GameConfig game_config) { + context = new GameContext(); + SetContext(context); // feenableexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW); GetGameConfig() = game_config; std::cout << std::unitbuf; - string data_dir = FindDataDir(); - if (!data_dir.empty()) { + + char* data_dir = getenv("GFOOTBALL_DATA_DIR"); + if (data_dir) { GetGameConfig().data_dir = data_dir; } - string font_file = FindFontFile(); - if (font_file.empty()) { - font_file = game_config.font_file; - } Properties* config = new Properties(); config->Set("match_duration", 0.027); - config->Set("font_filename", font_file); + char* font_file = getenv("GFOOTBALL_FONT"); + if (font_file) { + config->Set("font_filename", font_file); + } config->Set("physics_frametime_ms", 1); config->Set("game", 0); // Enable AI. @@ -136,12 +136,14 @@ SharedInfo GameEnv::get_info() { } PyObject* GameEnv::get_frame() { + SetContext(context); const screenshoot& screen = GetGraphicsSystem()->GetScreen(); PyObject* str = PyBytes_FromStringAndSize(screen.data(), screen.size()); return str; } void GameEnv::action(int action, bool left_team, int player) { + SetContext(context); int controller_id = player + (left_team ? 0 : 11); auto controller = static_cast(GetControllers()[controller_id]); switch (Action(action)) { @@ -245,6 +247,9 @@ void GameEnv::action(int action, bool left_team, int player) { } void GameEnv::step() { + SetContext(context); + PyThreadState* _save = NULL; + Py_UNBLOCK_THREADS; // We do 10 environment steps per second, while game does 100 frames of // physics animation. int steps_to_do = GetGameConfig().physics_steps_per_frame; @@ -272,16 +277,25 @@ void GameEnv::step() { set_rendering(GetScenarioConfig().render); do_step(1); } + Py_BLOCK_THREADS; } void GameEnv::reset(ScenarioConfig game_config) { + SetContext(context); + PyThreadState* _save = NULL; + Py_UNBLOCK_THREADS; + SetContext(context); setConfig(game_config); for (auto controller : GetControllers()) { controller->Reset(); } - ResourceManagerPool::CleanUp(); + context->geometry_manager.RemoveUnused(); + context->surface_manager.RemoveUnused(); + context->texture_manager.RemoveUnused(); + context->vertices_manager.RemoveUnused(); GetMenuTask()->SetMenuAction(e_MenuAction_Menu); do_step(1); + Py_BLOCK_THREADS; } BOOST_PYTHON_MODULE(_gameplayfootball) { @@ -348,8 +362,6 @@ BOOST_PYTHON_MODULE(_gameplayfootball) { class_("GameConfig") .def_readwrite("high_quality", &GameConfig::high_quality) .def_readwrite("render_mode", &GameConfig::render_mode) - .def_readwrite("data_dir", &GameConfig::data_dir) - .def_readwrite("font_file", &GameConfig::font_file) .def_readwrite("physics_steps_per_frame", &GameConfig::physics_steps_per_frame); diff --git a/third_party/gfootball_engine/ai.hpp b/third_party/gfootball_engine/ai.hpp index 202ef990..2c79af7a 100644 --- a/third_party/gfootball_engine/ai.hpp +++ b/third_party/gfootball_engine/ai.hpp @@ -53,6 +53,7 @@ struct GameEnv { private: void do_step(int count = 1); void getObservations(); + GameContext* context; AIControlledKeyboard* keyboard_; GameTask* game_; diff --git a/third_party/gfootball_engine/data/databases/default/database.sqlite b/third_party/gfootball_engine/data/databases/default/database.sqlite deleted file mode 100755 index a13bb0f9..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/database.sqlite and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_competitions/1bundesliga.bmp b/third_party/gfootball_engine/data/databases/default/images_competitions/1bundesliga.bmp deleted file mode 100644 index a150b1a1..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_competitions/1bundesliga.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_competitions/eredivisie.bmp b/third_party/gfootball_engine/data/databases/default/images_competitions/eredivisie.bmp deleted file mode 100644 index b9b4905b..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_competitions/eredivisie.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_competitions/premierleague.bmp b/third_party/gfootball_engine/data/databases/default/images_competitions/premierleague.bmp deleted file mode 100644 index d895cb37..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_competitions/premierleague.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_competitions/primeradivision.bmp b/third_party/gfootball_engine/data/databases/default/images_competitions/primeradivision.bmp deleted file mode 100644 index c233620d..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_competitions/primeradivision.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_kit_01.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_kit_01.bmp deleted file mode 100644 index 32570066..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_kit_01.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_kit_01.png b/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_kit_01.png deleted file mode 100755 index 0a989732..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_kit_01.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_kit_02.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_kit_02.bmp deleted file mode 100644 index 3faf37e0..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_kit_02.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_kit_02.png b/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_kit_02.png deleted file mode 100755 index b1ea8f15..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_kit_02.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_logo.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_logo.bmp deleted file mode 100644 index 60b89991..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_logo.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_logo.png b/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_logo.png deleted file mode 100755 index 6686cf7d..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/bayernmunich_logo.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_kit_01.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_kit_01.bmp deleted file mode 100644 index 55438ae4..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_kit_01.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_kit_01.png b/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_kit_01.png deleted file mode 100755 index 023139ae..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_kit_01.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_kit_02.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_kit_02.bmp deleted file mode 100644 index 7696877a..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_kit_02.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_kit_02.png b/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_kit_02.png deleted file mode 100755 index ca955e4e..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_kit_02.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_logo.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_logo.bmp deleted file mode 100644 index cdacf621..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_logo.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_logo.png b/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_logo.png deleted file mode 100755 index 7e8c9a55..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/1bundesliga/borussiadortmund_logo.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_kit_01.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_kit_01.bmp deleted file mode 100644 index 55c46be7..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_kit_01.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_kit_01.png b/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_kit_01.png deleted file mode 100755 index 5c443f9f..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_kit_01.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_kit_02.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_kit_02.bmp deleted file mode 100644 index 0e6cad82..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_kit_02.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_kit_02.png b/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_kit_02.png deleted file mode 100755 index 24c57eeb..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_kit_02.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_logo.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_logo.bmp deleted file mode 100644 index e13e8118..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_logo.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_logo.png b/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_logo.png deleted file mode 100755 index 2d01f536..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/afcajax_logo.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_kit_01.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_kit_01.bmp deleted file mode 100644 index 734985de..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_kit_01.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_kit_01.png b/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_kit_01.png deleted file mode 100755 index c7a3c778..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_kit_01.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_kit_02.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_kit_02.bmp deleted file mode 100644 index ffdebf36..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_kit_02.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_kit_02.png b/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_kit_02.png deleted file mode 100755 index e931bda5..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_kit_02.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_logo.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_logo.bmp deleted file mode 100644 index a1288d51..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_logo.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_logo.png b/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_logo.png deleted file mode 100755 index 3fad857a..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/eredivisie/psv_logo.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_kit_01.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_kit_01.bmp deleted file mode 100644 index 46f44ff3..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_kit_01.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_kit_01.png b/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_kit_01.png deleted file mode 100755 index 84146b2d..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_kit_01.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_kit_02.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_kit_02.bmp deleted file mode 100644 index 621e64ca..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_kit_02.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_kit_02.png b/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_kit_02.png deleted file mode 100755 index 93fa1850..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_kit_02.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_logo.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_logo.bmp deleted file mode 100644 index 03806586..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_logo.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_logo.png b/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_logo.png deleted file mode 100755 index 6af803e8..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/arsenal_logo.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_kit_01.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_kit_01.bmp deleted file mode 100644 index f8acac13..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_kit_01.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_kit_01.png b/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_kit_01.png deleted file mode 100755 index 76020763..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_kit_01.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_kit_02.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_kit_02.bmp deleted file mode 100644 index d78982b4..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_kit_02.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_kit_02.png b/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_kit_02.png deleted file mode 100755 index 332ea9d3..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_kit_02.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_logo.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_logo.bmp deleted file mode 100644 index 71e1ca88..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_logo.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_logo.png b/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_logo.png deleted file mode 100755 index 52e44f7a..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/premierleague/manchesterunited_logo.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/fcbarcelona_kit_01.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/fcbarcelona_kit_01.bmp deleted file mode 100644 index a8ea8549..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/fcbarcelona_kit_01.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/fcbarcelona_kit_01.png b/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/fcbarcelona_kit_01.png deleted file mode 100755 index c76ba444..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/fcbarcelona_kit_01.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/fcbarcelona_kit_02.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/fcbarcelona_kit_02.bmp deleted file mode 100644 index b4b29252..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/fcbarcelona_kit_02.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/fcbarcelona_kit_02.png b/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/fcbarcelona_kit_02.png deleted file mode 100755 index b9d32ffe..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/fcbarcelona_kit_02.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/fcbarcelona_logo.png b/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/fcbarcelona_logo.png deleted file mode 100755 index c21fafa1..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/fcbarcelona_logo.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/realmadrid_kit_01.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/realmadrid_kit_01.bmp deleted file mode 100644 index b3269836..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/realmadrid_kit_01.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/realmadrid_kit_01.png b/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/realmadrid_kit_01.png deleted file mode 100755 index c118ee38..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/realmadrid_kit_01.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/realmadrid_kit_02.bmp b/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/realmadrid_kit_02.bmp deleted file mode 100644 index 14c95bb6..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/realmadrid_kit_02.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/realmadrid_kit_02.png b/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/realmadrid_kit_02.png deleted file mode 100755 index e73c4b78..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/realmadrid_kit_02.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/realmadrid_logo.png b/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/realmadrid_logo.png deleted file mode 100755 index c2687956..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/images_teams/primeradivision/realmadrid_logo.png and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/default/template_kit.bmp b/third_party/gfootball_engine/data/databases/default/template_kit.bmp deleted file mode 100644 index d9d0c4a9..00000000 Binary files a/third_party/gfootball_engine/data/databases/default/template_kit.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/databases/modding.txt b/third_party/gfootball_engine/data/databases/modding.txt deleted file mode 100644 index 477e48a5..00000000 --- a/third_party/gfootball_engine/data/databases/modding.txt +++ /dev/null @@ -1,18 +0,0 @@ -hello modders! - -here's how the player table in the database works: - -the stat values in the profile_xml field denote the *distribution* of a player's skills, relative to each other. -the average of all profile stats should end up somewhere around 0.5. - -the base_stat field denotes how good a player will be at his development peak (right now that's about age 27; future -versions will have various development curve options). - -so if you want to make a player better or worse, change his base_stat value (or his age ;) ), NOT his profile_xml info. -profile_xml just describes what *type* of player we are talking about. for extra clarity on what it does: setting every -value in the profile_xml to 0.4 would result in a player with exactly the same ingame stats as setting every value to 0.6. - -another thing; take into account that the format of the database and graphics may be subject to change for the full version. -so your mods may require adaptation when future version(s) are released. sorry about that! - -have fun modding! diff --git a/third_party/gfootball_engine/data/media/menu/backgrounds/black.bmp b/third_party/gfootball_engine/data/media/menu/backgrounds/black.bmp deleted file mode 100644 index 13ff753f..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/backgrounds/black.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/backgrounds/intro01.bmp b/third_party/gfootball_engine/data/media/menu/backgrounds/intro01.bmp deleted file mode 100644 index 13ff753f..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/backgrounds/intro01.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/backgrounds/outro01.bmp b/third_party/gfootball_engine/data/media/menu/backgrounds/outro01.bmp deleted file mode 100644 index 13ff753f..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/backgrounds/outro01.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/backgrounds/white.bmp b/third_party/gfootball_engine/data/media/menu/backgrounds/white.bmp deleted file mode 100644 index faf34e7d..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/backgrounds/white.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_left.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_left.bmp deleted file mode 100644 index 88f01c20..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_left.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_left_L1.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_left_L1.bmp deleted file mode 100644 index 85c97e90..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_left_L1.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_left_L2.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_left_L2.bmp deleted file mode 100644 index e975731b..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_left_L2.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_left_down.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_left_down.bmp deleted file mode 100644 index 6e7f2c17..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_left_down.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_left_left.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_left_left.bmp deleted file mode 100644 index 393181a2..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_left_left.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_left_right.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_left_right.bmp deleted file mode 100644 index 1c98c8fe..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_left_right.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_left_select.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_left_select.bmp deleted file mode 100644 index e9f27710..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_left_select.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_left_up.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_left_up.bmp deleted file mode 100644 index bbc23374..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_left_up.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_right.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_right.bmp deleted file mode 100644 index b4621516..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_right.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_right_A.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_right_A.bmp deleted file mode 100644 index 07605764..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_right_A.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_right_B.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_right_B.bmp deleted file mode 100644 index 2d22923d..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_right_B.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_right_R1.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_right_R1.bmp deleted file mode 100644 index 7ce24e60..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_right_R1.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_right_R2.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_right_R2.bmp deleted file mode 100644 index 0d70ba0b..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_right_R2.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_right_X.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_right_X.bmp deleted file mode 100644 index 58bffdbc..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_right_X.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_right_Y.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_right_Y.bmp deleted file mode 100644 index 4ce5d994..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_right_Y.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_right_start.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_right_start.bmp deleted file mode 100644 index 9b0fbb31..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_right_start.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/controller_small.bmp b/third_party/gfootball_engine/data/media/menu/controller/controller_small.bmp deleted file mode 100644 index 31acf918..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/controller_small.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/controller/keyboard_small.bmp b/third_party/gfootball_engine/data/media/menu/controller/keyboard_small.bmp deleted file mode 100644 index 8c9289f0..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/controller/keyboard_small.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/credits/ball.bmp b/third_party/gfootball_engine/data/media/menu/credits/ball.bmp deleted file mode 100644 index 79d73556..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/credits/ball.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/credits/bg.bmp b/third_party/gfootball_engine/data/media/menu/credits/bg.bmp deleted file mode 100644 index 00ccbf6b..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/credits/bg.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/main/title01.bmp b/third_party/gfootball_engine/data/media/menu/main/title01.bmp deleted file mode 100644 index e59836f9..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/main/title01.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/planmap.bmp b/third_party/gfootball_engine/data/media/menu/planmap.bmp deleted file mode 100644 index 93482d20..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/planmap.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/menu/tvlogo.bmp b/third_party/gfootball_engine/data/media/menu/tvlogo.bmp deleted file mode 100644 index 55cba7de..00000000 Binary files a/third_party/gfootball_engine/data/media/menu/tvlogo.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/objects/helpers/blue.ase b/third_party/gfootball_engine/data/media/objects/helpers/blue.ase deleted file mode 100755 index b4a6ce45..00000000 --- a/third_party/gfootball_engine/data/media/objects/helpers/blue.ase +++ /dev/null @@ -1,804 +0,0 @@ -*3DSMAX_ASCIIEXPORT 200 -*COMMENT "AsciiExport Version 2.00 - Wed Aug 11 02:14:35 2010" -*SCENE { - *SCENE_FILENAME "pilon.max" - *SCENE_FIRSTFRAME 0 - *SCENE_LASTFRAME 100 - *SCENE_FRAMESPEED 30 - *SCENE_TICKSPERFRAME 160 - *SCENE_BACKGROUND_STATIC 0.0000 0.0000 0.0000 - *SCENE_AMBIENT_STATIC 0.0000 0.0000 0.0000 -} -*MATERIAL_LIST { - *MATERIAL_COUNT 2 - *MATERIAL 0 { - *MATERIAL_NAME "01 - Default" - *MATERIAL_CLASS "Standard" - *MATERIAL_AMBIENT 0.5882 0.5882 0.5882 - *MATERIAL_DIFFUSE 0.5882 0.5882 0.5882 - *MATERIAL_SPECULAR 0.9000 0.9000 0.9000 - *MATERIAL_SHINE 0.1000 - *MATERIAL_SHINESTRENGTH 0.0000 - *MATERIAL_TRANSPARENCY 0.0000 - *MATERIAL_WIRESIZE 1.0000 - *MATERIAL_SHADING Blinn - *MATERIAL_XP_FALLOFF 0.0000 - *MATERIAL_SELFILLUM 0.6000 - *MATERIAL_FALLOFF In - *MATERIAL_XP_TYPE Filter - *MAP_DIFFUSE { - *MAP_NAME "Map #1" - *MAP_CLASS "Bitmap" - *MAP_SUBNO 1 - *MAP_AMOUNT 1.0000 - *BITMAP "media/objects/helpers/blue.png" - *MAP_TYPE Screen - *UVW_U_OFFSET 0.0000 - *UVW_V_OFFSET 0.0000 - *UVW_U_TILING 1.0000 - *UVW_V_TILING 1.0000 - *UVW_ANGLE 0.0000 - *UVW_BLUR 1.0000 - *UVW_BLUR_OFFSET 0.0000 - *UVW_NOUSE_AMT 1.0000 - *UVW_NOISE_SIZE 1.0000 - *UVW_NOISE_LEVEL 1 - *UVW_NOISE_PHASE 0.0000 - *BITMAP_FILTER Pyramidal - } - } - *MATERIAL 1 { - *MATERIAL_NAME "white" - *MATERIAL_CLASS "Standard" - *MATERIAL_AMBIENT 0.5882 0.5882 0.5882 - *MATERIAL_DIFFUSE 0.5882 0.5882 0.5882 - *MATERIAL_SPECULAR 0.9000 0.9000 0.9000 - *MATERIAL_SHINE 0.2200 - *MATERIAL_SHINESTRENGTH 0.6300 - *MATERIAL_TRANSPARENCY 0.0000 - *MATERIAL_WIRESIZE 1.0000 - *MATERIAL_SHADING Blinn - *MATERIAL_XP_FALLOFF 0.0000 - *MATERIAL_SELFILLUM 0.6000 - *MATERIAL_FALLOFF In - *MATERIAL_XP_TYPE Filter - *MAP_DIFFUSE { - *MAP_NAME "Map #2" - *MAP_CLASS "Bitmap" - *MAP_SUBNO 1 - *MAP_AMOUNT 1.0000 - *BITMAP "media/textures/white.png" - *MAP_TYPE Screen - *UVW_U_OFFSET 0.0000 - *UVW_V_OFFSET 0.0000 - *UVW_U_TILING 1.0000 - *UVW_V_TILING 1.0000 - *UVW_ANGLE 0.0000 - *UVW_BLUR 1.0000 - *UVW_BLUR_OFFSET 0.0000 - *UVW_NOUSE_AMT 1.0000 - *UVW_NOISE_SIZE 1.0000 - *UVW_NOISE_LEVEL 1 - *UVW_NOISE_PHASE 0.0000 - *BITMAP_FILTER Pyramidal - } - } -} -*GEOMOBJECT { - *NODE_NAME "Cone01" - *NODE_TM { - *NODE_NAME "Cone01" - *INHERIT_POS 0 0 0 - *INHERIT_ROT 0 0 0 - *INHERIT_SCL 0 0 0 - *TM_ROW0 1.0000 0.0000 0.0000 - *TM_ROW1 0.0000 1.0000 0.0000 - *TM_ROW2 0.0000 0.0000 1.0000 - *TM_ROW3 0.0000 0.0000 0.0000 - *TM_POS 0.0000 0.0000 0.0000 - *TM_ROTAXIS 0.0000 0.0000 0.0000 - *TM_ROTANGLE 0.0000 - *TM_SCALE 1.0000 1.0000 1.0000 - *TM_SCALEAXIS 0.0000 0.0000 0.0000 - *TM_SCALEAXISANG 0.0000 - } - *MESH { - *TIMEVALUE 0 - *MESH_NUMVERTEX 34 - *MESH_NUMFACES 64 - *MESH_VERTEX_LIST { - *MESH_VERTEX 0 0.0000 0.0000 0.0000 - *MESH_VERTEX 1 0.1000 0.0000 0.0000 - *MESH_VERTEX 2 0.0924 0.0383 0.0000 - *MESH_VERTEX 3 0.0707 0.0707 0.0000 - *MESH_VERTEX 4 0.0383 0.0924 0.0000 - *MESH_VERTEX 5 -0.0000 0.1000 0.0000 - *MESH_VERTEX 6 -0.0383 0.0924 0.0000 - *MESH_VERTEX 7 -0.0707 0.0707 0.0000 - *MESH_VERTEX 8 -0.0924 0.0383 0.0000 - *MESH_VERTEX 9 -0.1000 0.0000 0.0000 - *MESH_VERTEX 10 -0.0924 -0.0383 0.0000 - *MESH_VERTEX 11 -0.0707 -0.0707 0.0000 - *MESH_VERTEX 12 -0.0383 -0.0924 0.0000 - *MESH_VERTEX 13 0.0000 -0.1000 0.0000 - *MESH_VERTEX 14 0.0383 -0.0924 0.0000 - *MESH_VERTEX 15 0.0707 -0.0707 0.0000 - *MESH_VERTEX 16 0.0924 -0.0383 0.0000 - *MESH_VERTEX 17 0.0000 0.0000 0.2000 - *MESH_VERTEX 18 0.0000 0.0000 0.2000 - *MESH_VERTEX 19 0.0000 0.0000 0.2000 - *MESH_VERTEX 20 0.0000 0.0000 0.2000 - *MESH_VERTEX 21 0.0000 0.0000 0.2000 - *MESH_VERTEX 22 0.0000 0.0000 0.2000 - *MESH_VERTEX 23 0.0000 0.0000 0.2000 - *MESH_VERTEX 24 0.0000 0.0000 0.2000 - *MESH_VERTEX 25 0.0000 0.0000 0.2000 - *MESH_VERTEX 26 0.0000 0.0000 0.2000 - *MESH_VERTEX 27 0.0000 0.0000 0.2000 - *MESH_VERTEX 28 0.0000 0.0000 0.2000 - *MESH_VERTEX 29 0.0000 0.0000 0.2000 - *MESH_VERTEX 30 0.0000 0.0000 0.2000 - *MESH_VERTEX 31 0.0000 0.0000 0.2000 - *MESH_VERTEX 32 0.0000 0.0000 0.2000 - *MESH_VERTEX 33 0.0000 0.0000 0.2000 - } - *MESH_FACE_LIST { - *MESH_FACE 0: A: 0 B: 2 C: 1 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 1: A: 0 B: 3 C: 2 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 2: A: 0 B: 4 C: 3 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 3: A: 0 B: 5 C: 4 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 4: A: 0 B: 6 C: 5 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 5: A: 0 B: 7 C: 6 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 6: A: 0 B: 8 C: 7 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 7: A: 0 B: 9 C: 8 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 8: A: 0 B: 10 C: 9 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 9: A: 0 B: 11 C: 10 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 10: A: 0 B: 12 C: 11 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 11: A: 0 B: 13 C: 12 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 12: A: 0 B: 14 C: 13 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 13: A: 0 B: 15 C: 14 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 14: A: 0 B: 16 C: 15 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 15: A: 0 B: 1 C: 16 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 16: A: 1 B: 18 C: 17 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 17: A: 1 B: 2 C: 18 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 18: A: 2 B: 19 C: 18 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 19: A: 2 B: 3 C: 19 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 20: A: 3 B: 20 C: 19 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 21: A: 3 B: 4 C: 20 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 22: A: 4 B: 21 C: 20 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 23: A: 4 B: 5 C: 21 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 24: A: 5 B: 22 C: 21 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 25: A: 5 B: 6 C: 22 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 26: A: 6 B: 23 C: 22 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 27: A: 6 B: 7 C: 23 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 28: A: 7 B: 24 C: 23 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 29: A: 7 B: 8 C: 24 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 30: A: 8 B: 25 C: 24 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 31: A: 8 B: 9 C: 25 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 32: A: 9 B: 26 C: 25 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 33: A: 9 B: 10 C: 26 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 34: A: 10 B: 27 C: 26 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 35: A: 10 B: 11 C: 27 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 36: A: 11 B: 28 C: 27 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 37: A: 11 B: 12 C: 28 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 38: A: 12 B: 29 C: 28 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 39: A: 12 B: 13 C: 29 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 40: A: 13 B: 30 C: 29 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 41: A: 13 B: 14 C: 30 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 42: A: 14 B: 31 C: 30 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 43: A: 14 B: 15 C: 31 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 44: A: 15 B: 32 C: 31 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 45: A: 15 B: 16 C: 32 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 46: A: 16 B: 17 C: 32 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 47: A: 16 B: 1 C: 17 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 48: A: 33 B: 17 C: 18 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 49: A: 33 B: 18 C: 19 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 50: A: 33 B: 19 C: 20 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 51: A: 33 B: 20 C: 21 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 52: A: 33 B: 21 C: 22 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 53: A: 33 B: 22 C: 23 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 54: A: 33 B: 23 C: 24 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 55: A: 33 B: 24 C: 25 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 56: A: 33 B: 25 C: 26 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 57: A: 33 B: 26 C: 27 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 58: A: 33 B: 27 C: 28 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 59: A: 33 B: 28 C: 29 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 60: A: 33 B: 29 C: 30 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 61: A: 33 B: 30 C: 31 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 62: A: 33 B: 31 C: 32 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 63: A: 33 B: 32 C: 17 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - } - *MESH_NUMTVERTEX 36 - *MESH_TVERTLIST { - *MESH_TVERT 0 0.5000 0.0000 0.0000 - *MESH_TVERT 1 0.7500 0.0000 1.0000 - *MESH_TVERT 2 0.8125 0.0000 1.0000 - *MESH_TVERT 3 0.8750 0.0000 1.0000 - *MESH_TVERT 4 0.9375 0.0000 1.0000 - *MESH_TVERT 5 0.0000 0.0000 1.0000 - *MESH_TVERT 6 0.0625 0.0000 1.0000 - *MESH_TVERT 7 0.1250 0.0000 1.0000 - *MESH_TVERT 8 0.1875 0.0000 1.0000 - *MESH_TVERT 9 0.2500 0.0000 1.0000 - *MESH_TVERT 10 0.3125 0.0000 1.0000 - *MESH_TVERT 11 0.3750 0.0000 1.0000 - *MESH_TVERT 12 0.4375 0.0000 1.0000 - *MESH_TVERT 13 0.5000 0.0000 1.0000 - *MESH_TVERT 14 0.5625 0.0000 1.0000 - *MESH_TVERT 15 0.6250 0.0000 1.0000 - *MESH_TVERT 16 0.6875 0.0000 1.0000 - *MESH_TVERT 17 0.5000 1.0000 0.0000 - *MESH_TVERT 18 0.5000 1.0000 0.0000 - *MESH_TVERT 19 0.5000 1.0000 0.0000 - *MESH_TVERT 20 0.5000 1.0000 0.0000 - *MESH_TVERT 21 0.5000 1.0000 0.0000 - *MESH_TVERT 22 0.5000 1.0000 0.0000 - *MESH_TVERT 23 0.5000 1.0000 0.0000 - *MESH_TVERT 24 0.5000 1.0000 0.0000 - *MESH_TVERT 25 0.5000 1.0000 0.0000 - *MESH_TVERT 26 0.5000 1.0000 0.0000 - *MESH_TVERT 27 0.5000 1.0000 0.0000 - *MESH_TVERT 28 0.5000 1.0000 0.0000 - *MESH_TVERT 29 0.5000 1.0000 0.0000 - *MESH_TVERT 30 0.5000 1.0000 0.0000 - *MESH_TVERT 31 0.5000 1.0000 0.0000 - *MESH_TVERT 32 0.5000 1.0000 0.0000 - *MESH_TVERT 33 0.5000 1.0000 0.0000 - *MESH_TVERT 34 -0.0625 0.0000 1.0000 - *MESH_TVERT 35 -0.0625 0.0000 1.0000 - } - *MESH_NUMTVFACES 64 - *MESH_TFACELIST { - *MESH_TFACE 0 0 2 1 - *MESH_TFACE 1 0 3 2 - *MESH_TFACE 2 0 4 3 - *MESH_TFACE 3 0 5 34 - *MESH_TFACE 4 0 6 5 - *MESH_TFACE 5 0 7 6 - *MESH_TFACE 6 0 8 7 - *MESH_TFACE 7 0 9 8 - *MESH_TFACE 8 0 10 9 - *MESH_TFACE 9 0 11 10 - *MESH_TFACE 10 0 12 11 - *MESH_TFACE 11 0 13 12 - *MESH_TFACE 12 0 14 13 - *MESH_TFACE 13 0 15 14 - *MESH_TFACE 14 0 16 15 - *MESH_TFACE 15 0 1 16 - *MESH_TFACE 16 1 18 17 - *MESH_TFACE 17 1 2 18 - *MESH_TFACE 18 2 19 18 - *MESH_TFACE 19 2 3 19 - *MESH_TFACE 20 3 20 19 - *MESH_TFACE 21 3 4 20 - *MESH_TFACE 22 4 21 20 - *MESH_TFACE 23 35 5 21 - *MESH_TFACE 24 5 22 21 - *MESH_TFACE 25 5 6 22 - *MESH_TFACE 26 6 23 22 - *MESH_TFACE 27 6 7 23 - *MESH_TFACE 28 7 24 23 - *MESH_TFACE 29 7 8 24 - *MESH_TFACE 30 8 25 24 - *MESH_TFACE 31 8 9 25 - *MESH_TFACE 32 9 26 25 - *MESH_TFACE 33 9 10 26 - *MESH_TFACE 34 10 27 26 - *MESH_TFACE 35 10 11 27 - *MESH_TFACE 36 11 28 27 - *MESH_TFACE 37 11 12 28 - *MESH_TFACE 38 12 29 28 - *MESH_TFACE 39 12 13 29 - *MESH_TFACE 40 13 30 29 - *MESH_TFACE 41 13 14 30 - *MESH_TFACE 42 14 31 30 - *MESH_TFACE 43 14 15 31 - *MESH_TFACE 44 15 32 31 - *MESH_TFACE 45 15 16 32 - *MESH_TFACE 46 16 17 32 - *MESH_TFACE 47 16 1 17 - *MESH_TFACE 48 33 17 18 - *MESH_TFACE 49 33 18 19 - *MESH_TFACE 50 33 19 20 - *MESH_TFACE 51 33 20 21 - *MESH_TFACE 52 33 21 22 - *MESH_TFACE 53 33 22 23 - *MESH_TFACE 54 33 23 24 - *MESH_TFACE 55 33 24 25 - *MESH_TFACE 56 33 25 26 - *MESH_TFACE 57 33 26 27 - *MESH_TFACE 58 33 27 28 - *MESH_TFACE 59 33 28 29 - *MESH_TFACE 60 33 29 30 - *MESH_TFACE 61 33 30 31 - *MESH_TFACE 62 33 31 32 - *MESH_TFACE 63 33 32 17 - } - *MESH_NORMALS { - *MESH_FACENORMAL 0 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 1 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 3 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 2 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 3 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 3 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 4 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 5 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 9 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 10 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 12 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 11 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 13 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 12 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 12 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 14 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 13 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 13 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 15 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 14 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 14 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 16 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 15 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 15 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 16 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 16 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 1 0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 18 0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 17 0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 17 0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 1 0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 2 0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 18 0.8806 0.1752 0.4403 - *MESH_FACENORMAL 18 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 2 0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 19 0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 18 0.8806 0.1752 0.4403 - *MESH_FACENORMAL 19 0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 2 0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 3 0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 19 0.7465 0.4988 0.4403 - *MESH_FACENORMAL 20 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 3 0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 20 0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 19 0.7465 0.4988 0.4403 - *MESH_FACENORMAL 21 0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 3 0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 4 0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 20 0.4988 0.7465 0.4403 - *MESH_FACENORMAL 22 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 4 0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 21 0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 20 0.4988 0.7465 0.4403 - *MESH_FACENORMAL 23 0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 4 0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 5 0.0000 0.8944 0.4472 - *MESH_VERTEXNORMAL 21 0.1752 0.8806 0.4403 - *MESH_FACENORMAL 24 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.8944 0.4472 - *MESH_VERTEXNORMAL 22 -0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 21 0.1752 0.8806 0.4403 - *MESH_FACENORMAL 25 -0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 5 0.0000 0.8944 0.4472 - *MESH_VERTEXNORMAL 6 -0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 22 -0.1752 0.8806 0.4403 - *MESH_FACENORMAL 26 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 6 -0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 23 -0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 22 -0.1752 0.8806 0.4403 - *MESH_FACENORMAL 27 -0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 6 -0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 7 -0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 23 -0.4988 0.7465 0.4403 - *MESH_FACENORMAL 28 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 7 -0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 24 -0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 23 -0.4988 0.7465 0.4403 - *MESH_FACENORMAL 29 -0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 7 -0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 8 -0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 24 -0.7465 0.4988 0.4403 - *MESH_FACENORMAL 30 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 8 -0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 25 -0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 24 -0.7465 0.4988 0.4403 - *MESH_FACENORMAL 31 -0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 8 -0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 9 -0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 25 -0.8806 0.1752 0.4403 - *MESH_FACENORMAL 32 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 9 -0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 26 -0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 25 -0.8806 0.1752 0.4403 - *MESH_FACENORMAL 33 -0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 9 -0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 10 -0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 26 -0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 34 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 10 -0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 27 -0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 26 -0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 35 -0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 10 -0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 11 -0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 27 -0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 36 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 11 -0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 28 -0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 27 -0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 37 -0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 11 -0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 12 -0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 28 -0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 38 0.0000 -0.0000 0.0000 - *MESH_VERTEXNORMAL 12 -0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 29 -0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 28 -0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 39 -0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 12 -0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 13 0.0000 -0.8944 0.4472 - *MESH_VERTEXNORMAL 29 -0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 40 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 13 0.0000 -0.8944 0.4472 - *MESH_VERTEXNORMAL 30 0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 29 -0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 41 0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 13 0.0000 -0.8944 0.4472 - *MESH_VERTEXNORMAL 14 0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 30 0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 42 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 14 0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 31 0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 30 0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 43 0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 14 0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 15 0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 31 0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 44 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 15 0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 32 0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 31 0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 45 0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 15 0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 16 0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 32 0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 46 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 16 0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 17 0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 32 0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 47 0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 16 0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 1 0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 17 0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 48 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 17 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 18 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 49 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 18 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 19 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 50 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 19 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 20 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 51 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 20 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 21 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 52 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 21 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 22 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 53 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 22 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 23 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 54 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 23 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 24 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 55 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 24 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 25 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 56 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 25 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 26 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 57 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 26 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 27 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 58 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 27 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 28 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 59 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 28 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 29 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 60 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 29 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 30 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 61 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 30 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 31 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 62 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 31 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 32 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 63 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 32 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 17 1.0000 0.0000 0.0000 - } - } - *PROP_MOTIONBLUR 0 - *PROP_CASTSHADOW 1 - *PROP_RECVSHADOW 1 - *MATERIAL_REF 0 -} -*GEOMOBJECT { - *NODE_NAME "Line01" - *NODE_TM { - *NODE_NAME "Line01" - *INHERIT_POS 0 0 0 - *INHERIT_ROT 0 0 0 - *INHERIT_SCL 0 0 0 - *TM_ROW0 1.0000 0.0000 0.0000 - *TM_ROW1 0.0000 -0.0000 1.0000 - *TM_ROW2 0.0000 -1.0000 -0.0000 - *TM_ROW3 0.0000 0.0100 0.0667 - *TM_POS 0.0000 0.0100 0.0667 - *TM_ROTAXIS -1.0000 -0.0000 -0.0000 - *TM_ROTANGLE 1.5708 - *TM_SCALE 1.0000 1.0000 1.0000 - *TM_SCALEAXIS 0.0000 0.0000 0.0000 - *TM_SCALEAXISANG 0.0000 - } - *MESH { - *TIMEVALUE 0 - *MESH_NUMVERTEX 12 - *MESH_NUMFACES 24 - *MESH_VERTEX_LIST { - *MESH_VERTEX 0 -0.1000 0.0100 0.0000 - *MESH_VERTEX 1 0.0000 0.0100 0.2000 - *MESH_VERTEX 2 0.1000 0.0100 0.0000 - *MESH_VERTEX 3 -0.1000 -0.0100 0.0000 - *MESH_VERTEX 4 0.0000 -0.0100 0.2000 - *MESH_VERTEX 5 0.1000 -0.0100 0.0000 - *MESH_VERTEX 6 -0.1447 0.0100 -0.0292 - *MESH_VERTEX 7 0.1447 0.0100 -0.0292 - *MESH_VERTEX 8 0.0000 0.0100 0.2603 - *MESH_VERTEX 9 -0.1447 -0.0100 -0.0292 - *MESH_VERTEX 10 0.1447 -0.0100 -0.0292 - *MESH_VERTEX 11 0.0000 -0.0100 0.2603 - } - *MESH_FACE_LIST { - *MESH_FACE 0: A: 0 B: 1 C: 4 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 1: A: 0 B: 4 C: 3 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 2: A: 1 B: 2 C: 5 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 3: A: 1 B: 5 C: 4 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 4: A: 2 B: 0 C: 3 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 5: A: 2 B: 3 C: 5 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 6: A: 6 B: 7 C: 10 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 7: A: 6 B: 10 C: 9 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 8: A: 7 B: 8 C: 11 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 9: A: 7 B: 11 C: 10 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 10: A: 8 B: 6 C: 9 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 11: A: 8 B: 9 C: 11 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 12: A: 8 B: 0 C: 6 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 13: A: 8 B: 1 C: 0 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 14: A: 7 B: 1 C: 8 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 15: A: 7 B: 2 C: 1 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 16: A: 6 B: 2 C: 7 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 17: A: 6 B: 0 C: 2 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 18: A: 11 B: 9 C: 3 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 19: A: 11 B: 3 C: 4 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 20: A: 10 B: 11 C: 4 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 21: A: 10 B: 4 C: 5 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 22: A: 9 B: 10 C: 5 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 23: A: 9 B: 5 C: 3 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - } - *MESH_NUMTVERTEX 28 - *MESH_TVERTLIST { - *MESH_TVERT 0 0.0000 0.0000 0.0000 - *MESH_TVERT 1 0.3455 0.0000 0.0000 - *MESH_TVERT 2 0.6910 0.0000 0.0000 - *MESH_TVERT 3 1.0000 0.0000 0.0000 - *MESH_TVERT 4 0.0000 1.0000 0.0000 - *MESH_TVERT 5 0.3455 1.0000 0.0000 - *MESH_TVERT 6 0.6910 1.0000 0.0000 - *MESH_TVERT 7 1.0000 1.0000 0.0000 - *MESH_TVERT 8 0.0000 0.0000 0.0000 - *MESH_TVERT 9 0.3090 0.0000 0.0000 - *MESH_TVERT 10 0.6545 0.0000 0.0000 - *MESH_TVERT 11 1.0000 0.0000 0.0000 - *MESH_TVERT 12 0.0000 1.0000 0.0000 - *MESH_TVERT 13 0.3090 1.0000 0.0000 - *MESH_TVERT 14 0.6545 1.0000 0.0000 - *MESH_TVERT 15 1.0000 1.0000 0.0000 - *MESH_TVERT 16 0.1545 0.1007 0.0000 - *MESH_TVERT 17 0.5000 0.7918 0.0000 - *MESH_TVERT 18 0.8455 0.1007 0.0000 - *MESH_TVERT 19 0.0000 0.0000 0.0000 - *MESH_TVERT 20 1.0000 0.0000 0.0000 - *MESH_TVERT 21 0.5000 1.0000 0.0000 - *MESH_TVERT 22 0.1545 0.1007 0.0000 - *MESH_TVERT 23 0.5000 0.7918 0.0000 - *MESH_TVERT 24 0.8455 0.1007 0.0000 - *MESH_TVERT 25 0.0000 0.0000 0.0000 - *MESH_TVERT 26 1.0000 0.0000 0.0000 - *MESH_TVERT 27 0.5000 1.0000 0.0000 - } - *MESH_NUMTVFACES 24 - *MESH_TFACELIST { - *MESH_TFACE 0 0 1 5 - *MESH_TFACE 1 0 5 4 - *MESH_TFACE 2 1 2 6 - *MESH_TFACE 3 1 6 5 - *MESH_TFACE 4 2 3 7 - *MESH_TFACE 5 2 7 6 - *MESH_TFACE 6 8 9 13 - *MESH_TFACE 7 8 13 12 - *MESH_TFACE 8 9 10 14 - *MESH_TFACE 9 9 14 13 - *MESH_TFACE 10 10 11 15 - *MESH_TFACE 11 10 15 14 - *MESH_TFACE 12 21 16 19 - *MESH_TFACE 13 21 17 16 - *MESH_TFACE 14 20 17 21 - *MESH_TFACE 15 20 18 17 - *MESH_TFACE 16 19 18 20 - *MESH_TFACE 17 19 16 18 - *MESH_TFACE 18 27 25 22 - *MESH_TFACE 19 27 22 23 - *MESH_TFACE 20 26 27 23 - *MESH_TFACE 21 26 23 24 - *MESH_TFACE 22 25 26 24 - *MESH_TFACE 23 25 24 22 - } - *MESH_NORMALS { - *MESH_FACENORMAL 0 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 0 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 1 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 4 0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 1 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 0 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 4 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 3 0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 2 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 1 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 2 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 5 -0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 3 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 1 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 5 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 4 -0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 4 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 2 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 0 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 3 0.0000 1.0000 0.0000 - *MESH_FACENORMAL 5 -0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 2 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 3 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 5 -0.0000 1.0000 0.0000 - *MESH_FACENORMAL 6 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 6 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 7 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 10 0.0000 -1.0000 0.0000 - *MESH_FACENORMAL 7 -0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 6 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 10 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 9 -0.0000 -1.0000 0.0000 - *MESH_FACENORMAL 8 0.8944 0.4472 -0.0000 - *MESH_VERTEXNORMAL 7 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 8 0.8944 0.4472 -0.0000 - *MESH_VERTEXNORMAL 11 0.8944 0.4472 0.0000 - *MESH_FACENORMAL 9 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 7 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 11 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 10 0.8944 0.4472 0.0000 - *MESH_FACENORMAL 10 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 8 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 6 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 9 -0.8944 0.4472 0.0000 - *MESH_FACENORMAL 11 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 8 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 9 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 11 -0.8944 0.4472 0.0000 - *MESH_FACENORMAL 12 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 13 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 14 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 15 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 16 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 17 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 18 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 19 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 20 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 21 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 22 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 23 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 - } - } - *PROP_MOTIONBLUR 0 - *PROP_CASTSHADOW 1 - *PROP_RECVSHADOW 1 - *MATERIAL_REF 1 -} diff --git a/third_party/gfootball_engine/data/media/objects/helpers/blue.bmp b/third_party/gfootball_engine/data/media/objects/helpers/blue.bmp deleted file mode 100644 index cd5306bc..00000000 Binary files a/third_party/gfootball_engine/data/media/objects/helpers/blue.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/objects/helpers/direction.ase b/third_party/gfootball_engine/data/media/objects/helpers/direction.ase deleted file mode 100755 index ac6ad9c5..00000000 --- a/third_party/gfootball_engine/data/media/objects/helpers/direction.ase +++ /dev/null @@ -1,1301 +0,0 @@ -*3DSMAX_ASCIIEXPORT 200 -*COMMENT "AsciiExport Version 2.00 - Fri Mar 26 21:55:57 2010" -*SCENE { - *SCENE_FILENAME "direction.max" - *SCENE_FIRSTFRAME 0 - *SCENE_LASTFRAME 100 - *SCENE_FRAMESPEED 30 - *SCENE_TICKSPERFRAME 160 - *SCENE_BACKGROUND_STATIC 0.0000 0.0000 0.0000 - *SCENE_AMBIENT_STATIC 0.0000 0.0000 0.0000 -} -*MATERIAL_LIST { - *MATERIAL_COUNT 1 - *MATERIAL 0 { - *MATERIAL_NAME "01 - Default" - *MATERIAL_CLASS "Standard" - *MATERIAL_AMBIENT 0.5882 0.5882 0.5882 - *MATERIAL_DIFFUSE 0.5882 0.5882 0.5882 - *MATERIAL_SPECULAR 0.9000 0.9000 0.9000 - *MATERIAL_SHINE 0.1000 - *MATERIAL_SHINESTRENGTH 0.0000 - *MATERIAL_TRANSPARENCY 0.0000 - *MATERIAL_WIRESIZE 1.0000 - *MATERIAL_SHADING Blinn - *MATERIAL_XP_FALLOFF 0.0000 - *MATERIAL_SELFILLUM 0.0000 - *MATERIAL_FALLOFF In - *MATERIAL_XP_TYPE Filter - *MAP_DIFFUSE { - *MAP_NAME "Map #1" - *MAP_CLASS "Bitmap" - *MAP_SUBNO 1 - *MAP_AMOUNT 1.0000 - *BITMAP "media/objects/helpers/green.png" - *MAP_TYPE Screen - *UVW_U_OFFSET 0.0000 - *UVW_V_OFFSET 0.0000 - *UVW_U_TILING 1.0000 - *UVW_V_TILING 1.0000 - *UVW_ANGLE 0.0000 - *UVW_BLUR 1.0000 - *UVW_BLUR_OFFSET 0.0000 - *UVW_NOUSE_AMT 1.0000 - *UVW_NOISE_SIZE 1.0000 - *UVW_NOISE_LEVEL 1 - *UVW_NOISE_PHASE 0.0000 - *BITMAP_FILTER Pyramidal - } - } -} -*GEOMOBJECT { - *NODE_NAME "Line02" - *NODE_TM { - *NODE_NAME "Line02" - *INHERIT_POS 0 0 0 - *INHERIT_ROT 0 0 0 - *INHERIT_SCL 0 0 0 - *TM_ROW0 1.0000 0.0000 0.0000 - *TM_ROW1 0.0000 -0.0000 1.0000 - *TM_ROW2 0.0000 -1.0000 -0.0000 - *TM_ROW3 0.0000 0.0201 0.0667 - *TM_POS 0.0000 0.0201 0.0667 - *TM_ROTAXIS -1.0000 -0.0000 -0.0000 - *TM_ROTANGLE 1.5708 - *TM_SCALE 1.0000 1.0000 1.0000 - *TM_SCALEAXIS 0.0000 0.0000 0.0000 - *TM_SCALEAXISANG 0.0000 - } - *MESH { - *TIMEVALUE 0 - *MESH_NUMVERTEX 12 - *MESH_NUMFACES 24 - *MESH_VERTEX_LIST { - *MESH_VERTEX 0 -0.1000 0.0201 0.0000 - *MESH_VERTEX 1 0.0000 0.0201 0.2000 - *MESH_VERTEX 2 0.1000 0.0201 0.0000 - *MESH_VERTEX 3 -0.1000 -0.0199 0.0000 - *MESH_VERTEX 4 0.0000 -0.0199 0.2000 - *MESH_VERTEX 5 0.1000 -0.0199 0.0000 - *MESH_VERTEX 6 0.1324 0.0201 -0.0200 - *MESH_VERTEX 7 -0.0000 0.0201 0.2447 - *MESH_VERTEX 8 -0.1324 0.0201 -0.0200 - *MESH_VERTEX 9 0.1324 -0.0199 -0.0200 - *MESH_VERTEX 10 -0.0000 -0.0199 0.2447 - *MESH_VERTEX 11 -0.1324 -0.0199 -0.0200 - } - *MESH_FACE_LIST { - *MESH_FACE 0: A: 0 B: 1 C: 4 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 1: A: 0 B: 4 C: 3 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 2: A: 1 B: 2 C: 5 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 3: A: 1 B: 5 C: 4 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 4: A: 2 B: 0 C: 3 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 5: A: 2 B: 3 C: 5 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 6: A: 6 B: 7 C: 10 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 7: A: 6 B: 10 C: 9 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 8: A: 7 B: 8 C: 11 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 9: A: 7 B: 11 C: 10 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 10: A: 8 B: 6 C: 9 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 11: A: 8 B: 9 C: 11 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 12: A: 8 B: 0 C: 6 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 13: A: 2 B: 6 C: 0 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 14: A: 2 B: 7 C: 6 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 15: A: 1 B: 7 C: 2 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 16: A: 1 B: 8 C: 7 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 17: A: 0 B: 8 C: 1 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 18: A: 11 B: 9 C: 3 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 19: A: 5 B: 3 C: 9 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 20: A: 5 B: 9 C: 10 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 21: A: 4 B: 5 C: 10 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 22: A: 4 B: 10 C: 11 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 23: A: 3 B: 4 C: 11 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - } - *MESH_NUMTVERTEX 28 - *MESH_TVERTLIST { - *MESH_TVERT 0 0.0000 0.0000 0.0000 - *MESH_TVERT 1 0.3455 0.0000 0.0000 - *MESH_TVERT 2 0.6910 0.0000 0.0000 - *MESH_TVERT 3 1.0000 0.0000 0.0000 - *MESH_TVERT 4 0.0000 1.0000 0.0000 - *MESH_TVERT 5 0.3455 1.0000 0.0000 - *MESH_TVERT 6 0.6910 1.0000 0.0000 - *MESH_TVERT 7 1.0000 1.0000 0.0000 - *MESH_TVERT 8 0.0000 0.0000 0.0000 - *MESH_TVERT 9 0.3455 0.0000 0.0000 - *MESH_TVERT 10 0.6910 0.0000 0.0000 - *MESH_TVERT 11 1.0000 0.0000 0.0000 - *MESH_TVERT 12 0.0000 1.0000 0.0000 - *MESH_TVERT 13 0.3455 1.0000 0.0000 - *MESH_TVERT 14 0.6910 1.0000 0.0000 - *MESH_TVERT 15 1.0000 1.0000 0.0000 - *MESH_TVERT 16 0.1222 0.0756 0.0000 - *MESH_TVERT 17 0.5000 0.8311 0.0000 - *MESH_TVERT 18 0.8778 0.0756 0.0000 - *MESH_TVERT 19 1.0000 0.0000 0.0000 - *MESH_TVERT 20 0.5000 1.0000 0.0000 - *MESH_TVERT 21 0.0000 0.0000 0.0000 - *MESH_TVERT 22 0.1222 0.0756 0.0000 - *MESH_TVERT 23 0.5000 0.8311 0.0000 - *MESH_TVERT 24 0.8778 0.0756 0.0000 - *MESH_TVERT 25 1.0000 0.0000 0.0000 - *MESH_TVERT 26 0.5000 1.0000 0.0000 - *MESH_TVERT 27 0.0000 0.0000 0.0000 - } - *MESH_NUMTVFACES 24 - *MESH_TFACELIST { - *MESH_TFACE 0 0 1 5 - *MESH_TFACE 1 0 5 4 - *MESH_TFACE 2 1 2 6 - *MESH_TFACE 3 1 6 5 - *MESH_TFACE 4 2 3 7 - *MESH_TFACE 5 2 7 6 - *MESH_TFACE 6 8 9 13 - *MESH_TFACE 7 8 13 12 - *MESH_TFACE 8 9 10 14 - *MESH_TFACE 9 9 14 13 - *MESH_TFACE 10 10 11 15 - *MESH_TFACE 11 10 15 14 - *MESH_TFACE 12 21 16 19 - *MESH_TFACE 13 18 19 16 - *MESH_TFACE 14 18 20 19 - *MESH_TFACE 15 17 20 18 - *MESH_TFACE 16 17 21 20 - *MESH_TFACE 17 16 21 17 - *MESH_TFACE 18 27 25 22 - *MESH_TFACE 19 24 22 25 - *MESH_TFACE 20 24 25 26 - *MESH_TFACE 21 23 24 26 - *MESH_TFACE 22 23 26 27 - *MESH_TFACE 23 22 23 27 - } - *MESH_NORMALS { - *MESH_FACENORMAL 0 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 0 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 1 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 4 0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 1 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 0 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 4 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 3 0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 2 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 1 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 2 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 5 -0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 3 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 1 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 5 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 4 -0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 4 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 2 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 0 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 3 0.0000 1.0000 0.0000 - *MESH_FACENORMAL 5 -0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 2 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 3 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 5 -0.0000 1.0000 0.0000 - *MESH_FACENORMAL 6 0.8944 0.4472 -0.0000 - *MESH_VERTEXNORMAL 6 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 7 0.8944 0.4472 -0.0000 - *MESH_VERTEXNORMAL 10 0.8944 0.4472 0.0000 - *MESH_FACENORMAL 7 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 6 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 10 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 9 0.8944 0.4472 0.0000 - *MESH_FACENORMAL 8 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 7 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 8 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 11 -0.8944 0.4472 0.0000 - *MESH_FACENORMAL 9 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 7 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 11 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 10 -0.8944 0.4472 0.0000 - *MESH_FACENORMAL 10 -0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 8 -0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 6 -0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 9 -0.0000 -1.0000 0.0000 - *MESH_FACENORMAL 11 -0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 8 -0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 9 -0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 11 -0.0000 -1.0000 0.0000 - *MESH_FACENORMAL 12 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 13 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 14 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 15 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 16 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 17 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 18 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 19 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 20 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 21 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 22 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 23 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 1.0000 - } - } - *PROP_MOTIONBLUR 0 - *PROP_CASTSHADOW 1 - *PROP_RECVSHADOW 1 - *MATERIAL_REF 0 -} -*GEOMOBJECT { - *NODE_NAME "Sphere01" - *NODE_TM { - *NODE_NAME "Sphere01" - *INHERIT_POS 0 0 0 - *INHERIT_ROT 0 0 0 - *INHERIT_SCL 0 0 0 - *TM_ROW0 1.0000 0.0000 0.0000 - *TM_ROW1 0.0000 -0.0000 1.0000 - *TM_ROW2 0.0000 -1.0000 -0.0000 - *TM_ROW3 0.0000 0.0000 -0.2123 - *TM_POS 0.0000 0.0000 -0.2123 - *TM_ROTAXIS -1.0000 -0.0000 -0.0000 - *TM_ROTANGLE 1.5708 - *TM_SCALE 1.0000 1.0000 1.0000 - *TM_SCALEAXIS 0.0000 0.0000 0.0000 - *TM_SCALEAXISANG 0.0000 - } - *MESH { - *TIMEVALUE 0 - *MESH_NUMVERTEX 42 - *MESH_NUMFACES 80 - *MESH_VERTEX_LIST { - *MESH_VERTEX 0 0.0000 -0.0500 -0.2123 - *MESH_VERTEX 1 -0.0000 -0.0405 -0.1830 - *MESH_VERTEX 2 -0.0173 -0.0405 -0.1886 - *MESH_VERTEX 3 -0.0280 -0.0405 -0.2033 - *MESH_VERTEX 4 -0.0280 -0.0405 -0.2214 - *MESH_VERTEX 5 -0.0173 -0.0405 -0.2361 - *MESH_VERTEX 6 0.0000 -0.0405 -0.2417 - *MESH_VERTEX 7 0.0173 -0.0405 -0.2361 - *MESH_VERTEX 8 0.0280 -0.0405 -0.2214 - *MESH_VERTEX 9 0.0280 -0.0405 -0.2033 - *MESH_VERTEX 10 0.0173 -0.0405 -0.1886 - *MESH_VERTEX 11 -0.0000 -0.0155 -0.1648 - *MESH_VERTEX 12 -0.0280 -0.0155 -0.1739 - *MESH_VERTEX 13 -0.0452 -0.0155 -0.1977 - *MESH_VERTEX 14 -0.0452 -0.0155 -0.2270 - *MESH_VERTEX 15 -0.0280 -0.0155 -0.2508 - *MESH_VERTEX 16 0.0000 -0.0155 -0.2599 - *MESH_VERTEX 17 0.0280 -0.0155 -0.2508 - *MESH_VERTEX 18 0.0452 -0.0155 -0.2270 - *MESH_VERTEX 19 0.0452 -0.0155 -0.1977 - *MESH_VERTEX 20 0.0280 -0.0155 -0.1739 - *MESH_VERTEX 21 -0.0000 0.0155 -0.1648 - *MESH_VERTEX 22 -0.0280 0.0155 -0.1739 - *MESH_VERTEX 23 -0.0452 0.0155 -0.1977 - *MESH_VERTEX 24 -0.0452 0.0155 -0.2270 - *MESH_VERTEX 25 -0.0280 0.0155 -0.2508 - *MESH_VERTEX 26 0.0000 0.0155 -0.2599 - *MESH_VERTEX 27 0.0280 0.0155 -0.2508 - *MESH_VERTEX 28 0.0452 0.0155 -0.2270 - *MESH_VERTEX 29 0.0452 0.0155 -0.1977 - *MESH_VERTEX 30 0.0280 0.0155 -0.1739 - *MESH_VERTEX 31 -0.0000 0.0405 -0.1830 - *MESH_VERTEX 32 -0.0173 0.0405 -0.1886 - *MESH_VERTEX 33 -0.0280 0.0405 -0.2033 - *MESH_VERTEX 34 -0.0280 0.0405 -0.2214 - *MESH_VERTEX 35 -0.0173 0.0405 -0.2361 - *MESH_VERTEX 36 0.0000 0.0405 -0.2417 - *MESH_VERTEX 37 0.0173 0.0405 -0.2361 - *MESH_VERTEX 38 0.0280 0.0405 -0.2214 - *MESH_VERTEX 39 0.0280 0.0405 -0.2033 - *MESH_VERTEX 40 0.0173 0.0405 -0.1886 - *MESH_VERTEX 41 0.0000 0.0500 -0.2123 - } - *MESH_FACE_LIST { - *MESH_FACE 0: A: 0 B: 1 C: 2 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 1: A: 0 B: 2 C: 3 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 2: A: 0 B: 3 C: 4 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 3: A: 0 B: 4 C: 5 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 4: A: 0 B: 5 C: 6 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 5: A: 0 B: 6 C: 7 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 6: A: 0 B: 7 C: 8 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 7: A: 0 B: 8 C: 9 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 8: A: 0 B: 9 C: 10 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 9: A: 0 B: 10 C: 1 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 10: A: 1 B: 11 C: 12 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 11: A: 1 B: 12 C: 2 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 12: A: 2 B: 12 C: 13 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 13: A: 2 B: 13 C: 3 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 14: A: 3 B: 13 C: 14 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 15: A: 3 B: 14 C: 4 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 16: A: 4 B: 14 C: 15 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 17: A: 4 B: 15 C: 5 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 18: A: 5 B: 15 C: 16 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 19: A: 5 B: 16 C: 6 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 20: A: 6 B: 16 C: 17 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 21: A: 6 B: 17 C: 7 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 22: A: 7 B: 17 C: 18 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 23: A: 7 B: 18 C: 8 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 24: A: 8 B: 18 C: 19 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 25: A: 8 B: 19 C: 9 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 26: A: 9 B: 19 C: 20 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 27: A: 9 B: 20 C: 10 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 28: A: 10 B: 20 C: 11 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 29: A: 10 B: 11 C: 1 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 30: A: 11 B: 21 C: 22 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 31: A: 11 B: 22 C: 12 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 32: A: 12 B: 22 C: 23 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 33: A: 12 B: 23 C: 13 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 34: A: 13 B: 23 C: 24 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 35: A: 13 B: 24 C: 14 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 36: A: 14 B: 24 C: 25 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 37: A: 14 B: 25 C: 15 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 38: A: 15 B: 25 C: 26 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 39: A: 15 B: 26 C: 16 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 40: A: 16 B: 26 C: 27 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 41: A: 16 B: 27 C: 17 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 42: A: 17 B: 27 C: 28 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 43: A: 17 B: 28 C: 18 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 44: A: 18 B: 28 C: 29 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 45: A: 18 B: 29 C: 19 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 46: A: 19 B: 29 C: 30 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 47: A: 19 B: 30 C: 20 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 48: A: 20 B: 30 C: 21 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 49: A: 20 B: 21 C: 11 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 50: A: 21 B: 31 C: 32 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 51: A: 21 B: 32 C: 22 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 52: A: 22 B: 32 C: 33 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 53: A: 22 B: 33 C: 23 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 54: A: 23 B: 33 C: 34 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 55: A: 23 B: 34 C: 24 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 56: A: 24 B: 34 C: 35 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 57: A: 24 B: 35 C: 25 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 58: A: 25 B: 35 C: 36 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 59: A: 25 B: 36 C: 26 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 60: A: 26 B: 36 C: 37 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 61: A: 26 B: 37 C: 27 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 62: A: 27 B: 37 C: 38 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 63: A: 27 B: 38 C: 28 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 64: A: 28 B: 38 C: 39 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 65: A: 28 B: 39 C: 29 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 66: A: 29 B: 39 C: 40 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 67: A: 29 B: 40 C: 30 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 68: A: 30 B: 40 C: 31 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 69: A: 30 B: 31 C: 21 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 70: A: 41 B: 32 C: 31 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 71: A: 41 B: 33 C: 32 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 72: A: 41 B: 34 C: 33 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 73: A: 41 B: 35 C: 34 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 74: A: 41 B: 36 C: 35 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 75: A: 41 B: 37 C: 36 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 76: A: 41 B: 38 C: 37 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 77: A: 41 B: 39 C: 38 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 78: A: 41 B: 40 C: 39 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 79: A: 41 B: 31 C: 40 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - } - *MESH_NUMTVERTEX 66 - *MESH_TVERTLIST { - *MESH_TVERT 0 0.0000 1.0000 0.0000 - *MESH_TVERT 1 0.1000 1.0000 0.0000 - *MESH_TVERT 2 0.2000 1.0000 0.0000 - *MESH_TVERT 3 0.3000 1.0000 0.0000 - *MESH_TVERT 4 0.4000 1.0000 0.0000 - *MESH_TVERT 5 0.5000 1.0000 0.0000 - *MESH_TVERT 6 0.6000 1.0000 0.0000 - *MESH_TVERT 7 0.7000 1.0000 0.0000 - *MESH_TVERT 8 0.8000 1.0000 0.0000 - *MESH_TVERT 9 0.9000 1.0000 0.0000 - *MESH_TVERT 10 1.0000 1.0000 0.0000 - *MESH_TVERT 11 0.0000 0.8000 0.0000 - *MESH_TVERT 12 0.1000 0.8000 0.0000 - *MESH_TVERT 13 0.2000 0.8000 0.0000 - *MESH_TVERT 14 0.3000 0.8000 0.0000 - *MESH_TVERT 15 0.4000 0.8000 0.0000 - *MESH_TVERT 16 0.5000 0.8000 0.0000 - *MESH_TVERT 17 0.6000 0.8000 0.0000 - *MESH_TVERT 18 0.7000 0.8000 0.0000 - *MESH_TVERT 19 0.8000 0.8000 0.0000 - *MESH_TVERT 20 0.9000 0.8000 0.0000 - *MESH_TVERT 21 1.0000 0.8000 0.0000 - *MESH_TVERT 22 0.0000 0.6000 0.0000 - *MESH_TVERT 23 0.1000 0.6000 0.0000 - *MESH_TVERT 24 0.2000 0.6000 0.0000 - *MESH_TVERT 25 0.3000 0.6000 0.0000 - *MESH_TVERT 26 0.4000 0.6000 0.0000 - *MESH_TVERT 27 0.5000 0.6000 0.0000 - *MESH_TVERT 28 0.6000 0.6000 0.0000 - *MESH_TVERT 29 0.7000 0.6000 0.0000 - *MESH_TVERT 30 0.8000 0.6000 0.0000 - *MESH_TVERT 31 0.9000 0.6000 0.0000 - *MESH_TVERT 32 1.0000 0.6000 0.0000 - *MESH_TVERT 33 0.0000 0.4000 0.0000 - *MESH_TVERT 34 0.1000 0.4000 0.0000 - *MESH_TVERT 35 0.2000 0.4000 0.0000 - *MESH_TVERT 36 0.3000 0.4000 0.0000 - *MESH_TVERT 37 0.4000 0.4000 0.0000 - *MESH_TVERT 38 0.5000 0.4000 0.0000 - *MESH_TVERT 39 0.6000 0.4000 0.0000 - *MESH_TVERT 40 0.7000 0.4000 0.0000 - *MESH_TVERT 41 0.8000 0.4000 0.0000 - *MESH_TVERT 42 0.9000 0.4000 0.0000 - *MESH_TVERT 43 1.0000 0.4000 0.0000 - *MESH_TVERT 44 0.0000 0.2000 0.0000 - *MESH_TVERT 45 0.1000 0.2000 0.0000 - *MESH_TVERT 46 0.2000 0.2000 0.0000 - *MESH_TVERT 47 0.3000 0.2000 0.0000 - *MESH_TVERT 48 0.4000 0.2000 0.0000 - *MESH_TVERT 49 0.5000 0.2000 0.0000 - *MESH_TVERT 50 0.6000 0.2000 0.0000 - *MESH_TVERT 51 0.7000 0.2000 0.0000 - *MESH_TVERT 52 0.8000 0.2000 0.0000 - *MESH_TVERT 53 0.9000 0.2000 0.0000 - *MESH_TVERT 54 1.0000 0.2000 0.0000 - *MESH_TVERT 55 0.0000 0.0000 0.0000 - *MESH_TVERT 56 0.1000 0.0000 0.0000 - *MESH_TVERT 57 0.2000 0.0000 0.0000 - *MESH_TVERT 58 0.3000 0.0000 0.0000 - *MESH_TVERT 59 0.4000 0.0000 0.0000 - *MESH_TVERT 60 0.5000 0.0000 0.0000 - *MESH_TVERT 61 0.6000 0.0000 0.0000 - *MESH_TVERT 62 0.7000 0.0000 0.0000 - *MESH_TVERT 63 0.8000 0.0000 0.0000 - *MESH_TVERT 64 0.9000 0.0000 0.0000 - *MESH_TVERT 65 1.0000 0.0000 0.0000 - } - *MESH_NUMTVFACES 80 - *MESH_TFACELIST { - *MESH_TFACE 0 0 11 12 - *MESH_TFACE 1 1 12 13 - *MESH_TFACE 2 2 13 14 - *MESH_TFACE 3 3 14 15 - *MESH_TFACE 4 4 15 16 - *MESH_TFACE 5 5 16 17 - *MESH_TFACE 6 6 17 18 - *MESH_TFACE 7 7 18 19 - *MESH_TFACE 8 8 19 20 - *MESH_TFACE 9 9 20 21 - *MESH_TFACE 10 11 22 23 - *MESH_TFACE 11 11 23 12 - *MESH_TFACE 12 12 23 24 - *MESH_TFACE 13 12 24 13 - *MESH_TFACE 14 13 24 25 - *MESH_TFACE 15 13 25 14 - *MESH_TFACE 16 14 25 26 - *MESH_TFACE 17 14 26 15 - *MESH_TFACE 18 15 26 27 - *MESH_TFACE 19 15 27 16 - *MESH_TFACE 20 16 27 28 - *MESH_TFACE 21 16 28 17 - *MESH_TFACE 22 17 28 29 - *MESH_TFACE 23 17 29 18 - *MESH_TFACE 24 18 29 30 - *MESH_TFACE 25 18 30 19 - *MESH_TFACE 26 19 30 31 - *MESH_TFACE 27 19 31 20 - *MESH_TFACE 28 20 31 32 - *MESH_TFACE 29 20 32 21 - *MESH_TFACE 30 22 33 34 - *MESH_TFACE 31 22 34 23 - *MESH_TFACE 32 23 34 35 - *MESH_TFACE 33 23 35 24 - *MESH_TFACE 34 24 35 36 - *MESH_TFACE 35 24 36 25 - *MESH_TFACE 36 25 36 37 - *MESH_TFACE 37 25 37 26 - *MESH_TFACE 38 26 37 38 - *MESH_TFACE 39 26 38 27 - *MESH_TFACE 40 27 38 39 - *MESH_TFACE 41 27 39 28 - *MESH_TFACE 42 28 39 40 - *MESH_TFACE 43 28 40 29 - *MESH_TFACE 44 29 40 41 - *MESH_TFACE 45 29 41 30 - *MESH_TFACE 46 30 41 42 - *MESH_TFACE 47 30 42 31 - *MESH_TFACE 48 31 42 43 - *MESH_TFACE 49 31 43 32 - *MESH_TFACE 50 33 44 45 - *MESH_TFACE 51 33 45 34 - *MESH_TFACE 52 34 45 46 - *MESH_TFACE 53 34 46 35 - *MESH_TFACE 54 35 46 47 - *MESH_TFACE 55 35 47 36 - *MESH_TFACE 56 36 47 48 - *MESH_TFACE 57 36 48 37 - *MESH_TFACE 58 37 48 49 - *MESH_TFACE 59 37 49 38 - *MESH_TFACE 60 38 49 50 - *MESH_TFACE 61 38 50 39 - *MESH_TFACE 62 39 50 51 - *MESH_TFACE 63 39 51 40 - *MESH_TFACE 64 40 51 52 - *MESH_TFACE 65 40 52 41 - *MESH_TFACE 66 41 52 53 - *MESH_TFACE 67 41 53 42 - *MESH_TFACE 68 42 53 54 - *MESH_TFACE 69 42 54 43 - *MESH_TFACE 70 55 45 44 - *MESH_TFACE 71 56 46 45 - *MESH_TFACE 72 57 47 46 - *MESH_TFACE 73 58 48 47 - *MESH_TFACE 74 59 49 48 - *MESH_TFACE 75 60 50 49 - *MESH_TFACE 76 61 51 50 - *MESH_TFACE 77 62 52 51 - *MESH_TFACE 78 63 53 52 - *MESH_TFACE 79 64 54 53 - } - *MESH_NORMALS { - *MESH_FACENORMAL 0 -0.0999 0.3075 0.9463 - *MESH_VERTEXNORMAL 0 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 1 -0.0545 0.6347 0.7709 - *MESH_VERTEXNORMAL 2 -0.4171 0.4814 0.7709 - *MESH_FACENORMAL 1 -0.2616 0.1900 0.9463 - *MESH_VERTEXNORMAL 0 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 2 -0.4171 0.4814 0.7709 - *MESH_VERTEXNORMAL 3 -0.6204 0.1443 0.7709 - *MESH_FACENORMAL 2 -0.3233 0.0000 0.9463 - *MESH_VERTEXNORMAL 0 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 -0.6204 0.1443 0.7709 - *MESH_VERTEXNORMAL 4 -0.5868 -0.2479 0.7709 - *MESH_FACENORMAL 3 -0.2616 -0.1900 0.9463 - *MESH_VERTEXNORMAL 0 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 -0.5868 -0.2479 0.7709 - *MESH_VERTEXNORMAL 5 -0.3290 -0.5455 0.7709 - *MESH_FACENORMAL 4 -0.0999 -0.3075 0.9463 - *MESH_VERTEXNORMAL 0 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 -0.3290 -0.5455 0.7709 - *MESH_VERTEXNORMAL 6 0.0545 -0.6347 0.7709 - *MESH_FACENORMAL 5 0.0999 -0.3075 0.9463 - *MESH_VERTEXNORMAL 0 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 6 0.0545 -0.6347 0.7709 - *MESH_VERTEXNORMAL 7 0.4171 -0.4814 0.7709 - *MESH_FACENORMAL 6 0.2616 -0.1900 0.9463 - *MESH_VERTEXNORMAL 0 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 7 0.4171 -0.4814 0.7709 - *MESH_VERTEXNORMAL 8 0.6204 -0.1443 0.7709 - *MESH_FACENORMAL 7 0.3233 0.0000 0.9463 - *MESH_VERTEXNORMAL 0 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 8 0.6204 -0.1443 0.7709 - *MESH_VERTEXNORMAL 9 0.5868 0.2479 0.7709 - *MESH_FACENORMAL 8 0.2616 0.1900 0.9463 - *MESH_VERTEXNORMAL 0 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.5868 0.2479 0.7709 - *MESH_VERTEXNORMAL 10 0.3290 0.5455 0.7709 - *MESH_FACENORMAL 9 0.0999 0.3075 0.9463 - *MESH_VERTEXNORMAL 0 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.3290 0.5455 0.7709 - *MESH_VERTEXNORMAL 1 -0.0545 0.6347 0.7709 - *MESH_FACENORMAL 10 -0.2542 0.7824 0.5685 - *MESH_VERTEXNORMAL 1 -0.0545 0.6347 0.7709 - *MESH_VERTEXNORMAL 11 -0.0100 0.9502 0.3116 - *MESH_VERTEXNORMAL 12 -0.5666 0.7628 0.3116 - *MESH_FACENORMAL 11 -0.2542 0.7824 0.5685 - *MESH_VERTEXNORMAL 1 -0.0545 0.6347 0.7709 - *MESH_VERTEXNORMAL 12 -0.5666 0.7628 0.3116 - *MESH_VERTEXNORMAL 2 -0.4171 0.4814 0.7709 - *MESH_FACENORMAL 12 -0.6656 0.4836 0.5685 - *MESH_VERTEXNORMAL 2 -0.4171 0.4814 0.7709 - *MESH_VERTEXNORMAL 12 -0.5666 0.7628 0.3116 - *MESH_VERTEXNORMAL 13 -0.9068 0.2841 0.3116 - *MESH_FACENORMAL 13 -0.6656 0.4836 0.5685 - *MESH_VERTEXNORMAL 2 -0.4171 0.4814 0.7709 - *MESH_VERTEXNORMAL 13 -0.9068 0.2841 0.3116 - *MESH_VERTEXNORMAL 3 -0.6204 0.1443 0.7709 - *MESH_FACENORMAL 14 -0.8227 0.0000 0.5685 - *MESH_VERTEXNORMAL 3 -0.6204 0.1443 0.7709 - *MESH_VERTEXNORMAL 13 -0.9068 0.2841 0.3116 - *MESH_VERTEXNORMAL 14 -0.9006 -0.3031 0.3116 - *MESH_FACENORMAL 15 -0.8227 0.0000 0.5685 - *MESH_VERTEXNORMAL 3 -0.6204 0.1443 0.7709 - *MESH_VERTEXNORMAL 14 -0.9006 -0.3031 0.3116 - *MESH_VERTEXNORMAL 4 -0.5868 -0.2479 0.7709 - *MESH_FACENORMAL 16 -0.6656 -0.4836 0.5685 - *MESH_VERTEXNORMAL 4 -0.5868 -0.2479 0.7709 - *MESH_VERTEXNORMAL 14 -0.9006 -0.3031 0.3116 - *MESH_VERTEXNORMAL 15 -0.5504 -0.7746 0.3116 - *MESH_FACENORMAL 17 -0.6656 -0.4836 0.5685 - *MESH_VERTEXNORMAL 4 -0.5868 -0.2479 0.7709 - *MESH_VERTEXNORMAL 15 -0.5504 -0.7746 0.3116 - *MESH_VERTEXNORMAL 5 -0.3290 -0.5455 0.7709 - *MESH_FACENORMAL 18 -0.2542 -0.7824 0.5685 - *MESH_VERTEXNORMAL 5 -0.3290 -0.5455 0.7709 - *MESH_VERTEXNORMAL 15 -0.5504 -0.7746 0.3116 - *MESH_VERTEXNORMAL 16 0.0100 -0.9502 0.3116 - *MESH_FACENORMAL 19 -0.2542 -0.7824 0.5685 - *MESH_VERTEXNORMAL 5 -0.3290 -0.5455 0.7709 - *MESH_VERTEXNORMAL 16 0.0100 -0.9502 0.3116 - *MESH_VERTEXNORMAL 6 0.0545 -0.6347 0.7709 - *MESH_FACENORMAL 20 0.2542 -0.7824 0.5685 - *MESH_VERTEXNORMAL 6 0.0545 -0.6347 0.7709 - *MESH_VERTEXNORMAL 16 0.0100 -0.9502 0.3116 - *MESH_VERTEXNORMAL 17 0.5666 -0.7628 0.3116 - *MESH_FACENORMAL 21 0.2542 -0.7824 0.5685 - *MESH_VERTEXNORMAL 6 0.0545 -0.6347 0.7709 - *MESH_VERTEXNORMAL 17 0.5666 -0.7628 0.3116 - *MESH_VERTEXNORMAL 7 0.4171 -0.4814 0.7709 - *MESH_FACENORMAL 22 0.6656 -0.4836 0.5685 - *MESH_VERTEXNORMAL 7 0.4171 -0.4814 0.7709 - *MESH_VERTEXNORMAL 17 0.5666 -0.7628 0.3116 - *MESH_VERTEXNORMAL 18 0.9068 -0.2841 0.3116 - *MESH_FACENORMAL 23 0.6656 -0.4836 0.5685 - *MESH_VERTEXNORMAL 7 0.4171 -0.4814 0.7709 - *MESH_VERTEXNORMAL 18 0.9068 -0.2841 0.3116 - *MESH_VERTEXNORMAL 8 0.6204 -0.1443 0.7709 - *MESH_FACENORMAL 24 0.8227 0.0000 0.5685 - *MESH_VERTEXNORMAL 8 0.6204 -0.1443 0.7709 - *MESH_VERTEXNORMAL 18 0.9068 -0.2841 0.3116 - *MESH_VERTEXNORMAL 19 0.9006 0.3031 0.3116 - *MESH_FACENORMAL 25 0.8227 0.0000 0.5685 - *MESH_VERTEXNORMAL 8 0.6204 -0.1443 0.7709 - *MESH_VERTEXNORMAL 19 0.9006 0.3031 0.3116 - *MESH_VERTEXNORMAL 9 0.5868 0.2479 0.7709 - *MESH_FACENORMAL 26 0.6656 0.4836 0.5685 - *MESH_VERTEXNORMAL 9 0.5868 0.2479 0.7709 - *MESH_VERTEXNORMAL 19 0.9006 0.3031 0.3116 - *MESH_VERTEXNORMAL 20 0.5504 0.7746 0.3116 - *MESH_FACENORMAL 27 0.6656 0.4836 0.5685 - *MESH_VERTEXNORMAL 9 0.5868 0.2479 0.7709 - *MESH_VERTEXNORMAL 20 0.5504 0.7746 0.3116 - *MESH_VERTEXNORMAL 10 0.3290 0.5455 0.7709 - *MESH_FACENORMAL 28 0.2542 0.7824 0.5685 - *MESH_VERTEXNORMAL 10 0.3290 0.5455 0.7709 - *MESH_VERTEXNORMAL 20 0.5504 0.7746 0.3116 - *MESH_VERTEXNORMAL 11 -0.0100 0.9502 0.3116 - *MESH_FACENORMAL 29 0.2542 0.7824 0.5685 - *MESH_VERTEXNORMAL 10 0.3290 0.5455 0.7709 - *MESH_VERTEXNORMAL 11 -0.0100 0.9502 0.3116 - *MESH_VERTEXNORMAL 1 -0.0545 0.6347 0.7709 - *MESH_FACENORMAL 30 -0.3090 0.9511 -0.0000 - *MESH_VERTEXNORMAL 11 -0.0100 0.9502 0.3116 - *MESH_VERTEXNORMAL 21 0.0100 0.9502 -0.3116 - *MESH_VERTEXNORMAL 22 -0.5504 0.7746 -0.3116 - *MESH_FACENORMAL 31 -0.3090 0.9511 0.0000 - *MESH_VERTEXNORMAL 11 -0.0100 0.9502 0.3116 - *MESH_VERTEXNORMAL 22 -0.5504 0.7746 -0.3116 - *MESH_VERTEXNORMAL 12 -0.5666 0.7628 0.3116 - *MESH_FACENORMAL 32 -0.8090 0.5878 0.0000 - *MESH_VERTEXNORMAL 12 -0.5666 0.7628 0.3116 - *MESH_VERTEXNORMAL 22 -0.5504 0.7746 -0.3116 - *MESH_VERTEXNORMAL 23 -0.9006 0.3031 -0.3116 - *MESH_FACENORMAL 33 -0.8090 0.5878 -0.0000 - *MESH_VERTEXNORMAL 12 -0.5666 0.7628 0.3116 - *MESH_VERTEXNORMAL 23 -0.9006 0.3031 -0.3116 - *MESH_VERTEXNORMAL 13 -0.9068 0.2841 0.3116 - *MESH_FACENORMAL 34 -1.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 13 -0.9068 0.2841 0.3116 - *MESH_VERTEXNORMAL 23 -0.9006 0.3031 -0.3116 - *MESH_VERTEXNORMAL 24 -0.9068 -0.2841 -0.3116 - *MESH_FACENORMAL 35 -1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 13 -0.9068 0.2841 0.3116 - *MESH_VERTEXNORMAL 24 -0.9068 -0.2841 -0.3116 - *MESH_VERTEXNORMAL 14 -0.9006 -0.3031 0.3116 - *MESH_FACENORMAL 36 -0.8090 -0.5878 -0.0000 - *MESH_VERTEXNORMAL 14 -0.9006 -0.3031 0.3116 - *MESH_VERTEXNORMAL 24 -0.9068 -0.2841 -0.3116 - *MESH_VERTEXNORMAL 25 -0.5666 -0.7628 -0.3116 - *MESH_FACENORMAL 37 -0.8090 -0.5878 -0.0000 - *MESH_VERTEXNORMAL 14 -0.9006 -0.3031 0.3116 - *MESH_VERTEXNORMAL 25 -0.5666 -0.7628 -0.3116 - *MESH_VERTEXNORMAL 15 -0.5504 -0.7746 0.3116 - *MESH_FACENORMAL 38 -0.3090 -0.9511 -0.0000 - *MESH_VERTEXNORMAL 15 -0.5504 -0.7746 0.3116 - *MESH_VERTEXNORMAL 25 -0.5666 -0.7628 -0.3116 - *MESH_VERTEXNORMAL 26 -0.0100 -0.9502 -0.3116 - *MESH_FACENORMAL 39 -0.3090 -0.9511 -0.0000 - *MESH_VERTEXNORMAL 15 -0.5504 -0.7746 0.3116 - *MESH_VERTEXNORMAL 26 -0.0100 -0.9502 -0.3116 - *MESH_VERTEXNORMAL 16 0.0100 -0.9502 0.3116 - *MESH_FACENORMAL 40 0.3090 -0.9511 -0.0000 - *MESH_VERTEXNORMAL 16 0.0100 -0.9502 0.3116 - *MESH_VERTEXNORMAL 26 -0.0100 -0.9502 -0.3116 - *MESH_VERTEXNORMAL 27 0.5504 -0.7746 -0.3116 - *MESH_FACENORMAL 41 0.3090 -0.9511 -0.0000 - *MESH_VERTEXNORMAL 16 0.0100 -0.9502 0.3116 - *MESH_VERTEXNORMAL 27 0.5504 -0.7746 -0.3116 - *MESH_VERTEXNORMAL 17 0.5666 -0.7628 0.3116 - *MESH_FACENORMAL 42 0.8090 -0.5878 -0.0000 - *MESH_VERTEXNORMAL 17 0.5666 -0.7628 0.3116 - *MESH_VERTEXNORMAL 27 0.5504 -0.7746 -0.3116 - *MESH_VERTEXNORMAL 28 0.9006 -0.3031 -0.3116 - *MESH_FACENORMAL 43 0.8090 -0.5878 0.0000 - *MESH_VERTEXNORMAL 17 0.5666 -0.7628 0.3116 - *MESH_VERTEXNORMAL 28 0.9006 -0.3031 -0.3116 - *MESH_VERTEXNORMAL 18 0.9068 -0.2841 0.3116 - *MESH_FACENORMAL 44 1.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 18 0.9068 -0.2841 0.3116 - *MESH_VERTEXNORMAL 28 0.9006 -0.3031 -0.3116 - *MESH_VERTEXNORMAL 29 0.9068 0.2841 -0.3116 - *MESH_FACENORMAL 45 1.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 18 0.9068 -0.2841 0.3116 - *MESH_VERTEXNORMAL 29 0.9068 0.2841 -0.3116 - *MESH_VERTEXNORMAL 19 0.9006 0.3031 0.3116 - *MESH_FACENORMAL 46 0.8090 0.5878 -0.0000 - *MESH_VERTEXNORMAL 19 0.9006 0.3031 0.3116 - *MESH_VERTEXNORMAL 29 0.9068 0.2841 -0.3116 - *MESH_VERTEXNORMAL 30 0.5666 0.7628 -0.3116 - *MESH_FACENORMAL 47 0.8090 0.5878 -0.0000 - *MESH_VERTEXNORMAL 19 0.9006 0.3031 0.3116 - *MESH_VERTEXNORMAL 30 0.5666 0.7628 -0.3116 - *MESH_VERTEXNORMAL 20 0.5504 0.7746 0.3116 - *MESH_FACENORMAL 48 0.3090 0.9511 -0.0000 - *MESH_VERTEXNORMAL 20 0.5504 0.7746 0.3116 - *MESH_VERTEXNORMAL 30 0.5666 0.7628 -0.3116 - *MESH_VERTEXNORMAL 21 0.0100 0.9502 -0.3116 - *MESH_FACENORMAL 49 0.3090 0.9511 -0.0000 - *MESH_VERTEXNORMAL 20 0.5504 0.7746 0.3116 - *MESH_VERTEXNORMAL 21 0.0100 0.9502 -0.3116 - *MESH_VERTEXNORMAL 11 -0.0100 0.9502 0.3116 - *MESH_FACENORMAL 50 -0.2542 0.7824 -0.5685 - *MESH_VERTEXNORMAL 21 0.0100 0.9502 -0.3116 - *MESH_VERTEXNORMAL 31 0.0545 0.6347 -0.7709 - *MESH_VERTEXNORMAL 32 -0.3290 0.5455 -0.7709 - *MESH_FACENORMAL 51 -0.2542 0.7824 -0.5685 - *MESH_VERTEXNORMAL 21 0.0100 0.9502 -0.3116 - *MESH_VERTEXNORMAL 32 -0.3290 0.5455 -0.7709 - *MESH_VERTEXNORMAL 22 -0.5504 0.7746 -0.3116 - *MESH_FACENORMAL 52 -0.6656 0.4836 -0.5685 - *MESH_VERTEXNORMAL 22 -0.5504 0.7746 -0.3116 - *MESH_VERTEXNORMAL 32 -0.3290 0.5455 -0.7709 - *MESH_VERTEXNORMAL 33 -0.5868 0.2479 -0.7709 - *MESH_FACENORMAL 53 -0.6656 0.4836 -0.5685 - *MESH_VERTEXNORMAL 22 -0.5504 0.7746 -0.3116 - *MESH_VERTEXNORMAL 33 -0.5868 0.2479 -0.7709 - *MESH_VERTEXNORMAL 23 -0.9006 0.3031 -0.3116 - *MESH_FACENORMAL 54 -0.8227 -0.0000 -0.5685 - *MESH_VERTEXNORMAL 23 -0.9006 0.3031 -0.3116 - *MESH_VERTEXNORMAL 33 -0.5868 0.2479 -0.7709 - *MESH_VERTEXNORMAL 34 -0.6204 -0.1443 -0.7709 - *MESH_FACENORMAL 55 -0.8227 0.0000 -0.5685 - *MESH_VERTEXNORMAL 23 -0.9006 0.3031 -0.3116 - *MESH_VERTEXNORMAL 34 -0.6204 -0.1443 -0.7709 - *MESH_VERTEXNORMAL 24 -0.9068 -0.2841 -0.3116 - *MESH_FACENORMAL 56 -0.6656 -0.4836 -0.5685 - *MESH_VERTEXNORMAL 24 -0.9068 -0.2841 -0.3116 - *MESH_VERTEXNORMAL 34 -0.6204 -0.1443 -0.7709 - *MESH_VERTEXNORMAL 35 -0.4171 -0.4814 -0.7709 - *MESH_FACENORMAL 57 -0.6656 -0.4836 -0.5685 - *MESH_VERTEXNORMAL 24 -0.9068 -0.2841 -0.3116 - *MESH_VERTEXNORMAL 35 -0.4171 -0.4814 -0.7709 - *MESH_VERTEXNORMAL 25 -0.5666 -0.7628 -0.3116 - *MESH_FACENORMAL 58 -0.2542 -0.7824 -0.5685 - *MESH_VERTEXNORMAL 25 -0.5666 -0.7628 -0.3116 - *MESH_VERTEXNORMAL 35 -0.4171 -0.4814 -0.7709 - *MESH_VERTEXNORMAL 36 -0.0545 -0.6347 -0.7709 - *MESH_FACENORMAL 59 -0.2542 -0.7824 -0.5685 - *MESH_VERTEXNORMAL 25 -0.5666 -0.7628 -0.3116 - *MESH_VERTEXNORMAL 36 -0.0545 -0.6347 -0.7709 - *MESH_VERTEXNORMAL 26 -0.0100 -0.9502 -0.3116 - *MESH_FACENORMAL 60 0.2542 -0.7824 -0.5685 - *MESH_VERTEXNORMAL 26 -0.0100 -0.9502 -0.3116 - *MESH_VERTEXNORMAL 36 -0.0545 -0.6347 -0.7709 - *MESH_VERTEXNORMAL 37 0.3290 -0.5455 -0.7709 - *MESH_FACENORMAL 61 0.2542 -0.7824 -0.5685 - *MESH_VERTEXNORMAL 26 -0.0100 -0.9502 -0.3116 - *MESH_VERTEXNORMAL 37 0.3290 -0.5455 -0.7709 - *MESH_VERTEXNORMAL 27 0.5504 -0.7746 -0.3116 - *MESH_FACENORMAL 62 0.6656 -0.4836 -0.5685 - *MESH_VERTEXNORMAL 27 0.5504 -0.7746 -0.3116 - *MESH_VERTEXNORMAL 37 0.3290 -0.5455 -0.7709 - *MESH_VERTEXNORMAL 38 0.5868 -0.2479 -0.7709 - *MESH_FACENORMAL 63 0.6656 -0.4836 -0.5685 - *MESH_VERTEXNORMAL 27 0.5504 -0.7746 -0.3116 - *MESH_VERTEXNORMAL 38 0.5868 -0.2479 -0.7709 - *MESH_VERTEXNORMAL 28 0.9006 -0.3031 -0.3116 - *MESH_FACENORMAL 64 0.8227 0.0000 -0.5685 - *MESH_VERTEXNORMAL 28 0.9006 -0.3031 -0.3116 - *MESH_VERTEXNORMAL 38 0.5868 -0.2479 -0.7709 - *MESH_VERTEXNORMAL 39 0.6204 0.1443 -0.7709 - *MESH_FACENORMAL 65 0.8227 0.0000 -0.5685 - *MESH_VERTEXNORMAL 28 0.9006 -0.3031 -0.3116 - *MESH_VERTEXNORMAL 39 0.6204 0.1443 -0.7709 - *MESH_VERTEXNORMAL 29 0.9068 0.2841 -0.3116 - *MESH_FACENORMAL 66 0.6656 0.4836 -0.5685 - *MESH_VERTEXNORMAL 29 0.9068 0.2841 -0.3116 - *MESH_VERTEXNORMAL 39 0.6204 0.1443 -0.7709 - *MESH_VERTEXNORMAL 40 0.4171 0.4814 -0.7709 - *MESH_FACENORMAL 67 0.6656 0.4836 -0.5685 - *MESH_VERTEXNORMAL 29 0.9068 0.2841 -0.3116 - *MESH_VERTEXNORMAL 40 0.4171 0.4814 -0.7709 - *MESH_VERTEXNORMAL 30 0.5666 0.7628 -0.3116 - *MESH_FACENORMAL 68 0.2542 0.7824 -0.5685 - *MESH_VERTEXNORMAL 30 0.5666 0.7628 -0.3116 - *MESH_VERTEXNORMAL 40 0.4171 0.4814 -0.7709 - *MESH_VERTEXNORMAL 31 0.0545 0.6347 -0.7709 - *MESH_FACENORMAL 69 0.2542 0.7824 -0.5685 - *MESH_VERTEXNORMAL 30 0.5666 0.7628 -0.3116 - *MESH_VERTEXNORMAL 31 0.0545 0.6347 -0.7709 - *MESH_VERTEXNORMAL 21 0.0100 0.9502 -0.3116 - *MESH_FACENORMAL 70 -0.0999 0.3075 -0.9463 - *MESH_VERTEXNORMAL 41 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 32 -0.3290 0.5455 -0.7709 - *MESH_VERTEXNORMAL 31 0.0545 0.6347 -0.7709 - *MESH_FACENORMAL 71 -0.2616 0.1900 -0.9463 - *MESH_VERTEXNORMAL 41 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 33 -0.5868 0.2479 -0.7709 - *MESH_VERTEXNORMAL 32 -0.3290 0.5455 -0.7709 - *MESH_FACENORMAL 72 -0.3233 0.0000 -0.9463 - *MESH_VERTEXNORMAL 41 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 34 -0.6204 -0.1443 -0.7709 - *MESH_VERTEXNORMAL 33 -0.5868 0.2479 -0.7709 - *MESH_FACENORMAL 73 -0.2616 -0.1900 -0.9463 - *MESH_VERTEXNORMAL 41 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 35 -0.4171 -0.4814 -0.7709 - *MESH_VERTEXNORMAL 34 -0.6204 -0.1443 -0.7709 - *MESH_FACENORMAL 74 -0.0999 -0.3075 -0.9463 - *MESH_VERTEXNORMAL 41 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 36 -0.0545 -0.6347 -0.7709 - *MESH_VERTEXNORMAL 35 -0.4171 -0.4814 -0.7709 - *MESH_FACENORMAL 75 0.0999 -0.3075 -0.9463 - *MESH_VERTEXNORMAL 41 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 37 0.3290 -0.5455 -0.7709 - *MESH_VERTEXNORMAL 36 -0.0545 -0.6347 -0.7709 - *MESH_FACENORMAL 76 0.2616 -0.1900 -0.9463 - *MESH_VERTEXNORMAL 41 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 38 0.5868 -0.2479 -0.7709 - *MESH_VERTEXNORMAL 37 0.3290 -0.5455 -0.7709 - *MESH_FACENORMAL 77 0.3233 0.0000 -0.9463 - *MESH_VERTEXNORMAL 41 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 39 0.6204 0.1443 -0.7709 - *MESH_VERTEXNORMAL 38 0.5868 -0.2479 -0.7709 - *MESH_FACENORMAL 78 0.2616 0.1900 -0.9463 - *MESH_VERTEXNORMAL 41 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 40 0.4171 0.4814 -0.7709 - *MESH_VERTEXNORMAL 39 0.6204 0.1443 -0.7709 - *MESH_FACENORMAL 79 0.0999 0.3075 -0.9463 - *MESH_VERTEXNORMAL 41 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 31 0.0545 0.6347 -0.7709 - *MESH_VERTEXNORMAL 40 0.4171 0.4814 -0.7709 - } - } - *PROP_MOTIONBLUR 0 - *PROP_CASTSHADOW 1 - *PROP_RECVSHADOW 1 - *MATERIAL_REF 0 -} -*GEOMOBJECT { - *NODE_NAME "Sphere02" - *NODE_TM { - *NODE_NAME "Sphere02" - *INHERIT_POS 0 0 0 - *INHERIT_ROT 0 0 0 - *INHERIT_SCL 0 0 0 - *TM_ROW0 1.0000 0.0000 0.0000 - *TM_ROW1 0.0000 -0.0000 1.0000 - *TM_ROW2 0.0000 -1.0000 -0.0000 - *TM_ROW3 0.0000 0.0000 -0.4000 - *TM_POS 0.0000 0.0000 -0.4000 - *TM_ROTAXIS -1.0000 -0.0000 -0.0000 - *TM_ROTANGLE 1.5708 - *TM_SCALE 1.0000 1.0000 1.0000 - *TM_SCALEAXIS 0.0000 0.0000 0.0000 - *TM_SCALEAXISANG 0.0000 - } - *MESH { - *TIMEVALUE 0 - *MESH_NUMVERTEX 26 - *MESH_NUMFACES 48 - *MESH_VERTEX_LIST { - *MESH_VERTEX 0 0.0000 -0.0300 -0.4000 - *MESH_VERTEX 1 -0.0000 -0.0212 -0.3788 - *MESH_VERTEX 2 -0.0150 -0.0212 -0.3850 - *MESH_VERTEX 3 -0.0212 -0.0212 -0.4000 - *MESH_VERTEX 4 -0.0150 -0.0212 -0.4150 - *MESH_VERTEX 5 0.0000 -0.0212 -0.4212 - *MESH_VERTEX 6 0.0150 -0.0212 -0.4150 - *MESH_VERTEX 7 0.0212 -0.0212 -0.4000 - *MESH_VERTEX 8 0.0150 -0.0212 -0.3850 - *MESH_VERTEX 9 -0.0000 0.0000 -0.3700 - *MESH_VERTEX 10 -0.0212 0.0000 -0.3788 - *MESH_VERTEX 11 -0.0300 0.0000 -0.4000 - *MESH_VERTEX 12 -0.0212 0.0000 -0.4212 - *MESH_VERTEX 13 0.0000 0.0000 -0.4300 - *MESH_VERTEX 14 0.0212 0.0000 -0.4212 - *MESH_VERTEX 15 0.0300 0.0000 -0.4000 - *MESH_VERTEX 16 0.0212 0.0000 -0.3788 - *MESH_VERTEX 17 -0.0000 0.0212 -0.3788 - *MESH_VERTEX 18 -0.0150 0.0212 -0.3850 - *MESH_VERTEX 19 -0.0212 0.0212 -0.4000 - *MESH_VERTEX 20 -0.0150 0.0212 -0.4150 - *MESH_VERTEX 21 0.0000 0.0212 -0.4212 - *MESH_VERTEX 22 0.0150 0.0212 -0.4150 - *MESH_VERTEX 23 0.0212 0.0212 -0.4000 - *MESH_VERTEX 24 0.0150 0.0212 -0.3850 - *MESH_VERTEX 25 0.0000 0.0300 -0.4000 - } - *MESH_FACE_LIST { - *MESH_FACE 0: A: 0 B: 1 C: 2 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 1: A: 0 B: 2 C: 3 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 2: A: 0 B: 3 C: 4 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 3: A: 0 B: 4 C: 5 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 4: A: 0 B: 5 C: 6 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 5: A: 0 B: 6 C: 7 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 6: A: 0 B: 7 C: 8 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 7: A: 0 B: 8 C: 1 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 8: A: 1 B: 9 C: 10 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 9: A: 1 B: 10 C: 2 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 10: A: 2 B: 10 C: 11 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 11: A: 2 B: 11 C: 3 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 12: A: 3 B: 11 C: 12 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 13: A: 3 B: 12 C: 4 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 14: A: 4 B: 12 C: 13 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 15: A: 4 B: 13 C: 5 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 16: A: 5 B: 13 C: 14 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 17: A: 5 B: 14 C: 6 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 18: A: 6 B: 14 C: 15 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 19: A: 6 B: 15 C: 7 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 20: A: 7 B: 15 C: 16 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 21: A: 7 B: 16 C: 8 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 22: A: 8 B: 16 C: 9 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 23: A: 8 B: 9 C: 1 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 24: A: 9 B: 17 C: 18 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 25: A: 9 B: 18 C: 10 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 26: A: 10 B: 18 C: 19 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 27: A: 10 B: 19 C: 11 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 28: A: 11 B: 19 C: 20 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 29: A: 11 B: 20 C: 12 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 30: A: 12 B: 20 C: 21 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 31: A: 12 B: 21 C: 13 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 32: A: 13 B: 21 C: 22 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 33: A: 13 B: 22 C: 14 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 34: A: 14 B: 22 C: 23 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 35: A: 14 B: 23 C: 15 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 36: A: 15 B: 23 C: 24 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 37: A: 15 B: 24 C: 16 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 38: A: 16 B: 24 C: 17 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 39: A: 16 B: 17 C: 9 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 40: A: 25 B: 18 C: 17 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 41: A: 25 B: 19 C: 18 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 42: A: 25 B: 20 C: 19 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 43: A: 25 B: 21 C: 20 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 44: A: 25 B: 22 C: 21 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 45: A: 25 B: 23 C: 22 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 46: A: 25 B: 24 C: 23 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 47: A: 25 B: 17 C: 24 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 1 - } - *MESH_NUMTVERTEX 45 - *MESH_TVERTLIST { - *MESH_TVERT 0 0.0000 1.0000 0.0000 - *MESH_TVERT 1 0.1250 1.0000 0.0000 - *MESH_TVERT 2 0.2500 1.0000 0.0000 - *MESH_TVERT 3 0.3750 1.0000 0.0000 - *MESH_TVERT 4 0.5000 1.0000 0.0000 - *MESH_TVERT 5 0.6250 1.0000 0.0000 - *MESH_TVERT 6 0.7500 1.0000 0.0000 - *MESH_TVERT 7 0.8750 1.0000 0.0000 - *MESH_TVERT 8 1.0000 1.0000 0.0000 - *MESH_TVERT 9 0.0000 0.7500 0.0000 - *MESH_TVERT 10 0.1250 0.7500 0.0000 - *MESH_TVERT 11 0.2500 0.7500 0.0000 - *MESH_TVERT 12 0.3750 0.7500 0.0000 - *MESH_TVERT 13 0.5000 0.7500 0.0000 - *MESH_TVERT 14 0.6250 0.7500 0.0000 - *MESH_TVERT 15 0.7500 0.7500 0.0000 - *MESH_TVERT 16 0.8750 0.7500 0.0000 - *MESH_TVERT 17 1.0000 0.7500 0.0000 - *MESH_TVERT 18 0.0000 0.5000 0.0000 - *MESH_TVERT 19 0.1250 0.5000 0.0000 - *MESH_TVERT 20 0.2500 0.5000 0.0000 - *MESH_TVERT 21 0.3750 0.5000 0.0000 - *MESH_TVERT 22 0.5000 0.5000 0.0000 - *MESH_TVERT 23 0.6250 0.5000 0.0000 - *MESH_TVERT 24 0.7500 0.5000 0.0000 - *MESH_TVERT 25 0.8750 0.5000 0.0000 - *MESH_TVERT 26 1.0000 0.5000 0.0000 - *MESH_TVERT 27 0.0000 0.2500 0.0000 - *MESH_TVERT 28 0.1250 0.2500 0.0000 - *MESH_TVERT 29 0.2500 0.2500 0.0000 - *MESH_TVERT 30 0.3750 0.2500 0.0000 - *MESH_TVERT 31 0.5000 0.2500 0.0000 - *MESH_TVERT 32 0.6250 0.2500 0.0000 - *MESH_TVERT 33 0.7500 0.2500 0.0000 - *MESH_TVERT 34 0.8750 0.2500 0.0000 - *MESH_TVERT 35 1.0000 0.2500 0.0000 - *MESH_TVERT 36 0.0000 0.0000 0.0000 - *MESH_TVERT 37 0.1250 0.0000 0.0000 - *MESH_TVERT 38 0.2500 0.0000 0.0000 - *MESH_TVERT 39 0.3750 0.0000 0.0000 - *MESH_TVERT 40 0.5000 0.0000 0.0000 - *MESH_TVERT 41 0.6250 0.0000 0.0000 - *MESH_TVERT 42 0.7500 0.0000 0.0000 - *MESH_TVERT 43 0.8750 0.0000 0.0000 - *MESH_TVERT 44 1.0000 0.0000 0.0000 - } - *MESH_NUMTVFACES 48 - *MESH_TFACELIST { - *MESH_TFACE 0 0 9 10 - *MESH_TFACE 1 1 10 11 - *MESH_TFACE 2 2 11 12 - *MESH_TFACE 3 3 12 13 - *MESH_TFACE 4 4 13 14 - *MESH_TFACE 5 5 14 15 - *MESH_TFACE 6 6 15 16 - *MESH_TFACE 7 7 16 17 - *MESH_TFACE 8 9 18 19 - *MESH_TFACE 9 9 19 10 - *MESH_TFACE 10 10 19 20 - *MESH_TFACE 11 10 20 11 - *MESH_TFACE 12 11 20 21 - *MESH_TFACE 13 11 21 12 - *MESH_TFACE 14 12 21 22 - *MESH_TFACE 15 12 22 13 - *MESH_TFACE 16 13 22 23 - *MESH_TFACE 17 13 23 14 - *MESH_TFACE 18 14 23 24 - *MESH_TFACE 19 14 24 15 - *MESH_TFACE 20 15 24 25 - *MESH_TFACE 21 15 25 16 - *MESH_TFACE 22 16 25 26 - *MESH_TFACE 23 16 26 17 - *MESH_TFACE 24 18 27 28 - *MESH_TFACE 25 18 28 19 - *MESH_TFACE 26 19 28 29 - *MESH_TFACE 27 19 29 20 - *MESH_TFACE 28 20 29 30 - *MESH_TFACE 29 20 30 21 - *MESH_TFACE 30 21 30 31 - *MESH_TFACE 31 21 31 22 - *MESH_TFACE 32 22 31 32 - *MESH_TFACE 33 22 32 23 - *MESH_TFACE 34 23 32 33 - *MESH_TFACE 35 23 33 24 - *MESH_TFACE 36 24 33 34 - *MESH_TFACE 37 24 34 25 - *MESH_TFACE 38 25 34 35 - *MESH_TFACE 39 25 35 26 - *MESH_TFACE 40 36 28 27 - *MESH_TFACE 41 37 29 28 - *MESH_TFACE 42 38 30 29 - *MESH_TFACE 43 39 31 30 - *MESH_TFACE 44 40 32 31 - *MESH_TFACE 45 41 33 32 - *MESH_TFACE 46 42 34 33 - *MESH_TFACE 47 43 35 34 - } - *MESH_NORMALS { - *MESH_FACENORMAL 0 -0.1566 0.3780 0.9125 - *MESH_VERTEXNORMAL 0 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 1 -0.0805 0.7534 0.6526 - *MESH_VERTEXNORMAL 2 -0.5897 0.4758 0.6526 - *MESH_FACENORMAL 1 -0.3780 0.1566 0.9125 - *MESH_VERTEXNORMAL 0 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 2 -0.5897 0.4758 0.6526 - *MESH_VERTEXNORMAL 3 -0.7534 -0.0805 0.6526 - *MESH_FACENORMAL 2 -0.3780 -0.1566 0.9125 - *MESH_VERTEXNORMAL 0 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 3 -0.7534 -0.0805 0.6526 - *MESH_VERTEXNORMAL 4 -0.4758 -0.5897 0.6526 - *MESH_FACENORMAL 3 -0.1566 -0.3780 0.9125 - *MESH_VERTEXNORMAL 0 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 4 -0.4758 -0.5897 0.6526 - *MESH_VERTEXNORMAL 5 0.0805 -0.7534 0.6526 - *MESH_FACENORMAL 4 0.1566 -0.3780 0.9125 - *MESH_VERTEXNORMAL 0 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0805 -0.7534 0.6526 - *MESH_VERTEXNORMAL 6 0.5897 -0.4758 0.6526 - *MESH_FACENORMAL 5 0.3780 -0.1566 0.9125 - *MESH_VERTEXNORMAL 0 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 6 0.5897 -0.4758 0.6526 - *MESH_VERTEXNORMAL 7 0.7534 0.0805 0.6526 - *MESH_FACENORMAL 6 0.3780 0.1566 0.9125 - *MESH_VERTEXNORMAL 0 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 7 0.7534 0.0805 0.6526 - *MESH_VERTEXNORMAL 8 0.4758 0.5897 0.6526 - *MESH_FACENORMAL 7 0.1566 0.3780 0.9125 - *MESH_VERTEXNORMAL 0 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 8 0.4758 0.5897 0.6526 - *MESH_VERTEXNORMAL 1 -0.0805 0.7534 0.6526 - *MESH_FACENORMAL 8 -0.3574 0.8629 0.3574 - *MESH_VERTEXNORMAL 1 -0.0805 0.7534 0.6526 - *MESH_VERTEXNORMAL 9 0.0000 1.0000 -0.0000 - *MESH_VERTEXNORMAL 10 -0.7071 0.7071 0.0000 - *MESH_FACENORMAL 9 -0.3574 0.8629 0.3574 - *MESH_VERTEXNORMAL 1 -0.0805 0.7534 0.6526 - *MESH_VERTEXNORMAL 10 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 2 -0.5897 0.4758 0.6526 - *MESH_FACENORMAL 10 -0.8629 0.3574 0.3574 - *MESH_VERTEXNORMAL 2 -0.5897 0.4758 0.6526 - *MESH_VERTEXNORMAL 10 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 11 -1.0000 -0.0000 -0.0000 - *MESH_FACENORMAL 11 -0.8629 0.3574 0.3574 - *MESH_VERTEXNORMAL 2 -0.5897 0.4758 0.6526 - *MESH_VERTEXNORMAL 11 -1.0000 -0.0000 -0.0000 - *MESH_VERTEXNORMAL 3 -0.7534 -0.0805 0.6526 - *MESH_FACENORMAL 12 -0.8629 -0.3574 0.3574 - *MESH_VERTEXNORMAL 3 -0.7534 -0.0805 0.6526 - *MESH_VERTEXNORMAL 11 -1.0000 -0.0000 -0.0000 - *MESH_VERTEXNORMAL 12 -0.7071 -0.7071 -0.0000 - *MESH_FACENORMAL 13 -0.8629 -0.3574 0.3574 - *MESH_VERTEXNORMAL 3 -0.7534 -0.0805 0.6526 - *MESH_VERTEXNORMAL 12 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 4 -0.4758 -0.5897 0.6526 - *MESH_FACENORMAL 14 -0.3574 -0.8629 0.3574 - *MESH_VERTEXNORMAL 4 -0.4758 -0.5897 0.6526 - *MESH_VERTEXNORMAL 12 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 13 0.0000 -1.0000 -0.0000 - *MESH_FACENORMAL 15 -0.3574 -0.8629 0.3574 - *MESH_VERTEXNORMAL 4 -0.4758 -0.5897 0.6526 - *MESH_VERTEXNORMAL 13 0.0000 -1.0000 -0.0000 - *MESH_VERTEXNORMAL 5 0.0805 -0.7534 0.6526 - *MESH_FACENORMAL 16 0.3574 -0.8629 0.3574 - *MESH_VERTEXNORMAL 5 0.0805 -0.7534 0.6526 - *MESH_VERTEXNORMAL 13 0.0000 -1.0000 -0.0000 - *MESH_VERTEXNORMAL 14 0.7071 -0.7071 -0.0000 - *MESH_FACENORMAL 17 0.3574 -0.8629 0.3574 - *MESH_VERTEXNORMAL 5 0.0805 -0.7534 0.6526 - *MESH_VERTEXNORMAL 14 0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 6 0.5897 -0.4758 0.6526 - *MESH_FACENORMAL 18 0.8629 -0.3574 0.3574 - *MESH_VERTEXNORMAL 6 0.5897 -0.4758 0.6526 - *MESH_VERTEXNORMAL 14 0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 15 1.0000 -0.0000 -0.0000 - *MESH_FACENORMAL 19 0.8629 -0.3574 0.3574 - *MESH_VERTEXNORMAL 6 0.5897 -0.4758 0.6526 - *MESH_VERTEXNORMAL 15 1.0000 -0.0000 -0.0000 - *MESH_VERTEXNORMAL 7 0.7534 0.0805 0.6526 - *MESH_FACENORMAL 20 0.8629 0.3574 0.3574 - *MESH_VERTEXNORMAL 7 0.7534 0.0805 0.6526 - *MESH_VERTEXNORMAL 15 1.0000 -0.0000 -0.0000 - *MESH_VERTEXNORMAL 16 0.7071 0.7071 -0.0000 - *MESH_FACENORMAL 21 0.8629 0.3574 0.3574 - *MESH_VERTEXNORMAL 7 0.7534 0.0805 0.6526 - *MESH_VERTEXNORMAL 16 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 8 0.4758 0.5897 0.6526 - *MESH_FACENORMAL 22 0.3574 0.8629 0.3574 - *MESH_VERTEXNORMAL 8 0.4758 0.5897 0.6526 - *MESH_VERTEXNORMAL 16 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 9 0.0000 1.0000 -0.0000 - *MESH_FACENORMAL 23 0.3574 0.8629 0.3574 - *MESH_VERTEXNORMAL 8 0.4758 0.5897 0.6526 - *MESH_VERTEXNORMAL 9 0.0000 1.0000 -0.0000 - *MESH_VERTEXNORMAL 1 -0.0805 0.7534 0.6526 - *MESH_FACENORMAL 24 -0.3574 0.8629 -0.3574 - *MESH_VERTEXNORMAL 9 0.0000 1.0000 -0.0000 - *MESH_VERTEXNORMAL 17 0.0805 0.7534 -0.6526 - *MESH_VERTEXNORMAL 18 -0.4758 0.5897 -0.6526 - *MESH_FACENORMAL 25 -0.3574 0.8629 -0.3574 - *MESH_VERTEXNORMAL 9 0.0000 1.0000 -0.0000 - *MESH_VERTEXNORMAL 18 -0.4758 0.5897 -0.6526 - *MESH_VERTEXNORMAL 10 -0.7071 0.7071 0.0000 - *MESH_FACENORMAL 26 -0.8629 0.3574 -0.3574 - *MESH_VERTEXNORMAL 10 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 18 -0.4758 0.5897 -0.6526 - *MESH_VERTEXNORMAL 19 -0.7534 0.0805 -0.6526 - *MESH_FACENORMAL 27 -0.8629 0.3574 -0.3574 - *MESH_VERTEXNORMAL 10 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 19 -0.7534 0.0805 -0.6526 - *MESH_VERTEXNORMAL 11 -1.0000 -0.0000 -0.0000 - *MESH_FACENORMAL 28 -0.8629 -0.3574 -0.3574 - *MESH_VERTEXNORMAL 11 -1.0000 -0.0000 -0.0000 - *MESH_VERTEXNORMAL 19 -0.7534 0.0805 -0.6526 - *MESH_VERTEXNORMAL 20 -0.5897 -0.4758 -0.6526 - *MESH_FACENORMAL 29 -0.8629 -0.3574 -0.3574 - *MESH_VERTEXNORMAL 11 -1.0000 -0.0000 -0.0000 - *MESH_VERTEXNORMAL 20 -0.5897 -0.4758 -0.6526 - *MESH_VERTEXNORMAL 12 -0.7071 -0.7071 -0.0000 - *MESH_FACENORMAL 30 -0.3574 -0.8629 -0.3574 - *MESH_VERTEXNORMAL 12 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 20 -0.5897 -0.4758 -0.6526 - *MESH_VERTEXNORMAL 21 -0.0805 -0.7534 -0.6526 - *MESH_FACENORMAL 31 -0.3574 -0.8629 -0.3574 - *MESH_VERTEXNORMAL 12 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 21 -0.0805 -0.7534 -0.6526 - *MESH_VERTEXNORMAL 13 0.0000 -1.0000 -0.0000 - *MESH_FACENORMAL 32 0.3574 -0.8629 -0.3574 - *MESH_VERTEXNORMAL 13 0.0000 -1.0000 -0.0000 - *MESH_VERTEXNORMAL 21 -0.0805 -0.7534 -0.6526 - *MESH_VERTEXNORMAL 22 0.4758 -0.5897 -0.6526 - *MESH_FACENORMAL 33 0.3574 -0.8629 -0.3574 - *MESH_VERTEXNORMAL 13 0.0000 -1.0000 -0.0000 - *MESH_VERTEXNORMAL 22 0.4758 -0.5897 -0.6526 - *MESH_VERTEXNORMAL 14 0.7071 -0.7071 -0.0000 - *MESH_FACENORMAL 34 0.8629 -0.3574 -0.3574 - *MESH_VERTEXNORMAL 14 0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 22 0.4758 -0.5897 -0.6526 - *MESH_VERTEXNORMAL 23 0.7534 -0.0805 -0.6526 - *MESH_FACENORMAL 35 0.8629 -0.3574 -0.3574 - *MESH_VERTEXNORMAL 14 0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 23 0.7534 -0.0805 -0.6526 - *MESH_VERTEXNORMAL 15 1.0000 -0.0000 -0.0000 - *MESH_FACENORMAL 36 0.8629 0.3574 -0.3574 - *MESH_VERTEXNORMAL 15 1.0000 -0.0000 -0.0000 - *MESH_VERTEXNORMAL 23 0.7534 -0.0805 -0.6526 - *MESH_VERTEXNORMAL 24 0.5897 0.4758 -0.6526 - *MESH_FACENORMAL 37 0.8629 0.3574 -0.3574 - *MESH_VERTEXNORMAL 15 1.0000 -0.0000 -0.0000 - *MESH_VERTEXNORMAL 24 0.5897 0.4758 -0.6526 - *MESH_VERTEXNORMAL 16 0.7071 0.7071 -0.0000 - *MESH_FACENORMAL 38 0.3574 0.8629 -0.3574 - *MESH_VERTEXNORMAL 16 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 24 0.5897 0.4758 -0.6526 - *MESH_VERTEXNORMAL 17 0.0805 0.7534 -0.6526 - *MESH_FACENORMAL 39 0.3574 0.8629 -0.3574 - *MESH_VERTEXNORMAL 16 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 17 0.0805 0.7534 -0.6526 - *MESH_VERTEXNORMAL 9 0.0000 1.0000 -0.0000 - *MESH_FACENORMAL 40 -0.1566 0.3780 -0.9125 - *MESH_VERTEXNORMAL 25 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 18 -0.4758 0.5897 -0.6526 - *MESH_VERTEXNORMAL 17 0.0805 0.7534 -0.6526 - *MESH_FACENORMAL 41 -0.3780 0.1566 -0.9125 - *MESH_VERTEXNORMAL 25 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 19 -0.7534 0.0805 -0.6526 - *MESH_VERTEXNORMAL 18 -0.4758 0.5897 -0.6526 - *MESH_FACENORMAL 42 -0.3780 -0.1566 -0.9125 - *MESH_VERTEXNORMAL 25 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 20 -0.5897 -0.4758 -0.6526 - *MESH_VERTEXNORMAL 19 -0.7534 0.0805 -0.6526 - *MESH_FACENORMAL 43 -0.1566 -0.3780 -0.9125 - *MESH_VERTEXNORMAL 25 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 21 -0.0805 -0.7534 -0.6526 - *MESH_VERTEXNORMAL 20 -0.5897 -0.4758 -0.6526 - *MESH_FACENORMAL 44 0.1566 -0.3780 -0.9125 - *MESH_VERTEXNORMAL 25 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 22 0.4758 -0.5897 -0.6526 - *MESH_VERTEXNORMAL 21 -0.0805 -0.7534 -0.6526 - *MESH_FACENORMAL 45 0.3780 -0.1566 -0.9125 - *MESH_VERTEXNORMAL 25 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 23 0.7534 -0.0805 -0.6526 - *MESH_VERTEXNORMAL 22 0.4758 -0.5897 -0.6526 - *MESH_FACENORMAL 46 0.3780 0.1566 -0.9125 - *MESH_VERTEXNORMAL 25 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 24 0.5897 0.4758 -0.6526 - *MESH_VERTEXNORMAL 23 0.7534 -0.0805 -0.6526 - *MESH_FACENORMAL 47 0.1566 0.3780 -0.9125 - *MESH_VERTEXNORMAL 25 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 17 0.0805 0.7534 -0.6526 - *MESH_VERTEXNORMAL 24 0.5897 0.4758 -0.6526 - } - } - *PROP_MOTIONBLUR 0 - *PROP_CASTSHADOW 1 - *PROP_RECVSHADOW 1 - *MATERIAL_REF 0 -} diff --git a/third_party/gfootball_engine/data/media/objects/helpers/green.ase b/third_party/gfootball_engine/data/media/objects/helpers/green.ase deleted file mode 100755 index 19630f55..00000000 --- a/third_party/gfootball_engine/data/media/objects/helpers/green.ase +++ /dev/null @@ -1,804 +0,0 @@ -*3DSMAX_ASCIIEXPORT 200 -*COMMENT "AsciiExport Version 2.00 - Wed Aug 11 02:14:28 2010" -*SCENE { - *SCENE_FILENAME "pilon.max" - *SCENE_FIRSTFRAME 0 - *SCENE_LASTFRAME 100 - *SCENE_FRAMESPEED 30 - *SCENE_TICKSPERFRAME 160 - *SCENE_BACKGROUND_STATIC 0.0000 0.0000 0.0000 - *SCENE_AMBIENT_STATIC 0.0000 0.0000 0.0000 -} -*MATERIAL_LIST { - *MATERIAL_COUNT 2 - *MATERIAL 0 { - *MATERIAL_NAME "01 - Default" - *MATERIAL_CLASS "Standard" - *MATERIAL_AMBIENT 0.5882 0.5882 0.5882 - *MATERIAL_DIFFUSE 0.5882 0.5882 0.5882 - *MATERIAL_SPECULAR 0.9000 0.9000 0.9000 - *MATERIAL_SHINE 0.1000 - *MATERIAL_SHINESTRENGTH 0.0000 - *MATERIAL_TRANSPARENCY 0.0000 - *MATERIAL_WIRESIZE 1.0000 - *MATERIAL_SHADING Blinn - *MATERIAL_XP_FALLOFF 0.0000 - *MATERIAL_SELFILLUM 0.6000 - *MATERIAL_FALLOFF In - *MATERIAL_XP_TYPE Filter - *MAP_DIFFUSE { - *MAP_NAME "Map #1" - *MAP_CLASS "Bitmap" - *MAP_SUBNO 1 - *MAP_AMOUNT 1.0000 - *BITMAP "media/objects/helpers/green.png" - *MAP_TYPE Screen - *UVW_U_OFFSET 0.0000 - *UVW_V_OFFSET 0.0000 - *UVW_U_TILING 1.0000 - *UVW_V_TILING 1.0000 - *UVW_ANGLE 0.0000 - *UVW_BLUR 1.0000 - *UVW_BLUR_OFFSET 0.0000 - *UVW_NOUSE_AMT 1.0000 - *UVW_NOISE_SIZE 1.0000 - *UVW_NOISE_LEVEL 1 - *UVW_NOISE_PHASE 0.0000 - *BITMAP_FILTER Pyramidal - } - } - *MATERIAL 1 { - *MATERIAL_NAME "white" - *MATERIAL_CLASS "Standard" - *MATERIAL_AMBIENT 0.5882 0.5882 0.5882 - *MATERIAL_DIFFUSE 0.5882 0.5882 0.5882 - *MATERIAL_SPECULAR 0.9000 0.9000 0.9000 - *MATERIAL_SHINE 0.2200 - *MATERIAL_SHINESTRENGTH 0.6300 - *MATERIAL_TRANSPARENCY 0.0000 - *MATERIAL_WIRESIZE 1.0000 - *MATERIAL_SHADING Blinn - *MATERIAL_XP_FALLOFF 0.0000 - *MATERIAL_SELFILLUM 0.6000 - *MATERIAL_FALLOFF In - *MATERIAL_XP_TYPE Filter - *MAP_DIFFUSE { - *MAP_NAME "Map #2" - *MAP_CLASS "Bitmap" - *MAP_SUBNO 1 - *MAP_AMOUNT 1.0000 - *BITMAP "media/textures/white.png" - *MAP_TYPE Screen - *UVW_U_OFFSET 0.0000 - *UVW_V_OFFSET 0.0000 - *UVW_U_TILING 1.0000 - *UVW_V_TILING 1.0000 - *UVW_ANGLE 0.0000 - *UVW_BLUR 1.0000 - *UVW_BLUR_OFFSET 0.0000 - *UVW_NOUSE_AMT 1.0000 - *UVW_NOISE_SIZE 1.0000 - *UVW_NOISE_LEVEL 1 - *UVW_NOISE_PHASE 0.0000 - *BITMAP_FILTER Pyramidal - } - } -} -*GEOMOBJECT { - *NODE_NAME "Cone01" - *NODE_TM { - *NODE_NAME "Cone01" - *INHERIT_POS 0 0 0 - *INHERIT_ROT 0 0 0 - *INHERIT_SCL 0 0 0 - *TM_ROW0 1.0000 0.0000 0.0000 - *TM_ROW1 0.0000 1.0000 0.0000 - *TM_ROW2 0.0000 0.0000 1.0000 - *TM_ROW3 0.0000 0.0000 0.0000 - *TM_POS 0.0000 0.0000 0.0000 - *TM_ROTAXIS 0.0000 0.0000 0.0000 - *TM_ROTANGLE 0.0000 - *TM_SCALE 1.0000 1.0000 1.0000 - *TM_SCALEAXIS 0.0000 0.0000 0.0000 - *TM_SCALEAXISANG 0.0000 - } - *MESH { - *TIMEVALUE 0 - *MESH_NUMVERTEX 34 - *MESH_NUMFACES 64 - *MESH_VERTEX_LIST { - *MESH_VERTEX 0 0.0000 0.0000 0.0000 - *MESH_VERTEX 1 0.1000 0.0000 0.0000 - *MESH_VERTEX 2 0.0924 0.0383 0.0000 - *MESH_VERTEX 3 0.0707 0.0707 0.0000 - *MESH_VERTEX 4 0.0383 0.0924 0.0000 - *MESH_VERTEX 5 -0.0000 0.1000 0.0000 - *MESH_VERTEX 6 -0.0383 0.0924 0.0000 - *MESH_VERTEX 7 -0.0707 0.0707 0.0000 - *MESH_VERTEX 8 -0.0924 0.0383 0.0000 - *MESH_VERTEX 9 -0.1000 0.0000 0.0000 - *MESH_VERTEX 10 -0.0924 -0.0383 0.0000 - *MESH_VERTEX 11 -0.0707 -0.0707 0.0000 - *MESH_VERTEX 12 -0.0383 -0.0924 0.0000 - *MESH_VERTEX 13 0.0000 -0.1000 0.0000 - *MESH_VERTEX 14 0.0383 -0.0924 0.0000 - *MESH_VERTEX 15 0.0707 -0.0707 0.0000 - *MESH_VERTEX 16 0.0924 -0.0383 0.0000 - *MESH_VERTEX 17 0.0000 0.0000 0.2000 - *MESH_VERTEX 18 0.0000 0.0000 0.2000 - *MESH_VERTEX 19 0.0000 0.0000 0.2000 - *MESH_VERTEX 20 0.0000 0.0000 0.2000 - *MESH_VERTEX 21 0.0000 0.0000 0.2000 - *MESH_VERTEX 22 0.0000 0.0000 0.2000 - *MESH_VERTEX 23 0.0000 0.0000 0.2000 - *MESH_VERTEX 24 0.0000 0.0000 0.2000 - *MESH_VERTEX 25 0.0000 0.0000 0.2000 - *MESH_VERTEX 26 0.0000 0.0000 0.2000 - *MESH_VERTEX 27 0.0000 0.0000 0.2000 - *MESH_VERTEX 28 0.0000 0.0000 0.2000 - *MESH_VERTEX 29 0.0000 0.0000 0.2000 - *MESH_VERTEX 30 0.0000 0.0000 0.2000 - *MESH_VERTEX 31 0.0000 0.0000 0.2000 - *MESH_VERTEX 32 0.0000 0.0000 0.2000 - *MESH_VERTEX 33 0.0000 0.0000 0.2000 - } - *MESH_FACE_LIST { - *MESH_FACE 0: A: 0 B: 2 C: 1 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 1: A: 0 B: 3 C: 2 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 2: A: 0 B: 4 C: 3 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 3: A: 0 B: 5 C: 4 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 4: A: 0 B: 6 C: 5 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 5: A: 0 B: 7 C: 6 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 6: A: 0 B: 8 C: 7 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 7: A: 0 B: 9 C: 8 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 8: A: 0 B: 10 C: 9 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 9: A: 0 B: 11 C: 10 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 10: A: 0 B: 12 C: 11 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 11: A: 0 B: 13 C: 12 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 12: A: 0 B: 14 C: 13 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 13: A: 0 B: 15 C: 14 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 14: A: 0 B: 16 C: 15 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 15: A: 0 B: 1 C: 16 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 16: A: 1 B: 18 C: 17 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 17: A: 1 B: 2 C: 18 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 18: A: 2 B: 19 C: 18 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 19: A: 2 B: 3 C: 19 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 20: A: 3 B: 20 C: 19 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 21: A: 3 B: 4 C: 20 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 22: A: 4 B: 21 C: 20 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 23: A: 4 B: 5 C: 21 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 24: A: 5 B: 22 C: 21 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 25: A: 5 B: 6 C: 22 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 26: A: 6 B: 23 C: 22 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 27: A: 6 B: 7 C: 23 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 28: A: 7 B: 24 C: 23 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 29: A: 7 B: 8 C: 24 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 30: A: 8 B: 25 C: 24 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 31: A: 8 B: 9 C: 25 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 32: A: 9 B: 26 C: 25 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 33: A: 9 B: 10 C: 26 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 34: A: 10 B: 27 C: 26 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 35: A: 10 B: 11 C: 27 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 36: A: 11 B: 28 C: 27 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 37: A: 11 B: 12 C: 28 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 38: A: 12 B: 29 C: 28 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 39: A: 12 B: 13 C: 29 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 40: A: 13 B: 30 C: 29 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 41: A: 13 B: 14 C: 30 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 42: A: 14 B: 31 C: 30 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 43: A: 14 B: 15 C: 31 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 44: A: 15 B: 32 C: 31 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 45: A: 15 B: 16 C: 32 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 46: A: 16 B: 17 C: 32 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 47: A: 16 B: 1 C: 17 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 48: A: 33 B: 17 C: 18 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 49: A: 33 B: 18 C: 19 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 50: A: 33 B: 19 C: 20 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 51: A: 33 B: 20 C: 21 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 52: A: 33 B: 21 C: 22 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 53: A: 33 B: 22 C: 23 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 54: A: 33 B: 23 C: 24 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 55: A: 33 B: 24 C: 25 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 56: A: 33 B: 25 C: 26 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 57: A: 33 B: 26 C: 27 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 58: A: 33 B: 27 C: 28 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 59: A: 33 B: 28 C: 29 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 60: A: 33 B: 29 C: 30 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 61: A: 33 B: 30 C: 31 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 62: A: 33 B: 31 C: 32 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 63: A: 33 B: 32 C: 17 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - } - *MESH_NUMTVERTEX 36 - *MESH_TVERTLIST { - *MESH_TVERT 0 0.5000 0.0000 0.0000 - *MESH_TVERT 1 0.7500 0.0000 1.0000 - *MESH_TVERT 2 0.8125 0.0000 1.0000 - *MESH_TVERT 3 0.8750 0.0000 1.0000 - *MESH_TVERT 4 0.9375 0.0000 1.0000 - *MESH_TVERT 5 0.0000 0.0000 1.0000 - *MESH_TVERT 6 0.0625 0.0000 1.0000 - *MESH_TVERT 7 0.1250 0.0000 1.0000 - *MESH_TVERT 8 0.1875 0.0000 1.0000 - *MESH_TVERT 9 0.2500 0.0000 1.0000 - *MESH_TVERT 10 0.3125 0.0000 1.0000 - *MESH_TVERT 11 0.3750 0.0000 1.0000 - *MESH_TVERT 12 0.4375 0.0000 1.0000 - *MESH_TVERT 13 0.5000 0.0000 1.0000 - *MESH_TVERT 14 0.5625 0.0000 1.0000 - *MESH_TVERT 15 0.6250 0.0000 1.0000 - *MESH_TVERT 16 0.6875 0.0000 1.0000 - *MESH_TVERT 17 0.5000 1.0000 0.0000 - *MESH_TVERT 18 0.5000 1.0000 0.0000 - *MESH_TVERT 19 0.5000 1.0000 0.0000 - *MESH_TVERT 20 0.5000 1.0000 0.0000 - *MESH_TVERT 21 0.5000 1.0000 0.0000 - *MESH_TVERT 22 0.5000 1.0000 0.0000 - *MESH_TVERT 23 0.5000 1.0000 0.0000 - *MESH_TVERT 24 0.5000 1.0000 0.0000 - *MESH_TVERT 25 0.5000 1.0000 0.0000 - *MESH_TVERT 26 0.5000 1.0000 0.0000 - *MESH_TVERT 27 0.5000 1.0000 0.0000 - *MESH_TVERT 28 0.5000 1.0000 0.0000 - *MESH_TVERT 29 0.5000 1.0000 0.0000 - *MESH_TVERT 30 0.5000 1.0000 0.0000 - *MESH_TVERT 31 0.5000 1.0000 0.0000 - *MESH_TVERT 32 0.5000 1.0000 0.0000 - *MESH_TVERT 33 0.5000 1.0000 0.0000 - *MESH_TVERT 34 -0.0625 0.0000 1.0000 - *MESH_TVERT 35 -0.0625 0.0000 1.0000 - } - *MESH_NUMTVFACES 64 - *MESH_TFACELIST { - *MESH_TFACE 0 0 2 1 - *MESH_TFACE 1 0 3 2 - *MESH_TFACE 2 0 4 3 - *MESH_TFACE 3 0 5 34 - *MESH_TFACE 4 0 6 5 - *MESH_TFACE 5 0 7 6 - *MESH_TFACE 6 0 8 7 - *MESH_TFACE 7 0 9 8 - *MESH_TFACE 8 0 10 9 - *MESH_TFACE 9 0 11 10 - *MESH_TFACE 10 0 12 11 - *MESH_TFACE 11 0 13 12 - *MESH_TFACE 12 0 14 13 - *MESH_TFACE 13 0 15 14 - *MESH_TFACE 14 0 16 15 - *MESH_TFACE 15 0 1 16 - *MESH_TFACE 16 1 18 17 - *MESH_TFACE 17 1 2 18 - *MESH_TFACE 18 2 19 18 - *MESH_TFACE 19 2 3 19 - *MESH_TFACE 20 3 20 19 - *MESH_TFACE 21 3 4 20 - *MESH_TFACE 22 4 21 20 - *MESH_TFACE 23 35 5 21 - *MESH_TFACE 24 5 22 21 - *MESH_TFACE 25 5 6 22 - *MESH_TFACE 26 6 23 22 - *MESH_TFACE 27 6 7 23 - *MESH_TFACE 28 7 24 23 - *MESH_TFACE 29 7 8 24 - *MESH_TFACE 30 8 25 24 - *MESH_TFACE 31 8 9 25 - *MESH_TFACE 32 9 26 25 - *MESH_TFACE 33 9 10 26 - *MESH_TFACE 34 10 27 26 - *MESH_TFACE 35 10 11 27 - *MESH_TFACE 36 11 28 27 - *MESH_TFACE 37 11 12 28 - *MESH_TFACE 38 12 29 28 - *MESH_TFACE 39 12 13 29 - *MESH_TFACE 40 13 30 29 - *MESH_TFACE 41 13 14 30 - *MESH_TFACE 42 14 31 30 - *MESH_TFACE 43 14 15 31 - *MESH_TFACE 44 15 32 31 - *MESH_TFACE 45 15 16 32 - *MESH_TFACE 46 16 17 32 - *MESH_TFACE 47 16 1 17 - *MESH_TFACE 48 33 17 18 - *MESH_TFACE 49 33 18 19 - *MESH_TFACE 50 33 19 20 - *MESH_TFACE 51 33 20 21 - *MESH_TFACE 52 33 21 22 - *MESH_TFACE 53 33 22 23 - *MESH_TFACE 54 33 23 24 - *MESH_TFACE 55 33 24 25 - *MESH_TFACE 56 33 25 26 - *MESH_TFACE 57 33 26 27 - *MESH_TFACE 58 33 27 28 - *MESH_TFACE 59 33 28 29 - *MESH_TFACE 60 33 29 30 - *MESH_TFACE 61 33 30 31 - *MESH_TFACE 62 33 31 32 - *MESH_TFACE 63 33 32 17 - } - *MESH_NORMALS { - *MESH_FACENORMAL 0 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 1 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 3 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 2 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 3 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 3 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 4 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 5 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 9 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 10 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 12 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 11 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 13 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 12 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 12 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 14 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 13 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 13 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 15 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 14 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 14 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 16 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 15 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 15 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 16 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 16 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 1 0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 18 0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 17 0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 17 0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 1 0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 2 0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 18 0.8806 0.1752 0.4403 - *MESH_FACENORMAL 18 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 2 0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 19 0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 18 0.8806 0.1752 0.4403 - *MESH_FACENORMAL 19 0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 2 0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 3 0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 19 0.7465 0.4988 0.4403 - *MESH_FACENORMAL 20 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 3 0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 20 0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 19 0.7465 0.4988 0.4403 - *MESH_FACENORMAL 21 0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 3 0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 4 0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 20 0.4988 0.7465 0.4403 - *MESH_FACENORMAL 22 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 4 0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 21 0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 20 0.4988 0.7465 0.4403 - *MESH_FACENORMAL 23 0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 4 0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 5 0.0000 0.8944 0.4472 - *MESH_VERTEXNORMAL 21 0.1752 0.8806 0.4403 - *MESH_FACENORMAL 24 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.8944 0.4472 - *MESH_VERTEXNORMAL 22 -0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 21 0.1752 0.8806 0.4403 - *MESH_FACENORMAL 25 -0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 5 0.0000 0.8944 0.4472 - *MESH_VERTEXNORMAL 6 -0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 22 -0.1752 0.8806 0.4403 - *MESH_FACENORMAL 26 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 6 -0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 23 -0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 22 -0.1752 0.8806 0.4403 - *MESH_FACENORMAL 27 -0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 6 -0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 7 -0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 23 -0.4988 0.7465 0.4403 - *MESH_FACENORMAL 28 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 7 -0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 24 -0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 23 -0.4988 0.7465 0.4403 - *MESH_FACENORMAL 29 -0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 7 -0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 8 -0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 24 -0.7465 0.4988 0.4403 - *MESH_FACENORMAL 30 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 8 -0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 25 -0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 24 -0.7465 0.4988 0.4403 - *MESH_FACENORMAL 31 -0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 8 -0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 9 -0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 25 -0.8806 0.1752 0.4403 - *MESH_FACENORMAL 32 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 9 -0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 26 -0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 25 -0.8806 0.1752 0.4403 - *MESH_FACENORMAL 33 -0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 9 -0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 10 -0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 26 -0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 34 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 10 -0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 27 -0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 26 -0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 35 -0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 10 -0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 11 -0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 27 -0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 36 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 11 -0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 28 -0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 27 -0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 37 -0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 11 -0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 12 -0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 28 -0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 38 0.0000 -0.0000 0.0000 - *MESH_VERTEXNORMAL 12 -0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 29 -0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 28 -0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 39 -0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 12 -0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 13 0.0000 -0.8944 0.4472 - *MESH_VERTEXNORMAL 29 -0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 40 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 13 0.0000 -0.8944 0.4472 - *MESH_VERTEXNORMAL 30 0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 29 -0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 41 0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 13 0.0000 -0.8944 0.4472 - *MESH_VERTEXNORMAL 14 0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 30 0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 42 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 14 0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 31 0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 30 0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 43 0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 14 0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 15 0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 31 0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 44 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 15 0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 32 0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 31 0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 45 0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 15 0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 16 0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 32 0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 46 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 16 0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 17 0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 32 0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 47 0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 16 0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 1 0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 17 0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 48 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 17 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 18 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 49 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 18 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 19 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 50 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 19 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 20 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 51 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 20 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 21 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 52 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 21 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 22 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 53 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 22 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 23 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 54 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 23 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 24 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 55 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 24 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 25 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 56 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 25 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 26 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 57 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 26 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 27 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 58 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 27 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 28 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 59 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 28 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 29 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 60 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 29 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 30 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 61 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 30 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 31 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 62 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 31 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 32 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 63 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 32 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 17 1.0000 0.0000 0.0000 - } - } - *PROP_MOTIONBLUR 0 - *PROP_CASTSHADOW 1 - *PROP_RECVSHADOW 1 - *MATERIAL_REF 0 -} -*GEOMOBJECT { - *NODE_NAME "Line01" - *NODE_TM { - *NODE_NAME "Line01" - *INHERIT_POS 0 0 0 - *INHERIT_ROT 0 0 0 - *INHERIT_SCL 0 0 0 - *TM_ROW0 1.0000 0.0000 0.0000 - *TM_ROW1 0.0000 -0.0000 1.0000 - *TM_ROW2 0.0000 -1.0000 -0.0000 - *TM_ROW3 0.0000 0.0100 0.0667 - *TM_POS 0.0000 0.0100 0.0667 - *TM_ROTAXIS -1.0000 -0.0000 -0.0000 - *TM_ROTANGLE 1.5708 - *TM_SCALE 1.0000 1.0000 1.0000 - *TM_SCALEAXIS 0.0000 0.0000 0.0000 - *TM_SCALEAXISANG 0.0000 - } - *MESH { - *TIMEVALUE 0 - *MESH_NUMVERTEX 12 - *MESH_NUMFACES 24 - *MESH_VERTEX_LIST { - *MESH_VERTEX 0 -0.1000 0.0100 0.0000 - *MESH_VERTEX 1 0.0000 0.0100 0.2000 - *MESH_VERTEX 2 0.1000 0.0100 0.0000 - *MESH_VERTEX 3 -0.1000 -0.0100 0.0000 - *MESH_VERTEX 4 0.0000 -0.0100 0.2000 - *MESH_VERTEX 5 0.1000 -0.0100 0.0000 - *MESH_VERTEX 6 -0.1447 0.0100 -0.0292 - *MESH_VERTEX 7 0.1447 0.0100 -0.0292 - *MESH_VERTEX 8 0.0000 0.0100 0.2603 - *MESH_VERTEX 9 -0.1447 -0.0100 -0.0292 - *MESH_VERTEX 10 0.1447 -0.0100 -0.0292 - *MESH_VERTEX 11 0.0000 -0.0100 0.2603 - } - *MESH_FACE_LIST { - *MESH_FACE 0: A: 0 B: 1 C: 4 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 1: A: 0 B: 4 C: 3 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 2: A: 1 B: 2 C: 5 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 3: A: 1 B: 5 C: 4 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 4: A: 2 B: 0 C: 3 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 5: A: 2 B: 3 C: 5 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 6: A: 6 B: 7 C: 10 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 7: A: 6 B: 10 C: 9 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 8: A: 7 B: 8 C: 11 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 9: A: 7 B: 11 C: 10 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 10: A: 8 B: 6 C: 9 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 11: A: 8 B: 9 C: 11 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 12: A: 8 B: 0 C: 6 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 13: A: 8 B: 1 C: 0 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 14: A: 7 B: 1 C: 8 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 15: A: 7 B: 2 C: 1 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 16: A: 6 B: 2 C: 7 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 17: A: 6 B: 0 C: 2 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 18: A: 11 B: 9 C: 3 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 19: A: 11 B: 3 C: 4 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 20: A: 10 B: 11 C: 4 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 21: A: 10 B: 4 C: 5 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 22: A: 9 B: 10 C: 5 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 23: A: 9 B: 5 C: 3 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - } - *MESH_NUMTVERTEX 28 - *MESH_TVERTLIST { - *MESH_TVERT 0 0.0000 0.0000 0.0000 - *MESH_TVERT 1 0.3455 0.0000 0.0000 - *MESH_TVERT 2 0.6910 0.0000 0.0000 - *MESH_TVERT 3 1.0000 0.0000 0.0000 - *MESH_TVERT 4 0.0000 1.0000 0.0000 - *MESH_TVERT 5 0.3455 1.0000 0.0000 - *MESH_TVERT 6 0.6910 1.0000 0.0000 - *MESH_TVERT 7 1.0000 1.0000 0.0000 - *MESH_TVERT 8 0.0000 0.0000 0.0000 - *MESH_TVERT 9 0.3090 0.0000 0.0000 - *MESH_TVERT 10 0.6545 0.0000 0.0000 - *MESH_TVERT 11 1.0000 0.0000 0.0000 - *MESH_TVERT 12 0.0000 1.0000 0.0000 - *MESH_TVERT 13 0.3090 1.0000 0.0000 - *MESH_TVERT 14 0.6545 1.0000 0.0000 - *MESH_TVERT 15 1.0000 1.0000 0.0000 - *MESH_TVERT 16 0.1545 0.1007 0.0000 - *MESH_TVERT 17 0.5000 0.7918 0.0000 - *MESH_TVERT 18 0.8455 0.1007 0.0000 - *MESH_TVERT 19 0.0000 0.0000 0.0000 - *MESH_TVERT 20 1.0000 0.0000 0.0000 - *MESH_TVERT 21 0.5000 1.0000 0.0000 - *MESH_TVERT 22 0.1545 0.1007 0.0000 - *MESH_TVERT 23 0.5000 0.7918 0.0000 - *MESH_TVERT 24 0.8455 0.1007 0.0000 - *MESH_TVERT 25 0.0000 0.0000 0.0000 - *MESH_TVERT 26 1.0000 0.0000 0.0000 - *MESH_TVERT 27 0.5000 1.0000 0.0000 - } - *MESH_NUMTVFACES 24 - *MESH_TFACELIST { - *MESH_TFACE 0 0 1 5 - *MESH_TFACE 1 0 5 4 - *MESH_TFACE 2 1 2 6 - *MESH_TFACE 3 1 6 5 - *MESH_TFACE 4 2 3 7 - *MESH_TFACE 5 2 7 6 - *MESH_TFACE 6 8 9 13 - *MESH_TFACE 7 8 13 12 - *MESH_TFACE 8 9 10 14 - *MESH_TFACE 9 9 14 13 - *MESH_TFACE 10 10 11 15 - *MESH_TFACE 11 10 15 14 - *MESH_TFACE 12 21 16 19 - *MESH_TFACE 13 21 17 16 - *MESH_TFACE 14 20 17 21 - *MESH_TFACE 15 20 18 17 - *MESH_TFACE 16 19 18 20 - *MESH_TFACE 17 19 16 18 - *MESH_TFACE 18 27 25 22 - *MESH_TFACE 19 27 22 23 - *MESH_TFACE 20 26 27 23 - *MESH_TFACE 21 26 23 24 - *MESH_TFACE 22 25 26 24 - *MESH_TFACE 23 25 24 22 - } - *MESH_NORMALS { - *MESH_FACENORMAL 0 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 0 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 1 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 4 0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 1 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 0 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 4 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 3 0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 2 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 1 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 2 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 5 -0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 3 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 1 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 5 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 4 -0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 4 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 2 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 0 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 3 0.0000 1.0000 0.0000 - *MESH_FACENORMAL 5 -0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 2 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 3 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 5 -0.0000 1.0000 0.0000 - *MESH_FACENORMAL 6 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 6 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 7 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 10 0.0000 -1.0000 0.0000 - *MESH_FACENORMAL 7 -0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 6 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 10 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 9 -0.0000 -1.0000 0.0000 - *MESH_FACENORMAL 8 0.8944 0.4472 -0.0000 - *MESH_VERTEXNORMAL 7 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 8 0.8944 0.4472 -0.0000 - *MESH_VERTEXNORMAL 11 0.8944 0.4472 0.0000 - *MESH_FACENORMAL 9 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 7 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 11 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 10 0.8944 0.4472 0.0000 - *MESH_FACENORMAL 10 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 8 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 6 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 9 -0.8944 0.4472 0.0000 - *MESH_FACENORMAL 11 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 8 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 9 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 11 -0.8944 0.4472 0.0000 - *MESH_FACENORMAL 12 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 13 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 14 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 15 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 16 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 17 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 18 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 19 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 20 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 21 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 22 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 23 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 - } - } - *PROP_MOTIONBLUR 0 - *PROP_CASTSHADOW 1 - *PROP_RECVSHADOW 1 - *MATERIAL_REF 1 -} diff --git a/third_party/gfootball_engine/data/media/objects/helpers/green.bmp b/third_party/gfootball_engine/data/media/objects/helpers/green.bmp deleted file mode 100644 index 520c5e0a..00000000 Binary files a/third_party/gfootball_engine/data/media/objects/helpers/green.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/objects/helpers/largedebugcircle.ase b/third_party/gfootball_engine/data/media/objects/helpers/largedebugcircle.ase deleted file mode 100755 index bb4def5e..00000000 --- a/third_party/gfootball_engine/data/media/objects/helpers/largedebugcircle.ase +++ /dev/null @@ -1,762 +0,0 @@ -*3DSMAX_ASCIIEXPORT 200 -*COMMENT "AsciiExport Version 2.00 - Mon Jun 20 17:34:40 2011" -*SCENE { - *SCENE_FILENAME "largedebugcircle.max" - *SCENE_FIRSTFRAME 0 - *SCENE_LASTFRAME 100 - *SCENE_FRAMESPEED 30 - *SCENE_TICKSPERFRAME 160 - *SCENE_BACKGROUND_STATIC 0.0000 0.0000 0.0000 - *SCENE_AMBIENT_STATIC 0.0000 0.0000 0.0000 -} -*MATERIAL_LIST { - *MATERIAL_COUNT 1 - *MATERIAL 0 { - *MATERIAL_NAME "01 - Default" - *MATERIAL_CLASS "Standard" - *MATERIAL_AMBIENT 0.5882 0.5882 0.5882 - *MATERIAL_DIFFUSE 0.5882 0.5882 0.5882 - *MATERIAL_SPECULAR 0.9000 0.9000 0.9000 - *MATERIAL_SHINE 0.1000 - *MATERIAL_SHINESTRENGTH 0.0000 - *MATERIAL_TRANSPARENCY 0.0000 - *MATERIAL_WIRESIZE 1.0000 - *MATERIAL_SHADING Blinn - *MATERIAL_XP_FALLOFF 0.0000 - *MATERIAL_SELFILLUM 0.0000 - *MATERIAL_FALLOFF In - *MATERIAL_XP_TYPE Filter - *MAP_DIFFUSE { - *MAP_NAME "Map #1" - *MAP_CLASS "Bitmap" - *MAP_SUBNO 1 - *MAP_AMOUNT 1.0000 - *BITMAP "media/objects/helpers/yellow.png" - *MAP_TYPE Screen - *UVW_U_OFFSET 0.0000 - *UVW_V_OFFSET 0.0000 - *UVW_U_TILING 1.0000 - *UVW_V_TILING 1.0000 - *UVW_ANGLE 0.0000 - *UVW_BLUR 1.0000 - *UVW_BLUR_OFFSET 0.0000 - *UVW_NOUSE_AMT 1.0000 - *UVW_NOISE_SIZE 1.0000 - *UVW_NOISE_LEVEL 1 - *UVW_NOISE_PHASE 0.0000 - *BITMAP_FILTER Pyramidal - } - } -} -*GEOMOBJECT { - *NODE_NAME "Torus01" - *NODE_TM { - *NODE_NAME "Torus01" - *INHERIT_POS 0 0 0 - *INHERIT_ROT 0 0 0 - *INHERIT_SCL 0 0 0 - *TM_ROW0 1.0000 0.0000 0.0000 - *TM_ROW1 0.0000 1.0000 0.0000 - *TM_ROW2 0.0000 0.0000 1.0000 - *TM_ROW3 0.0000 0.0000 0.0000 - *TM_POS 0.0000 0.0000 0.0000 - *TM_ROTAXIS 0.0000 0.0000 0.0000 - *TM_ROTANGLE 0.0000 - *TM_SCALE 1.0000 1.0000 1.0000 - *TM_SCALEAXIS 0.0000 0.0000 0.0000 - *TM_SCALEAXISANG 0.0000 - } - *MESH { - *TIMEVALUE 0 - *MESH_NUMVERTEX 48 - *MESH_NUMFACES 96 - *MESH_VERTEX_LIST { - *MESH_VERTEX 0 -0.0000 1.5707 0.0707 - *MESH_VERTEX 1 -0.0000 1.4293 0.0707 - *MESH_VERTEX 2 -0.0000 1.4293 -0.0707 - *MESH_VERTEX 3 -0.0000 1.5707 -0.0707 - *MESH_VERTEX 4 0.7854 1.3603 0.0707 - *MESH_VERTEX 5 0.7146 1.2378 0.0707 - *MESH_VERTEX 6 0.7146 1.2378 -0.0707 - *MESH_VERTEX 7 0.7854 1.3603 -0.0707 - *MESH_VERTEX 8 1.3603 0.7854 0.0707 - *MESH_VERTEX 9 1.2378 0.7146 0.0707 - *MESH_VERTEX 10 1.2378 0.7146 -0.0707 - *MESH_VERTEX 11 1.3603 0.7854 -0.0707 - *MESH_VERTEX 12 1.5707 0.0000 0.0707 - *MESH_VERTEX 13 1.4293 0.0000 0.0707 - *MESH_VERTEX 14 1.4293 0.0000 -0.0707 - *MESH_VERTEX 15 1.5707 0.0000 -0.0707 - *MESH_VERTEX 16 1.3603 -0.7854 0.0707 - *MESH_VERTEX 17 1.2378 -0.7146 0.0707 - *MESH_VERTEX 18 1.2378 -0.7146 -0.0707 - *MESH_VERTEX 19 1.3603 -0.7854 -0.0707 - *MESH_VERTEX 20 0.7854 -1.3603 0.0707 - *MESH_VERTEX 21 0.7146 -1.2378 0.0707 - *MESH_VERTEX 22 0.7146 -1.2378 -0.0707 - *MESH_VERTEX 23 0.7854 -1.3603 -0.0707 - *MESH_VERTEX 24 -0.0000 -1.5707 0.0707 - *MESH_VERTEX 25 -0.0000 -1.4293 0.0707 - *MESH_VERTEX 26 -0.0000 -1.4293 -0.0707 - *MESH_VERTEX 27 -0.0000 -1.5707 -0.0707 - *MESH_VERTEX 28 -0.7854 -1.3603 0.0707 - *MESH_VERTEX 29 -0.7146 -1.2378 0.0707 - *MESH_VERTEX 30 -0.7146 -1.2378 -0.0707 - *MESH_VERTEX 31 -0.7854 -1.3603 -0.0707 - *MESH_VERTEX 32 -1.3603 -0.7854 0.0707 - *MESH_VERTEX 33 -1.2378 -0.7146 0.0707 - *MESH_VERTEX 34 -1.2378 -0.7146 -0.0707 - *MESH_VERTEX 35 -1.3603 -0.7854 -0.0707 - *MESH_VERTEX 36 -1.5707 -0.0000 0.0707 - *MESH_VERTEX 37 -1.4293 -0.0000 0.0707 - *MESH_VERTEX 38 -1.4293 -0.0000 -0.0707 - *MESH_VERTEX 39 -1.5707 -0.0000 -0.0707 - *MESH_VERTEX 40 -1.3603 0.7854 0.0707 - *MESH_VERTEX 41 -1.2378 0.7146 0.0707 - *MESH_VERTEX 42 -1.2378 0.7146 -0.0707 - *MESH_VERTEX 43 -1.3603 0.7854 -0.0707 - *MESH_VERTEX 44 -0.7854 1.3603 0.0707 - *MESH_VERTEX 45 -0.7146 1.2378 0.0707 - *MESH_VERTEX 46 -0.7146 1.2378 -0.0707 - *MESH_VERTEX 47 -0.7854 1.3603 -0.0707 - } - *MESH_FACE_LIST { - *MESH_FACE 0: A: 0 B: 5 C: 4 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 1: A: 0 B: 1 C: 5 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 2: A: 1 B: 6 C: 5 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 3: A: 1 B: 2 C: 6 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 4: A: 2 B: 7 C: 6 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 5: A: 2 B: 3 C: 7 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 6: A: 3 B: 4 C: 7 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 7: A: 3 B: 0 C: 4 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 8: A: 4 B: 9 C: 8 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 9: A: 4 B: 5 C: 9 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 10: A: 5 B: 10 C: 9 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 11: A: 5 B: 6 C: 10 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 12: A: 6 B: 11 C: 10 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 13: A: 6 B: 7 C: 11 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 14: A: 7 B: 8 C: 11 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 15: A: 7 B: 4 C: 8 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 16: A: 8 B: 13 C: 12 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 17: A: 8 B: 9 C: 13 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 18: A: 9 B: 14 C: 13 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 19: A: 9 B: 10 C: 14 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 20: A: 10 B: 15 C: 14 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 21: A: 10 B: 11 C: 15 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 22: A: 11 B: 12 C: 15 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 23: A: 11 B: 8 C: 12 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 24: A: 12 B: 17 C: 16 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 25: A: 12 B: 13 C: 17 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 26: A: 13 B: 18 C: 17 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 27: A: 13 B: 14 C: 18 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 28: A: 14 B: 19 C: 18 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 29: A: 14 B: 15 C: 19 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 30: A: 15 B: 16 C: 19 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 31: A: 15 B: 12 C: 16 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 32: A: 16 B: 21 C: 20 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 33: A: 16 B: 17 C: 21 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 34: A: 17 B: 22 C: 21 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 35: A: 17 B: 18 C: 22 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 36: A: 18 B: 23 C: 22 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 37: A: 18 B: 19 C: 23 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 38: A: 19 B: 20 C: 23 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 39: A: 19 B: 16 C: 20 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 40: A: 20 B: 25 C: 24 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 41: A: 20 B: 21 C: 25 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 42: A: 21 B: 26 C: 25 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 43: A: 21 B: 22 C: 26 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 44: A: 22 B: 27 C: 26 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 45: A: 22 B: 23 C: 27 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 46: A: 23 B: 24 C: 27 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 47: A: 23 B: 20 C: 24 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 48: A: 24 B: 29 C: 28 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 49: A: 24 B: 25 C: 29 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 50: A: 25 B: 30 C: 29 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 51: A: 25 B: 26 C: 30 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 52: A: 26 B: 31 C: 30 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 53: A: 26 B: 27 C: 31 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 54: A: 27 B: 28 C: 31 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 55: A: 27 B: 24 C: 28 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 56: A: 28 B: 33 C: 32 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 57: A: 28 B: 29 C: 33 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 58: A: 29 B: 34 C: 33 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 59: A: 29 B: 30 C: 34 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 60: A: 30 B: 35 C: 34 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 61: A: 30 B: 31 C: 35 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 62: A: 31 B: 32 C: 35 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 63: A: 31 B: 28 C: 32 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 64: A: 32 B: 37 C: 36 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 65: A: 32 B: 33 C: 37 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 66: A: 33 B: 38 C: 37 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 67: A: 33 B: 34 C: 38 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 68: A: 34 B: 39 C: 38 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 69: A: 34 B: 35 C: 39 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 70: A: 35 B: 36 C: 39 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 71: A: 35 B: 32 C: 36 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 72: A: 36 B: 41 C: 40 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 73: A: 36 B: 37 C: 41 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 74: A: 37 B: 42 C: 41 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 75: A: 37 B: 38 C: 42 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 76: A: 38 B: 43 C: 42 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 77: A: 38 B: 39 C: 43 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 78: A: 39 B: 40 C: 43 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 79: A: 39 B: 36 C: 40 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 80: A: 40 B: 45 C: 44 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 81: A: 40 B: 41 C: 45 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 82: A: 41 B: 46 C: 45 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 83: A: 41 B: 42 C: 46 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 84: A: 42 B: 47 C: 46 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 85: A: 42 B: 43 C: 47 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 86: A: 43 B: 44 C: 47 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 87: A: 43 B: 40 C: 44 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 88: A: 44 B: 1 C: 0 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 89: A: 44 B: 45 C: 1 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 90: A: 45 B: 2 C: 1 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 91: A: 45 B: 46 C: 2 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 92: A: 46 B: 3 C: 2 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 93: A: 46 B: 47 C: 3 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 94: A: 47 B: 0 C: 3 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 95: A: 47 B: 44 C: 0 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - } - *MESH_NUMTVERTEX 48 - *MESH_TVERTLIST { - *MESH_TVERT 0 0.5000 1.1874 0.7498 - *MESH_TVERT 1 0.5000 1.1255 0.7498 - *MESH_TVERT 2 0.5000 1.1255 0.2502 - *MESH_TVERT 3 0.5000 1.1874 0.2502 - *MESH_TVERT 4 0.8437 1.0953 0.7498 - *MESH_TVERT 5 0.8127 1.0417 0.7498 - *MESH_TVERT 6 0.8127 1.0417 0.2502 - *MESH_TVERT 7 0.8437 1.0953 0.2502 - *MESH_TVERT 8 1.0953 0.8437 0.7498 - *MESH_TVERT 9 1.0417 0.8127 0.7498 - *MESH_TVERT 10 1.0417 0.8127 0.2502 - *MESH_TVERT 11 1.0953 0.8437 0.2502 - *MESH_TVERT 12 1.1874 0.5000 0.7498 - *MESH_TVERT 13 1.1255 0.5000 0.7498 - *MESH_TVERT 14 1.1255 0.5000 0.2502 - *MESH_TVERT 15 1.1874 0.5000 0.2502 - *MESH_TVERT 16 1.0953 0.1563 0.7498 - *MESH_TVERT 17 1.0417 0.1873 0.7498 - *MESH_TVERT 18 1.0417 0.1873 0.2502 - *MESH_TVERT 19 1.0953 0.1563 0.2502 - *MESH_TVERT 20 0.8437 -0.0953 0.7498 - *MESH_TVERT 21 0.8127 -0.0417 0.7498 - *MESH_TVERT 22 0.8127 -0.0417 0.2502 - *MESH_TVERT 23 0.8437 -0.0953 0.2502 - *MESH_TVERT 24 0.5000 -0.1874 0.7498 - *MESH_TVERT 25 0.5000 -0.1255 0.7498 - *MESH_TVERT 26 0.5000 -0.1255 0.2502 - *MESH_TVERT 27 0.5000 -0.1874 0.2502 - *MESH_TVERT 28 0.1563 -0.0953 0.7498 - *MESH_TVERT 29 0.1873 -0.0417 0.7498 - *MESH_TVERT 30 0.1873 -0.0417 0.2502 - *MESH_TVERT 31 0.1563 -0.0953 0.2502 - *MESH_TVERT 32 -0.0953 0.1563 0.7498 - *MESH_TVERT 33 -0.0417 0.1873 0.7498 - *MESH_TVERT 34 -0.0417 0.1873 0.2502 - *MESH_TVERT 35 -0.0953 0.1563 0.2502 - *MESH_TVERT 36 -0.1874 0.5000 0.7498 - *MESH_TVERT 37 -0.1255 0.5000 0.7498 - *MESH_TVERT 38 -0.1255 0.5000 0.2502 - *MESH_TVERT 39 -0.1874 0.5000 0.2502 - *MESH_TVERT 40 -0.0953 0.8437 0.7498 - *MESH_TVERT 41 -0.0417 0.8127 0.7498 - *MESH_TVERT 42 -0.0417 0.8127 0.2502 - *MESH_TVERT 43 -0.0953 0.8437 0.2502 - *MESH_TVERT 44 0.1563 1.0953 0.7498 - *MESH_TVERT 45 0.1873 1.0417 0.7498 - *MESH_TVERT 46 0.1873 1.0417 0.2502 - *MESH_TVERT 47 0.1563 1.0953 0.2502 - } - *MESH_NUMTVFACES 96 - *MESH_TFACELIST { - *MESH_TFACE 0 0 5 4 - *MESH_TFACE 1 0 1 5 - *MESH_TFACE 2 1 6 5 - *MESH_TFACE 3 1 2 6 - *MESH_TFACE 4 2 7 6 - *MESH_TFACE 5 2 3 7 - *MESH_TFACE 6 3 4 7 - *MESH_TFACE 7 3 0 4 - *MESH_TFACE 8 4 9 8 - *MESH_TFACE 9 4 5 9 - *MESH_TFACE 10 5 10 9 - *MESH_TFACE 11 5 6 10 - *MESH_TFACE 12 6 11 10 - *MESH_TFACE 13 6 7 11 - *MESH_TFACE 14 7 8 11 - *MESH_TFACE 15 7 4 8 - *MESH_TFACE 16 8 13 12 - *MESH_TFACE 17 8 9 13 - *MESH_TFACE 18 9 14 13 - *MESH_TFACE 19 9 10 14 - *MESH_TFACE 20 10 15 14 - *MESH_TFACE 21 10 11 15 - *MESH_TFACE 22 11 12 15 - *MESH_TFACE 23 11 8 12 - *MESH_TFACE 24 12 17 16 - *MESH_TFACE 25 12 13 17 - *MESH_TFACE 26 13 18 17 - *MESH_TFACE 27 13 14 18 - *MESH_TFACE 28 14 19 18 - *MESH_TFACE 29 14 15 19 - *MESH_TFACE 30 15 16 19 - *MESH_TFACE 31 15 12 16 - *MESH_TFACE 32 16 21 20 - *MESH_TFACE 33 16 17 21 - *MESH_TFACE 34 17 22 21 - *MESH_TFACE 35 17 18 22 - *MESH_TFACE 36 18 23 22 - *MESH_TFACE 37 18 19 23 - *MESH_TFACE 38 19 20 23 - *MESH_TFACE 39 19 16 20 - *MESH_TFACE 40 20 25 24 - *MESH_TFACE 41 20 21 25 - *MESH_TFACE 42 21 26 25 - *MESH_TFACE 43 21 22 26 - *MESH_TFACE 44 22 27 26 - *MESH_TFACE 45 22 23 27 - *MESH_TFACE 46 23 24 27 - *MESH_TFACE 47 23 20 24 - *MESH_TFACE 48 24 29 28 - *MESH_TFACE 49 24 25 29 - *MESH_TFACE 50 25 30 29 - *MESH_TFACE 51 25 26 30 - *MESH_TFACE 52 26 31 30 - *MESH_TFACE 53 26 27 31 - *MESH_TFACE 54 27 28 31 - *MESH_TFACE 55 27 24 28 - *MESH_TFACE 56 28 33 32 - *MESH_TFACE 57 28 29 33 - *MESH_TFACE 58 29 34 33 - *MESH_TFACE 59 29 30 34 - *MESH_TFACE 60 30 35 34 - *MESH_TFACE 61 30 31 35 - *MESH_TFACE 62 31 32 35 - *MESH_TFACE 63 31 28 32 - *MESH_TFACE 64 32 37 36 - *MESH_TFACE 65 32 33 37 - *MESH_TFACE 66 33 38 37 - *MESH_TFACE 67 33 34 38 - *MESH_TFACE 68 34 39 38 - *MESH_TFACE 69 34 35 39 - *MESH_TFACE 70 35 36 39 - *MESH_TFACE 71 35 32 36 - *MESH_TFACE 72 36 41 40 - *MESH_TFACE 73 36 37 41 - *MESH_TFACE 74 37 42 41 - *MESH_TFACE 75 37 38 42 - *MESH_TFACE 76 38 43 42 - *MESH_TFACE 77 38 39 43 - *MESH_TFACE 78 39 40 43 - *MESH_TFACE 79 39 36 40 - *MESH_TFACE 80 40 45 44 - *MESH_TFACE 81 40 41 45 - *MESH_TFACE 82 41 46 45 - *MESH_TFACE 83 41 42 46 - *MESH_TFACE 84 42 47 46 - *MESH_TFACE 85 42 43 47 - *MESH_TFACE 86 43 44 47 - *MESH_TFACE 87 43 40 44 - *MESH_TFACE 88 44 1 0 - *MESH_TFACE 89 44 45 1 - *MESH_TFACE 90 45 2 1 - *MESH_TFACE 91 45 46 2 - *MESH_TFACE 92 46 3 2 - *MESH_TFACE 93 46 47 3 - *MESH_TFACE 94 47 0 3 - *MESH_TFACE 95 47 44 0 - } - *MESH_NORMALS { - *MESH_FACENORMAL 0 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 0 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 -0.0000 1.0000 - *MESH_FACENORMAL 1 -0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 0 -0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 1 -0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 5 -0.0000 -0.0000 1.0000 - *MESH_FACENORMAL 2 -0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 1 -0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 6 -0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 5 -0.2588 -0.9659 0.0000 - *MESH_FACENORMAL 3 -0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 1 -0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 2 -0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 6 -0.2588 -0.9659 0.0000 - *MESH_FACENORMAL 4 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 5 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 6 0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 3 0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 4 0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 7 0.2588 0.9659 0.0000 - *MESH_FACENORMAL 7 0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 3 0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 0 0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 4 0.2588 0.9659 0.0000 - *MESH_FACENORMAL 8 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 8 0.0000 -0.0000 1.0000 - *MESH_FACENORMAL 9 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 -0.0000 0.0000 1.0000 - *MESH_FACENORMAL 10 -0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 5 -0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 10 -0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 9 -0.7071 -0.7071 0.0000 - *MESH_FACENORMAL 11 -0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 5 -0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 6 -0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 10 -0.7071 -0.7071 0.0000 - *MESH_FACENORMAL 12 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 13 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 14 0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 7 0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 8 0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 11 0.7071 0.7071 0.0000 - *MESH_FACENORMAL 15 0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 7 0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 4 0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 8 0.7071 0.7071 0.0000 - *MESH_FACENORMAL 16 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 8 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 13 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 12 0.0000 -0.0000 1.0000 - *MESH_FACENORMAL 17 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 8 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 13 -0.0000 0.0000 1.0000 - *MESH_FACENORMAL 18 -0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 9 -0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 14 -0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 13 -0.9659 -0.2588 0.0000 - *MESH_FACENORMAL 19 -0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 9 -0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 10 -0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 14 -0.9659 -0.2588 0.0000 - *MESH_FACENORMAL 20 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 15 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 14 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 21 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 15 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 22 0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 11 0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 12 0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 15 0.9659 0.2588 0.0000 - *MESH_FACENORMAL 23 0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 11 0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 8 0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 12 0.9659 0.2588 0.0000 - *MESH_FACENORMAL 24 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 12 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 17 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 16 -0.0000 0.0000 1.0000 - *MESH_FACENORMAL 25 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 12 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 13 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 17 -0.0000 0.0000 1.0000 - *MESH_FACENORMAL 26 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 13 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 18 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 17 -0.9659 0.2588 0.0000 - *MESH_FACENORMAL 27 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 13 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 14 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 18 -0.9659 0.2588 0.0000 - *MESH_FACENORMAL 28 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 14 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 19 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 18 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 29 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 14 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 15 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 19 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 30 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 15 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 16 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 19 0.9659 -0.2588 0.0000 - *MESH_FACENORMAL 31 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 15 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 12 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 16 0.9659 -0.2588 0.0000 - *MESH_FACENORMAL 32 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 16 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 21 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 20 -0.0000 0.0000 1.0000 - *MESH_FACENORMAL 33 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 16 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 17 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 21 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 34 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 17 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 22 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 21 -0.7071 0.7071 0.0000 - *MESH_FACENORMAL 35 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 17 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 18 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 22 -0.7071 0.7071 0.0000 - *MESH_FACENORMAL 36 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 18 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 23 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 22 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 37 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 18 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 19 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 23 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 38 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 19 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 20 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 23 0.7071 -0.7071 0.0000 - *MESH_FACENORMAL 39 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 19 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 16 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 20 0.7071 -0.7071 0.0000 - *MESH_FACENORMAL 40 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 20 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 25 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 24 -0.0000 0.0000 1.0000 - *MESH_FACENORMAL 41 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 20 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 21 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 25 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 42 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 21 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 26 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 25 -0.2588 0.9659 0.0000 - *MESH_FACENORMAL 43 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 21 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 22 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 26 -0.2588 0.9659 0.0000 - *MESH_FACENORMAL 44 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 22 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 27 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 26 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 45 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 22 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 23 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 27 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 46 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 23 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 24 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 27 0.2588 -0.9659 0.0000 - *MESH_FACENORMAL 47 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 23 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 20 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 24 0.2588 -0.9659 0.0000 - *MESH_FACENORMAL 48 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 24 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 29 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 49 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 24 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 25 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 29 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 50 0.2588 0.9659 -0.0000 - *MESH_VERTEXNORMAL 25 0.2588 0.9659 -0.0000 - *MESH_VERTEXNORMAL 30 0.2588 0.9659 -0.0000 - *MESH_VERTEXNORMAL 29 0.2588 0.9659 -0.0000 - *MESH_FACENORMAL 51 0.2588 0.9659 -0.0000 - *MESH_VERTEXNORMAL 25 0.2588 0.9659 -0.0000 - *MESH_VERTEXNORMAL 26 0.2588 0.9659 -0.0000 - *MESH_VERTEXNORMAL 30 0.2588 0.9659 -0.0000 - *MESH_FACENORMAL 52 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 26 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 31 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 30 -0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 53 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 26 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 27 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 31 -0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 54 -0.2588 -0.9659 -0.0000 - *MESH_VERTEXNORMAL 27 -0.2588 -0.9659 -0.0000 - *MESH_VERTEXNORMAL 28 -0.2588 -0.9659 -0.0000 - *MESH_VERTEXNORMAL 31 -0.2588 -0.9659 -0.0000 - *MESH_FACENORMAL 55 -0.2588 -0.9659 -0.0000 - *MESH_VERTEXNORMAL 27 -0.2588 -0.9659 -0.0000 - *MESH_VERTEXNORMAL 24 -0.2588 -0.9659 -0.0000 - *MESH_VERTEXNORMAL 28 -0.2588 -0.9659 -0.0000 - *MESH_FACENORMAL 56 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 33 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 32 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 57 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 29 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 33 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 58 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 29 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 34 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 33 0.7071 0.7071 -0.0000 - *MESH_FACENORMAL 59 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 29 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 30 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 34 0.7071 0.7071 -0.0000 - *MESH_FACENORMAL 60 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 30 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 35 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 34 -0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 61 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 30 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 31 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 35 -0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 62 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 31 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 32 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 35 -0.7071 -0.7071 -0.0000 - *MESH_FACENORMAL 63 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 31 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 28 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 32 -0.7071 -0.7071 -0.0000 - *MESH_FACENORMAL 64 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 32 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 37 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 36 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 65 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 32 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 33 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 37 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 66 0.9659 0.2588 -0.0000 - *MESH_VERTEXNORMAL 33 0.9659 0.2588 -0.0000 - *MESH_VERTEXNORMAL 38 0.9659 0.2588 -0.0000 - *MESH_VERTEXNORMAL 37 0.9659 0.2588 -0.0000 - *MESH_FACENORMAL 67 0.9659 0.2588 -0.0000 - *MESH_VERTEXNORMAL 33 0.9659 0.2588 -0.0000 - *MESH_VERTEXNORMAL 34 0.9659 0.2588 -0.0000 - *MESH_VERTEXNORMAL 38 0.9659 0.2588 -0.0000 - *MESH_FACENORMAL 68 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 34 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 39 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 38 -0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 69 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 34 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 35 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 39 -0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 70 -0.9659 -0.2588 -0.0000 - *MESH_VERTEXNORMAL 35 -0.9659 -0.2588 -0.0000 - *MESH_VERTEXNORMAL 36 -0.9659 -0.2588 -0.0000 - *MESH_VERTEXNORMAL 39 -0.9659 -0.2588 -0.0000 - *MESH_FACENORMAL 71 -0.9659 -0.2588 -0.0000 - *MESH_VERTEXNORMAL 35 -0.9659 -0.2588 -0.0000 - *MESH_VERTEXNORMAL 32 -0.9659 -0.2588 -0.0000 - *MESH_VERTEXNORMAL 36 -0.9659 -0.2588 -0.0000 - *MESH_FACENORMAL 72 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 36 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 41 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 40 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 73 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 36 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 37 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 41 0.0000 -0.0000 1.0000 - *MESH_FACENORMAL 74 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 37 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 42 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 41 0.9659 -0.2588 0.0000 - *MESH_FACENORMAL 75 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 37 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 38 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 42 0.9659 -0.2588 0.0000 - *MESH_FACENORMAL 76 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 38 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 43 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 42 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 77 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 38 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 39 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 43 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 78 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 39 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 40 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 43 -0.9659 0.2588 0.0000 - *MESH_FACENORMAL 79 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 39 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 36 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 40 -0.9659 0.2588 0.0000 - *MESH_FACENORMAL 80 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 40 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 45 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 44 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 81 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 40 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 41 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 45 0.0000 -0.0000 1.0000 - *MESH_FACENORMAL 82 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 41 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 46 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 45 0.7071 -0.7071 0.0000 - *MESH_FACENORMAL 83 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 41 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 42 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 46 0.7071 -0.7071 0.0000 - *MESH_FACENORMAL 84 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 42 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 47 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 46 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 85 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 42 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 43 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 47 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 86 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 43 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 44 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 47 -0.7071 0.7071 0.0000 - *MESH_FACENORMAL 87 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 43 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 40 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 44 -0.7071 0.7071 0.0000 - *MESH_FACENORMAL 88 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 44 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 89 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 44 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 45 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 1 0.0000 -0.0000 1.0000 - *MESH_FACENORMAL 90 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 45 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 2 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 1 0.2588 -0.9659 0.0000 - *MESH_FACENORMAL 91 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 45 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 46 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 2 0.2588 -0.9659 0.0000 - *MESH_FACENORMAL 92 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 46 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 3 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 93 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 46 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 47 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 3 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 94 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 47 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 0 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 3 -0.2588 0.9659 0.0000 - *MESH_FACENORMAL 95 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 47 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 44 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 0 -0.2588 0.9659 0.0000 - } - } - *PROP_MOTIONBLUR 0 - *PROP_CASTSHADOW 1 - *PROP_RECVSHADOW 1 - *MATERIAL_REF 0 -} diff --git a/third_party/gfootball_engine/data/media/objects/helpers/red.ase b/third_party/gfootball_engine/data/media/objects/helpers/red.ase deleted file mode 100755 index 7be61efe..00000000 --- a/third_party/gfootball_engine/data/media/objects/helpers/red.ase +++ /dev/null @@ -1,804 +0,0 @@ -*3DSMAX_ASCIIEXPORT 200 -*COMMENT "AsciiExport Version 2.00 - Wed Aug 11 02:14:15 2010" -*SCENE { - *SCENE_FILENAME "pilon.max" - *SCENE_FIRSTFRAME 0 - *SCENE_LASTFRAME 100 - *SCENE_FRAMESPEED 30 - *SCENE_TICKSPERFRAME 160 - *SCENE_BACKGROUND_STATIC 0.0000 0.0000 0.0000 - *SCENE_AMBIENT_STATIC 0.0000 0.0000 0.0000 -} -*MATERIAL_LIST { - *MATERIAL_COUNT 2 - *MATERIAL 0 { - *MATERIAL_NAME "01 - Default" - *MATERIAL_CLASS "Standard" - *MATERIAL_AMBIENT 0.5882 0.5882 0.5882 - *MATERIAL_DIFFUSE 0.5882 0.5882 0.5882 - *MATERIAL_SPECULAR 0.9000 0.9000 0.9000 - *MATERIAL_SHINE 0.1000 - *MATERIAL_SHINESTRENGTH 0.0000 - *MATERIAL_TRANSPARENCY 0.0000 - *MATERIAL_WIRESIZE 1.0000 - *MATERIAL_SHADING Blinn - *MATERIAL_XP_FALLOFF 0.0000 - *MATERIAL_SELFILLUM 0.6000 - *MATERIAL_FALLOFF In - *MATERIAL_XP_TYPE Filter - *MAP_DIFFUSE { - *MAP_NAME "Map #1" - *MAP_CLASS "Bitmap" - *MAP_SUBNO 1 - *MAP_AMOUNT 1.0000 - *BITMAP "media/objects/helpers/red.png" - *MAP_TYPE Screen - *UVW_U_OFFSET 0.0000 - *UVW_V_OFFSET 0.0000 - *UVW_U_TILING 1.0000 - *UVW_V_TILING 1.0000 - *UVW_ANGLE 0.0000 - *UVW_BLUR 1.0000 - *UVW_BLUR_OFFSET 0.0000 - *UVW_NOUSE_AMT 1.0000 - *UVW_NOISE_SIZE 1.0000 - *UVW_NOISE_LEVEL 1 - *UVW_NOISE_PHASE 0.0000 - *BITMAP_FILTER Pyramidal - } - } - *MATERIAL 1 { - *MATERIAL_NAME "white" - *MATERIAL_CLASS "Standard" - *MATERIAL_AMBIENT 0.5882 0.5882 0.5882 - *MATERIAL_DIFFUSE 0.5882 0.5882 0.5882 - *MATERIAL_SPECULAR 0.9000 0.9000 0.9000 - *MATERIAL_SHINE 0.2200 - *MATERIAL_SHINESTRENGTH 0.6300 - *MATERIAL_TRANSPARENCY 0.0000 - *MATERIAL_WIRESIZE 1.0000 - *MATERIAL_SHADING Blinn - *MATERIAL_XP_FALLOFF 0.0000 - *MATERIAL_SELFILLUM 0.6000 - *MATERIAL_FALLOFF In - *MATERIAL_XP_TYPE Filter - *MAP_DIFFUSE { - *MAP_NAME "Map #2" - *MAP_CLASS "Bitmap" - *MAP_SUBNO 1 - *MAP_AMOUNT 1.0000 - *BITMAP "media/textures/white.png" - *MAP_TYPE Screen - *UVW_U_OFFSET 0.0000 - *UVW_V_OFFSET 0.0000 - *UVW_U_TILING 1.0000 - *UVW_V_TILING 1.0000 - *UVW_ANGLE 0.0000 - *UVW_BLUR 1.0000 - *UVW_BLUR_OFFSET 0.0000 - *UVW_NOUSE_AMT 1.0000 - *UVW_NOISE_SIZE 1.0000 - *UVW_NOISE_LEVEL 1 - *UVW_NOISE_PHASE 0.0000 - *BITMAP_FILTER Pyramidal - } - } -} -*GEOMOBJECT { - *NODE_NAME "Cone01" - *NODE_TM { - *NODE_NAME "Cone01" - *INHERIT_POS 0 0 0 - *INHERIT_ROT 0 0 0 - *INHERIT_SCL 0 0 0 - *TM_ROW0 1.0000 0.0000 0.0000 - *TM_ROW1 0.0000 1.0000 0.0000 - *TM_ROW2 0.0000 0.0000 1.0000 - *TM_ROW3 0.0000 0.0000 0.0000 - *TM_POS 0.0000 0.0000 0.0000 - *TM_ROTAXIS 0.0000 0.0000 0.0000 - *TM_ROTANGLE 0.0000 - *TM_SCALE 1.0000 1.0000 1.0000 - *TM_SCALEAXIS 0.0000 0.0000 0.0000 - *TM_SCALEAXISANG 0.0000 - } - *MESH { - *TIMEVALUE 0 - *MESH_NUMVERTEX 34 - *MESH_NUMFACES 64 - *MESH_VERTEX_LIST { - *MESH_VERTEX 0 0.0000 0.0000 0.0000 - *MESH_VERTEX 1 0.1000 0.0000 0.0000 - *MESH_VERTEX 2 0.0924 0.0383 0.0000 - *MESH_VERTEX 3 0.0707 0.0707 0.0000 - *MESH_VERTEX 4 0.0383 0.0924 0.0000 - *MESH_VERTEX 5 -0.0000 0.1000 0.0000 - *MESH_VERTEX 6 -0.0383 0.0924 0.0000 - *MESH_VERTEX 7 -0.0707 0.0707 0.0000 - *MESH_VERTEX 8 -0.0924 0.0383 0.0000 - *MESH_VERTEX 9 -0.1000 0.0000 0.0000 - *MESH_VERTEX 10 -0.0924 -0.0383 0.0000 - *MESH_VERTEX 11 -0.0707 -0.0707 0.0000 - *MESH_VERTEX 12 -0.0383 -0.0924 0.0000 - *MESH_VERTEX 13 0.0000 -0.1000 0.0000 - *MESH_VERTEX 14 0.0383 -0.0924 0.0000 - *MESH_VERTEX 15 0.0707 -0.0707 0.0000 - *MESH_VERTEX 16 0.0924 -0.0383 0.0000 - *MESH_VERTEX 17 0.0000 0.0000 0.2000 - *MESH_VERTEX 18 0.0000 0.0000 0.2000 - *MESH_VERTEX 19 0.0000 0.0000 0.2000 - *MESH_VERTEX 20 0.0000 0.0000 0.2000 - *MESH_VERTEX 21 0.0000 0.0000 0.2000 - *MESH_VERTEX 22 0.0000 0.0000 0.2000 - *MESH_VERTEX 23 0.0000 0.0000 0.2000 - *MESH_VERTEX 24 0.0000 0.0000 0.2000 - *MESH_VERTEX 25 0.0000 0.0000 0.2000 - *MESH_VERTEX 26 0.0000 0.0000 0.2000 - *MESH_VERTEX 27 0.0000 0.0000 0.2000 - *MESH_VERTEX 28 0.0000 0.0000 0.2000 - *MESH_VERTEX 29 0.0000 0.0000 0.2000 - *MESH_VERTEX 30 0.0000 0.0000 0.2000 - *MESH_VERTEX 31 0.0000 0.0000 0.2000 - *MESH_VERTEX 32 0.0000 0.0000 0.2000 - *MESH_VERTEX 33 0.0000 0.0000 0.2000 - } - *MESH_FACE_LIST { - *MESH_FACE 0: A: 0 B: 2 C: 1 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 1: A: 0 B: 3 C: 2 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 2: A: 0 B: 4 C: 3 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 3: A: 0 B: 5 C: 4 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 4: A: 0 B: 6 C: 5 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 5: A: 0 B: 7 C: 6 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 6: A: 0 B: 8 C: 7 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 7: A: 0 B: 9 C: 8 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 8: A: 0 B: 10 C: 9 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 9: A: 0 B: 11 C: 10 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 10: A: 0 B: 12 C: 11 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 11: A: 0 B: 13 C: 12 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 12: A: 0 B: 14 C: 13 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 13: A: 0 B: 15 C: 14 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 14: A: 0 B: 16 C: 15 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 15: A: 0 B: 1 C: 16 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 16: A: 1 B: 18 C: 17 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 17: A: 1 B: 2 C: 18 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 18: A: 2 B: 19 C: 18 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 19: A: 2 B: 3 C: 19 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 20: A: 3 B: 20 C: 19 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 21: A: 3 B: 4 C: 20 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 22: A: 4 B: 21 C: 20 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 23: A: 4 B: 5 C: 21 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 24: A: 5 B: 22 C: 21 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 25: A: 5 B: 6 C: 22 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 26: A: 6 B: 23 C: 22 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 27: A: 6 B: 7 C: 23 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 28: A: 7 B: 24 C: 23 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 29: A: 7 B: 8 C: 24 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 30: A: 8 B: 25 C: 24 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 31: A: 8 B: 9 C: 25 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 32: A: 9 B: 26 C: 25 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 33: A: 9 B: 10 C: 26 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 34: A: 10 B: 27 C: 26 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 35: A: 10 B: 11 C: 27 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 36: A: 11 B: 28 C: 27 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 37: A: 11 B: 12 C: 28 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 38: A: 12 B: 29 C: 28 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 39: A: 12 B: 13 C: 29 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 40: A: 13 B: 30 C: 29 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 41: A: 13 B: 14 C: 30 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 42: A: 14 B: 31 C: 30 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 43: A: 14 B: 15 C: 31 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 44: A: 15 B: 32 C: 31 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 45: A: 15 B: 16 C: 32 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 46: A: 16 B: 17 C: 32 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 47: A: 16 B: 1 C: 17 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 48: A: 33 B: 17 C: 18 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 49: A: 33 B: 18 C: 19 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 50: A: 33 B: 19 C: 20 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 51: A: 33 B: 20 C: 21 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 52: A: 33 B: 21 C: 22 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 53: A: 33 B: 22 C: 23 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 54: A: 33 B: 23 C: 24 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 55: A: 33 B: 24 C: 25 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 56: A: 33 B: 25 C: 26 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 57: A: 33 B: 26 C: 27 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 58: A: 33 B: 27 C: 28 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 59: A: 33 B: 28 C: 29 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 60: A: 33 B: 29 C: 30 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 61: A: 33 B: 30 C: 31 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 62: A: 33 B: 31 C: 32 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 63: A: 33 B: 32 C: 17 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - } - *MESH_NUMTVERTEX 36 - *MESH_TVERTLIST { - *MESH_TVERT 0 0.5000 0.0000 0.0000 - *MESH_TVERT 1 0.7500 0.0000 1.0000 - *MESH_TVERT 2 0.8125 0.0000 1.0000 - *MESH_TVERT 3 0.8750 0.0000 1.0000 - *MESH_TVERT 4 0.9375 0.0000 1.0000 - *MESH_TVERT 5 0.0000 0.0000 1.0000 - *MESH_TVERT 6 0.0625 0.0000 1.0000 - *MESH_TVERT 7 0.1250 0.0000 1.0000 - *MESH_TVERT 8 0.1875 0.0000 1.0000 - *MESH_TVERT 9 0.2500 0.0000 1.0000 - *MESH_TVERT 10 0.3125 0.0000 1.0000 - *MESH_TVERT 11 0.3750 0.0000 1.0000 - *MESH_TVERT 12 0.4375 0.0000 1.0000 - *MESH_TVERT 13 0.5000 0.0000 1.0000 - *MESH_TVERT 14 0.5625 0.0000 1.0000 - *MESH_TVERT 15 0.6250 0.0000 1.0000 - *MESH_TVERT 16 0.6875 0.0000 1.0000 - *MESH_TVERT 17 0.5000 1.0000 0.0000 - *MESH_TVERT 18 0.5000 1.0000 0.0000 - *MESH_TVERT 19 0.5000 1.0000 0.0000 - *MESH_TVERT 20 0.5000 1.0000 0.0000 - *MESH_TVERT 21 0.5000 1.0000 0.0000 - *MESH_TVERT 22 0.5000 1.0000 0.0000 - *MESH_TVERT 23 0.5000 1.0000 0.0000 - *MESH_TVERT 24 0.5000 1.0000 0.0000 - *MESH_TVERT 25 0.5000 1.0000 0.0000 - *MESH_TVERT 26 0.5000 1.0000 0.0000 - *MESH_TVERT 27 0.5000 1.0000 0.0000 - *MESH_TVERT 28 0.5000 1.0000 0.0000 - *MESH_TVERT 29 0.5000 1.0000 0.0000 - *MESH_TVERT 30 0.5000 1.0000 0.0000 - *MESH_TVERT 31 0.5000 1.0000 0.0000 - *MESH_TVERT 32 0.5000 1.0000 0.0000 - *MESH_TVERT 33 0.5000 1.0000 0.0000 - *MESH_TVERT 34 -0.0625 0.0000 1.0000 - *MESH_TVERT 35 -0.0625 0.0000 1.0000 - } - *MESH_NUMTVFACES 64 - *MESH_TFACELIST { - *MESH_TFACE 0 0 2 1 - *MESH_TFACE 1 0 3 2 - *MESH_TFACE 2 0 4 3 - *MESH_TFACE 3 0 5 34 - *MESH_TFACE 4 0 6 5 - *MESH_TFACE 5 0 7 6 - *MESH_TFACE 6 0 8 7 - *MESH_TFACE 7 0 9 8 - *MESH_TFACE 8 0 10 9 - *MESH_TFACE 9 0 11 10 - *MESH_TFACE 10 0 12 11 - *MESH_TFACE 11 0 13 12 - *MESH_TFACE 12 0 14 13 - *MESH_TFACE 13 0 15 14 - *MESH_TFACE 14 0 16 15 - *MESH_TFACE 15 0 1 16 - *MESH_TFACE 16 1 18 17 - *MESH_TFACE 17 1 2 18 - *MESH_TFACE 18 2 19 18 - *MESH_TFACE 19 2 3 19 - *MESH_TFACE 20 3 20 19 - *MESH_TFACE 21 3 4 20 - *MESH_TFACE 22 4 21 20 - *MESH_TFACE 23 35 5 21 - *MESH_TFACE 24 5 22 21 - *MESH_TFACE 25 5 6 22 - *MESH_TFACE 26 6 23 22 - *MESH_TFACE 27 6 7 23 - *MESH_TFACE 28 7 24 23 - *MESH_TFACE 29 7 8 24 - *MESH_TFACE 30 8 25 24 - *MESH_TFACE 31 8 9 25 - *MESH_TFACE 32 9 26 25 - *MESH_TFACE 33 9 10 26 - *MESH_TFACE 34 10 27 26 - *MESH_TFACE 35 10 11 27 - *MESH_TFACE 36 11 28 27 - *MESH_TFACE 37 11 12 28 - *MESH_TFACE 38 12 29 28 - *MESH_TFACE 39 12 13 29 - *MESH_TFACE 40 13 30 29 - *MESH_TFACE 41 13 14 30 - *MESH_TFACE 42 14 31 30 - *MESH_TFACE 43 14 15 31 - *MESH_TFACE 44 15 32 31 - *MESH_TFACE 45 15 16 32 - *MESH_TFACE 46 16 17 32 - *MESH_TFACE 47 16 1 17 - *MESH_TFACE 48 33 17 18 - *MESH_TFACE 49 33 18 19 - *MESH_TFACE 50 33 19 20 - *MESH_TFACE 51 33 20 21 - *MESH_TFACE 52 33 21 22 - *MESH_TFACE 53 33 22 23 - *MESH_TFACE 54 33 23 24 - *MESH_TFACE 55 33 24 25 - *MESH_TFACE 56 33 25 26 - *MESH_TFACE 57 33 26 27 - *MESH_TFACE 58 33 27 28 - *MESH_TFACE 59 33 28 29 - *MESH_TFACE 60 33 29 30 - *MESH_TFACE 61 33 30 31 - *MESH_TFACE 62 33 31 32 - *MESH_TFACE 63 33 32 17 - } - *MESH_NORMALS { - *MESH_FACENORMAL 0 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 1 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 3 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 2 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 3 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 3 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 4 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 5 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 9 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 10 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 12 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 11 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 13 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 12 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 12 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 14 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 13 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 13 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 15 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 14 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 14 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 16 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 15 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 15 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 16 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 16 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 1 0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 18 0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 17 0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 17 0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 1 0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 2 0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 18 0.8806 0.1752 0.4403 - *MESH_FACENORMAL 18 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 2 0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 19 0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 18 0.8806 0.1752 0.4403 - *MESH_FACENORMAL 19 0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 2 0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 3 0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 19 0.7465 0.4988 0.4403 - *MESH_FACENORMAL 20 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 3 0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 20 0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 19 0.7465 0.4988 0.4403 - *MESH_FACENORMAL 21 0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 3 0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 4 0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 20 0.4988 0.7465 0.4403 - *MESH_FACENORMAL 22 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 4 0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 21 0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 20 0.4988 0.7465 0.4403 - *MESH_FACENORMAL 23 0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 4 0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 5 0.0000 0.8944 0.4472 - *MESH_VERTEXNORMAL 21 0.1752 0.8806 0.4403 - *MESH_FACENORMAL 24 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.8944 0.4472 - *MESH_VERTEXNORMAL 22 -0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 21 0.1752 0.8806 0.4403 - *MESH_FACENORMAL 25 -0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 5 0.0000 0.8944 0.4472 - *MESH_VERTEXNORMAL 6 -0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 22 -0.1752 0.8806 0.4403 - *MESH_FACENORMAL 26 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 6 -0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 23 -0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 22 -0.1752 0.8806 0.4403 - *MESH_FACENORMAL 27 -0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 6 -0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 7 -0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 23 -0.4988 0.7465 0.4403 - *MESH_FACENORMAL 28 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 7 -0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 24 -0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 23 -0.4988 0.7465 0.4403 - *MESH_FACENORMAL 29 -0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 7 -0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 8 -0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 24 -0.7465 0.4988 0.4403 - *MESH_FACENORMAL 30 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 8 -0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 25 -0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 24 -0.7465 0.4988 0.4403 - *MESH_FACENORMAL 31 -0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 8 -0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 9 -0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 25 -0.8806 0.1752 0.4403 - *MESH_FACENORMAL 32 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 9 -0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 26 -0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 25 -0.8806 0.1752 0.4403 - *MESH_FACENORMAL 33 -0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 9 -0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 10 -0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 26 -0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 34 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 10 -0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 27 -0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 26 -0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 35 -0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 10 -0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 11 -0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 27 -0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 36 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 11 -0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 28 -0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 27 -0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 37 -0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 11 -0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 12 -0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 28 -0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 38 0.0000 -0.0000 0.0000 - *MESH_VERTEXNORMAL 12 -0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 29 -0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 28 -0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 39 -0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 12 -0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 13 0.0000 -0.8944 0.4472 - *MESH_VERTEXNORMAL 29 -0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 40 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 13 0.0000 -0.8944 0.4472 - *MESH_VERTEXNORMAL 30 0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 29 -0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 41 0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 13 0.0000 -0.8944 0.4472 - *MESH_VERTEXNORMAL 14 0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 30 0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 42 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 14 0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 31 0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 30 0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 43 0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 14 0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 15 0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 31 0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 44 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 15 0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 32 0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 31 0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 45 0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 15 0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 16 0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 32 0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 46 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 16 0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 17 0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 32 0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 47 0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 16 0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 1 0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 17 0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 48 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 17 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 18 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 49 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 18 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 19 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 50 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 19 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 20 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 51 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 20 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 21 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 52 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 21 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 22 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 53 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 22 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 23 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 54 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 23 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 24 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 55 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 24 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 25 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 56 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 25 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 26 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 57 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 26 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 27 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 58 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 27 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 28 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 59 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 28 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 29 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 60 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 29 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 30 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 61 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 30 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 31 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 62 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 31 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 32 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 63 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 32 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 17 1.0000 0.0000 0.0000 - } - } - *PROP_MOTIONBLUR 0 - *PROP_CASTSHADOW 1 - *PROP_RECVSHADOW 1 - *MATERIAL_REF 0 -} -*GEOMOBJECT { - *NODE_NAME "Line01" - *NODE_TM { - *NODE_NAME "Line01" - *INHERIT_POS 0 0 0 - *INHERIT_ROT 0 0 0 - *INHERIT_SCL 0 0 0 - *TM_ROW0 1.0000 0.0000 0.0000 - *TM_ROW1 0.0000 -0.0000 1.0000 - *TM_ROW2 0.0000 -1.0000 -0.0000 - *TM_ROW3 0.0000 0.0100 0.0667 - *TM_POS 0.0000 0.0100 0.0667 - *TM_ROTAXIS -1.0000 -0.0000 -0.0000 - *TM_ROTANGLE 1.5708 - *TM_SCALE 1.0000 1.0000 1.0000 - *TM_SCALEAXIS 0.0000 0.0000 0.0000 - *TM_SCALEAXISANG 0.0000 - } - *MESH { - *TIMEVALUE 0 - *MESH_NUMVERTEX 12 - *MESH_NUMFACES 24 - *MESH_VERTEX_LIST { - *MESH_VERTEX 0 -0.1000 0.0100 0.0000 - *MESH_VERTEX 1 0.0000 0.0100 0.2000 - *MESH_VERTEX 2 0.1000 0.0100 0.0000 - *MESH_VERTEX 3 -0.1000 -0.0100 0.0000 - *MESH_VERTEX 4 0.0000 -0.0100 0.2000 - *MESH_VERTEX 5 0.1000 -0.0100 0.0000 - *MESH_VERTEX 6 -0.1447 0.0100 -0.0292 - *MESH_VERTEX 7 0.1447 0.0100 -0.0292 - *MESH_VERTEX 8 0.0000 0.0100 0.2603 - *MESH_VERTEX 9 -0.1447 -0.0100 -0.0292 - *MESH_VERTEX 10 0.1447 -0.0100 -0.0292 - *MESH_VERTEX 11 0.0000 -0.0100 0.2603 - } - *MESH_FACE_LIST { - *MESH_FACE 0: A: 0 B: 1 C: 4 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 1: A: 0 B: 4 C: 3 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 2: A: 1 B: 2 C: 5 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 3: A: 1 B: 5 C: 4 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 4: A: 2 B: 0 C: 3 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 5: A: 2 B: 3 C: 5 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 6: A: 6 B: 7 C: 10 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 7: A: 6 B: 10 C: 9 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 8: A: 7 B: 8 C: 11 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 9: A: 7 B: 11 C: 10 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 10: A: 8 B: 6 C: 9 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 11: A: 8 B: 9 C: 11 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 12: A: 8 B: 0 C: 6 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 13: A: 8 B: 1 C: 0 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 14: A: 7 B: 1 C: 8 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 15: A: 7 B: 2 C: 1 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 16: A: 6 B: 2 C: 7 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 17: A: 6 B: 0 C: 2 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 18: A: 11 B: 9 C: 3 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 19: A: 11 B: 3 C: 4 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 20: A: 10 B: 11 C: 4 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 21: A: 10 B: 4 C: 5 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 22: A: 9 B: 10 C: 5 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 23: A: 9 B: 5 C: 3 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - } - *MESH_NUMTVERTEX 28 - *MESH_TVERTLIST { - *MESH_TVERT 0 0.0000 0.0000 0.0000 - *MESH_TVERT 1 0.3455 0.0000 0.0000 - *MESH_TVERT 2 0.6910 0.0000 0.0000 - *MESH_TVERT 3 1.0000 0.0000 0.0000 - *MESH_TVERT 4 0.0000 1.0000 0.0000 - *MESH_TVERT 5 0.3455 1.0000 0.0000 - *MESH_TVERT 6 0.6910 1.0000 0.0000 - *MESH_TVERT 7 1.0000 1.0000 0.0000 - *MESH_TVERT 8 0.0000 0.0000 0.0000 - *MESH_TVERT 9 0.3090 0.0000 0.0000 - *MESH_TVERT 10 0.6545 0.0000 0.0000 - *MESH_TVERT 11 1.0000 0.0000 0.0000 - *MESH_TVERT 12 0.0000 1.0000 0.0000 - *MESH_TVERT 13 0.3090 1.0000 0.0000 - *MESH_TVERT 14 0.6545 1.0000 0.0000 - *MESH_TVERT 15 1.0000 1.0000 0.0000 - *MESH_TVERT 16 0.1545 0.1007 0.0000 - *MESH_TVERT 17 0.5000 0.7918 0.0000 - *MESH_TVERT 18 0.8455 0.1007 0.0000 - *MESH_TVERT 19 0.0000 0.0000 0.0000 - *MESH_TVERT 20 1.0000 0.0000 0.0000 - *MESH_TVERT 21 0.5000 1.0000 0.0000 - *MESH_TVERT 22 0.1545 0.1007 0.0000 - *MESH_TVERT 23 0.5000 0.7918 0.0000 - *MESH_TVERT 24 0.8455 0.1007 0.0000 - *MESH_TVERT 25 0.0000 0.0000 0.0000 - *MESH_TVERT 26 1.0000 0.0000 0.0000 - *MESH_TVERT 27 0.5000 1.0000 0.0000 - } - *MESH_NUMTVFACES 24 - *MESH_TFACELIST { - *MESH_TFACE 0 0 1 5 - *MESH_TFACE 1 0 5 4 - *MESH_TFACE 2 1 2 6 - *MESH_TFACE 3 1 6 5 - *MESH_TFACE 4 2 3 7 - *MESH_TFACE 5 2 7 6 - *MESH_TFACE 6 8 9 13 - *MESH_TFACE 7 8 13 12 - *MESH_TFACE 8 9 10 14 - *MESH_TFACE 9 9 14 13 - *MESH_TFACE 10 10 11 15 - *MESH_TFACE 11 10 15 14 - *MESH_TFACE 12 21 16 19 - *MESH_TFACE 13 21 17 16 - *MESH_TFACE 14 20 17 21 - *MESH_TFACE 15 20 18 17 - *MESH_TFACE 16 19 18 20 - *MESH_TFACE 17 19 16 18 - *MESH_TFACE 18 27 25 22 - *MESH_TFACE 19 27 22 23 - *MESH_TFACE 20 26 27 23 - *MESH_TFACE 21 26 23 24 - *MESH_TFACE 22 25 26 24 - *MESH_TFACE 23 25 24 22 - } - *MESH_NORMALS { - *MESH_FACENORMAL 0 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 0 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 1 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 4 0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 1 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 0 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 4 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 3 0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 2 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 1 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 2 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 5 -0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 3 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 1 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 5 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 4 -0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 4 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 2 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 0 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 3 0.0000 1.0000 0.0000 - *MESH_FACENORMAL 5 -0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 2 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 3 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 5 -0.0000 1.0000 0.0000 - *MESH_FACENORMAL 6 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 6 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 7 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 10 0.0000 -1.0000 0.0000 - *MESH_FACENORMAL 7 -0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 6 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 10 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 9 -0.0000 -1.0000 0.0000 - *MESH_FACENORMAL 8 0.8944 0.4472 -0.0000 - *MESH_VERTEXNORMAL 7 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 8 0.8944 0.4472 -0.0000 - *MESH_VERTEXNORMAL 11 0.8944 0.4472 0.0000 - *MESH_FACENORMAL 9 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 7 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 11 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 10 0.8944 0.4472 0.0000 - *MESH_FACENORMAL 10 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 8 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 6 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 9 -0.8944 0.4472 0.0000 - *MESH_FACENORMAL 11 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 8 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 9 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 11 -0.8944 0.4472 0.0000 - *MESH_FACENORMAL 12 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 13 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 14 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 15 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 16 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 17 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 18 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 19 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 20 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 21 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 22 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 23 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 - } - } - *PROP_MOTIONBLUR 0 - *PROP_CASTSHADOW 1 - *PROP_RECVSHADOW 1 - *MATERIAL_REF 1 -} diff --git a/third_party/gfootball_engine/data/media/objects/helpers/red.bmp b/third_party/gfootball_engine/data/media/objects/helpers/red.bmp deleted file mode 100644 index a67e6901..00000000 Binary files a/third_party/gfootball_engine/data/media/objects/helpers/red.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/objects/helpers/smalldebugcircle.ase b/third_party/gfootball_engine/data/media/objects/helpers/smalldebugcircle.ase deleted file mode 100755 index 60a29df8..00000000 --- a/third_party/gfootball_engine/data/media/objects/helpers/smalldebugcircle.ase +++ /dev/null @@ -1,762 +0,0 @@ -*3DSMAX_ASCIIEXPORT 200 -*COMMENT "AsciiExport Version 2.00 - Mon Jun 20 17:35:01 2011" -*SCENE { - *SCENE_FILENAME "smalldebugcircle.max" - *SCENE_FIRSTFRAME 0 - *SCENE_LASTFRAME 100 - *SCENE_FRAMESPEED 30 - *SCENE_TICKSPERFRAME 160 - *SCENE_BACKGROUND_STATIC 0.0000 0.0000 0.0000 - *SCENE_AMBIENT_STATIC 0.0000 0.0000 0.0000 -} -*MATERIAL_LIST { - *MATERIAL_COUNT 1 - *MATERIAL 0 { - *MATERIAL_NAME "01 - Default" - *MATERIAL_CLASS "Standard" - *MATERIAL_AMBIENT 0.5882 0.5882 0.5882 - *MATERIAL_DIFFUSE 0.5882 0.5882 0.5882 - *MATERIAL_SPECULAR 0.9000 0.9000 0.9000 - *MATERIAL_SHINE 0.1000 - *MATERIAL_SHINESTRENGTH 0.0000 - *MATERIAL_TRANSPARENCY 0.0000 - *MATERIAL_WIRESIZE 1.0000 - *MATERIAL_SHADING Blinn - *MATERIAL_XP_FALLOFF 0.0000 - *MATERIAL_SELFILLUM 0.0000 - *MATERIAL_FALLOFF In - *MATERIAL_XP_TYPE Filter - *MAP_DIFFUSE { - *MAP_NAME "Map #1" - *MAP_CLASS "Bitmap" - *MAP_SUBNO 1 - *MAP_AMOUNT 1.0000 - *BITMAP "media/objects/helpers/green.png" - *MAP_TYPE Screen - *UVW_U_OFFSET 0.0000 - *UVW_V_OFFSET 0.0000 - *UVW_U_TILING 1.0000 - *UVW_V_TILING 1.0000 - *UVW_ANGLE 0.0000 - *UVW_BLUR 1.0000 - *UVW_BLUR_OFFSET 0.0000 - *UVW_NOUSE_AMT 1.0000 - *UVW_NOISE_SIZE 1.0000 - *UVW_NOISE_LEVEL 1 - *UVW_NOISE_PHASE 0.0000 - *BITMAP_FILTER Pyramidal - } - } -} -*GEOMOBJECT { - *NODE_NAME "Torus01" - *NODE_TM { - *NODE_NAME "Torus01" - *INHERIT_POS 0 0 0 - *INHERIT_ROT 0 0 0 - *INHERIT_SCL 0 0 0 - *TM_ROW0 1.0000 0.0000 0.0000 - *TM_ROW1 0.0000 1.0000 0.0000 - *TM_ROW2 0.0000 0.0000 1.0000 - *TM_ROW3 0.0000 0.0000 0.0000 - *TM_POS 0.0000 0.0000 0.0000 - *TM_ROTAXIS 0.0000 0.0000 0.0000 - *TM_ROTANGLE 0.0000 - *TM_SCALE 1.0000 1.0000 1.0000 - *TM_SCALEAXIS 0.0000 0.0000 0.0000 - *TM_SCALEAXISANG 0.0000 - } - *MESH { - *TIMEVALUE 0 - *MESH_NUMVERTEX 48 - *MESH_NUMFACES 96 - *MESH_VERTEX_LIST { - *MESH_VERTEX 0 -0.0000 1.0707 0.0707 - *MESH_VERTEX 1 -0.0000 0.9293 0.0707 - *MESH_VERTEX 2 -0.0000 0.9293 -0.0707 - *MESH_VERTEX 3 -0.0000 1.0707 -0.0707 - *MESH_VERTEX 4 0.5354 0.9273 0.0707 - *MESH_VERTEX 5 0.4646 0.8048 0.0707 - *MESH_VERTEX 6 0.4646 0.8048 -0.0707 - *MESH_VERTEX 7 0.5354 0.9273 -0.0707 - *MESH_VERTEX 8 0.9273 0.5354 0.0707 - *MESH_VERTEX 9 0.8048 0.4646 0.0707 - *MESH_VERTEX 10 0.8048 0.4646 -0.0707 - *MESH_VERTEX 11 0.9273 0.5354 -0.0707 - *MESH_VERTEX 12 1.0707 0.0000 0.0707 - *MESH_VERTEX 13 0.9293 0.0000 0.0707 - *MESH_VERTEX 14 0.9293 0.0000 -0.0707 - *MESH_VERTEX 15 1.0707 0.0000 -0.0707 - *MESH_VERTEX 16 0.9273 -0.5354 0.0707 - *MESH_VERTEX 17 0.8048 -0.4646 0.0707 - *MESH_VERTEX 18 0.8048 -0.4646 -0.0707 - *MESH_VERTEX 19 0.9273 -0.5354 -0.0707 - *MESH_VERTEX 20 0.5354 -0.9273 0.0707 - *MESH_VERTEX 21 0.4646 -0.8048 0.0707 - *MESH_VERTEX 22 0.4646 -0.8048 -0.0707 - *MESH_VERTEX 23 0.5354 -0.9273 -0.0707 - *MESH_VERTEX 24 -0.0000 -1.0707 0.0707 - *MESH_VERTEX 25 -0.0000 -0.9293 0.0707 - *MESH_VERTEX 26 -0.0000 -0.9293 -0.0707 - *MESH_VERTEX 27 -0.0000 -1.0707 -0.0707 - *MESH_VERTEX 28 -0.5354 -0.9273 0.0707 - *MESH_VERTEX 29 -0.4646 -0.8048 0.0707 - *MESH_VERTEX 30 -0.4646 -0.8048 -0.0707 - *MESH_VERTEX 31 -0.5354 -0.9273 -0.0707 - *MESH_VERTEX 32 -0.9273 -0.5354 0.0707 - *MESH_VERTEX 33 -0.8048 -0.4646 0.0707 - *MESH_VERTEX 34 -0.8048 -0.4646 -0.0707 - *MESH_VERTEX 35 -0.9273 -0.5354 -0.0707 - *MESH_VERTEX 36 -1.0707 -0.0000 0.0707 - *MESH_VERTEX 37 -0.9293 -0.0000 0.0707 - *MESH_VERTEX 38 -0.9293 -0.0000 -0.0707 - *MESH_VERTEX 39 -1.0707 -0.0000 -0.0707 - *MESH_VERTEX 40 -0.9273 0.5354 0.0707 - *MESH_VERTEX 41 -0.8048 0.4646 0.0707 - *MESH_VERTEX 42 -0.8048 0.4646 -0.0707 - *MESH_VERTEX 43 -0.9273 0.5354 -0.0707 - *MESH_VERTEX 44 -0.5354 0.9273 0.0707 - *MESH_VERTEX 45 -0.4646 0.8048 0.0707 - *MESH_VERTEX 46 -0.4646 0.8048 -0.0707 - *MESH_VERTEX 47 -0.5354 0.9273 -0.0707 - } - *MESH_FACE_LIST { - *MESH_FACE 0: A: 0 B: 5 C: 4 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 1: A: 0 B: 1 C: 5 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 2: A: 1 B: 6 C: 5 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 3: A: 1 B: 2 C: 6 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 4: A: 2 B: 7 C: 6 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 5: A: 2 B: 3 C: 7 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 6: A: 3 B: 4 C: 7 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 7: A: 3 B: 0 C: 4 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 8: A: 4 B: 9 C: 8 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 9: A: 4 B: 5 C: 9 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 10: A: 5 B: 10 C: 9 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 11: A: 5 B: 6 C: 10 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 12: A: 6 B: 11 C: 10 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 13: A: 6 B: 7 C: 11 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 14: A: 7 B: 8 C: 11 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 15: A: 7 B: 4 C: 8 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 16: A: 8 B: 13 C: 12 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 17: A: 8 B: 9 C: 13 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 18: A: 9 B: 14 C: 13 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 19: A: 9 B: 10 C: 14 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 20: A: 10 B: 15 C: 14 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 21: A: 10 B: 11 C: 15 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 22: A: 11 B: 12 C: 15 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 23: A: 11 B: 8 C: 12 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 24: A: 12 B: 17 C: 16 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 25: A: 12 B: 13 C: 17 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 26: A: 13 B: 18 C: 17 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 27: A: 13 B: 14 C: 18 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 28: A: 14 B: 19 C: 18 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 29: A: 14 B: 15 C: 19 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 30: A: 15 B: 16 C: 19 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 31: A: 15 B: 12 C: 16 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 32: A: 16 B: 21 C: 20 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 33: A: 16 B: 17 C: 21 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 34: A: 17 B: 22 C: 21 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 35: A: 17 B: 18 C: 22 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 36: A: 18 B: 23 C: 22 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 37: A: 18 B: 19 C: 23 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 38: A: 19 B: 20 C: 23 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 39: A: 19 B: 16 C: 20 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 40: A: 20 B: 25 C: 24 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 41: A: 20 B: 21 C: 25 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 42: A: 21 B: 26 C: 25 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 43: A: 21 B: 22 C: 26 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 44: A: 22 B: 27 C: 26 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 45: A: 22 B: 23 C: 27 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 46: A: 23 B: 24 C: 27 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 47: A: 23 B: 20 C: 24 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 48: A: 24 B: 29 C: 28 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 49: A: 24 B: 25 C: 29 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 50: A: 25 B: 30 C: 29 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 51: A: 25 B: 26 C: 30 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 52: A: 26 B: 31 C: 30 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 53: A: 26 B: 27 C: 31 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 54: A: 27 B: 28 C: 31 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 55: A: 27 B: 24 C: 28 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 56: A: 28 B: 33 C: 32 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 57: A: 28 B: 29 C: 33 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 58: A: 29 B: 34 C: 33 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 59: A: 29 B: 30 C: 34 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 60: A: 30 B: 35 C: 34 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 61: A: 30 B: 31 C: 35 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 62: A: 31 B: 32 C: 35 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 63: A: 31 B: 28 C: 32 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 64: A: 32 B: 37 C: 36 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 65: A: 32 B: 33 C: 37 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 66: A: 33 B: 38 C: 37 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 67: A: 33 B: 34 C: 38 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 68: A: 34 B: 39 C: 38 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 69: A: 34 B: 35 C: 39 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 70: A: 35 B: 36 C: 39 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 71: A: 35 B: 32 C: 36 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 72: A: 36 B: 41 C: 40 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 73: A: 36 B: 37 C: 41 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 74: A: 37 B: 42 C: 41 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 75: A: 37 B: 38 C: 42 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 76: A: 38 B: 43 C: 42 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 77: A: 38 B: 39 C: 43 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 78: A: 39 B: 40 C: 43 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 79: A: 39 B: 36 C: 40 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 80: A: 40 B: 45 C: 44 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 81: A: 40 B: 41 C: 45 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 82: A: 41 B: 46 C: 45 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 83: A: 41 B: 42 C: 46 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 84: A: 42 B: 47 C: 46 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 85: A: 42 B: 43 C: 47 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 86: A: 43 B: 44 C: 47 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 87: A: 43 B: 40 C: 44 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 88: A: 44 B: 1 C: 0 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 89: A: 44 B: 45 C: 1 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 90: A: 45 B: 2 C: 1 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 91: A: 45 B: 46 C: 2 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 92: A: 46 B: 3 C: 2 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 93: A: 46 B: 47 C: 3 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 94: A: 47 B: 0 C: 3 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 - *MESH_FACE 95: A: 47 B: 44 C: 0 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING *MESH_MTLID 0 - } - *MESH_NUMTVERTEX 48 - *MESH_TVERTLIST { - *MESH_TVERT 0 0.5000 0.9686 0.7498 - *MESH_TVERT 1 0.5000 0.9067 0.7498 - *MESH_TVERT 2 0.5000 0.9067 0.2502 - *MESH_TVERT 3 0.5000 0.9686 0.2502 - *MESH_TVERT 4 0.7343 0.9058 0.7498 - *MESH_TVERT 5 0.7033 0.8522 0.7498 - *MESH_TVERT 6 0.7033 0.8522 0.2502 - *MESH_TVERT 7 0.7343 0.9058 0.2502 - *MESH_TVERT 8 0.9058 0.7343 0.7498 - *MESH_TVERT 9 0.8522 0.7033 0.7498 - *MESH_TVERT 10 0.8522 0.7033 0.2502 - *MESH_TVERT 11 0.9058 0.7343 0.2502 - *MESH_TVERT 12 0.9686 0.5000 0.7498 - *MESH_TVERT 13 0.9067 0.5000 0.7498 - *MESH_TVERT 14 0.9067 0.5000 0.2502 - *MESH_TVERT 15 0.9686 0.5000 0.2502 - *MESH_TVERT 16 0.9058 0.2657 0.7498 - *MESH_TVERT 17 0.8522 0.2967 0.7498 - *MESH_TVERT 18 0.8522 0.2967 0.2502 - *MESH_TVERT 19 0.9058 0.2657 0.2502 - *MESH_TVERT 20 0.7343 0.0942 0.7498 - *MESH_TVERT 21 0.7033 0.1478 0.7498 - *MESH_TVERT 22 0.7033 0.1478 0.2502 - *MESH_TVERT 23 0.7343 0.0942 0.2502 - *MESH_TVERT 24 0.5000 0.0314 0.7498 - *MESH_TVERT 25 0.5000 0.0933 0.7498 - *MESH_TVERT 26 0.5000 0.0933 0.2502 - *MESH_TVERT 27 0.5000 0.0314 0.2502 - *MESH_TVERT 28 0.2657 0.0942 0.7498 - *MESH_TVERT 29 0.2967 0.1478 0.7498 - *MESH_TVERT 30 0.2967 0.1478 0.2502 - *MESH_TVERT 31 0.2657 0.0942 0.2502 - *MESH_TVERT 32 0.0942 0.2657 0.7498 - *MESH_TVERT 33 0.1478 0.2967 0.7498 - *MESH_TVERT 34 0.1478 0.2967 0.2502 - *MESH_TVERT 35 0.0942 0.2657 0.2502 - *MESH_TVERT 36 0.0314 0.5000 0.7498 - *MESH_TVERT 37 0.0933 0.5000 0.7498 - *MESH_TVERT 38 0.0933 0.5000 0.2502 - *MESH_TVERT 39 0.0314 0.5000 0.2502 - *MESH_TVERT 40 0.0942 0.7343 0.7498 - *MESH_TVERT 41 0.1478 0.7033 0.7498 - *MESH_TVERT 42 0.1478 0.7033 0.2502 - *MESH_TVERT 43 0.0942 0.7343 0.2502 - *MESH_TVERT 44 0.2657 0.9058 0.7498 - *MESH_TVERT 45 0.2967 0.8522 0.7498 - *MESH_TVERT 46 0.2967 0.8522 0.2502 - *MESH_TVERT 47 0.2657 0.9058 0.2502 - } - *MESH_NUMTVFACES 96 - *MESH_TFACELIST { - *MESH_TFACE 0 0 5 4 - *MESH_TFACE 1 0 1 5 - *MESH_TFACE 2 1 6 5 - *MESH_TFACE 3 1 2 6 - *MESH_TFACE 4 2 7 6 - *MESH_TFACE 5 2 3 7 - *MESH_TFACE 6 3 4 7 - *MESH_TFACE 7 3 0 4 - *MESH_TFACE 8 4 9 8 - *MESH_TFACE 9 4 5 9 - *MESH_TFACE 10 5 10 9 - *MESH_TFACE 11 5 6 10 - *MESH_TFACE 12 6 11 10 - *MESH_TFACE 13 6 7 11 - *MESH_TFACE 14 7 8 11 - *MESH_TFACE 15 7 4 8 - *MESH_TFACE 16 8 13 12 - *MESH_TFACE 17 8 9 13 - *MESH_TFACE 18 9 14 13 - *MESH_TFACE 19 9 10 14 - *MESH_TFACE 20 10 15 14 - *MESH_TFACE 21 10 11 15 - *MESH_TFACE 22 11 12 15 - *MESH_TFACE 23 11 8 12 - *MESH_TFACE 24 12 17 16 - *MESH_TFACE 25 12 13 17 - *MESH_TFACE 26 13 18 17 - *MESH_TFACE 27 13 14 18 - *MESH_TFACE 28 14 19 18 - *MESH_TFACE 29 14 15 19 - *MESH_TFACE 30 15 16 19 - *MESH_TFACE 31 15 12 16 - *MESH_TFACE 32 16 21 20 - *MESH_TFACE 33 16 17 21 - *MESH_TFACE 34 17 22 21 - *MESH_TFACE 35 17 18 22 - *MESH_TFACE 36 18 23 22 - *MESH_TFACE 37 18 19 23 - *MESH_TFACE 38 19 20 23 - *MESH_TFACE 39 19 16 20 - *MESH_TFACE 40 20 25 24 - *MESH_TFACE 41 20 21 25 - *MESH_TFACE 42 21 26 25 - *MESH_TFACE 43 21 22 26 - *MESH_TFACE 44 22 27 26 - *MESH_TFACE 45 22 23 27 - *MESH_TFACE 46 23 24 27 - *MESH_TFACE 47 23 20 24 - *MESH_TFACE 48 24 29 28 - *MESH_TFACE 49 24 25 29 - *MESH_TFACE 50 25 30 29 - *MESH_TFACE 51 25 26 30 - *MESH_TFACE 52 26 31 30 - *MESH_TFACE 53 26 27 31 - *MESH_TFACE 54 27 28 31 - *MESH_TFACE 55 27 24 28 - *MESH_TFACE 56 28 33 32 - *MESH_TFACE 57 28 29 33 - *MESH_TFACE 58 29 34 33 - *MESH_TFACE 59 29 30 34 - *MESH_TFACE 60 30 35 34 - *MESH_TFACE 61 30 31 35 - *MESH_TFACE 62 31 32 35 - *MESH_TFACE 63 31 28 32 - *MESH_TFACE 64 32 37 36 - *MESH_TFACE 65 32 33 37 - *MESH_TFACE 66 33 38 37 - *MESH_TFACE 67 33 34 38 - *MESH_TFACE 68 34 39 38 - *MESH_TFACE 69 34 35 39 - *MESH_TFACE 70 35 36 39 - *MESH_TFACE 71 35 32 36 - *MESH_TFACE 72 36 41 40 - *MESH_TFACE 73 36 37 41 - *MESH_TFACE 74 37 42 41 - *MESH_TFACE 75 37 38 42 - *MESH_TFACE 76 38 43 42 - *MESH_TFACE 77 38 39 43 - *MESH_TFACE 78 39 40 43 - *MESH_TFACE 79 39 36 40 - *MESH_TFACE 80 40 45 44 - *MESH_TFACE 81 40 41 45 - *MESH_TFACE 82 41 46 45 - *MESH_TFACE 83 41 42 46 - *MESH_TFACE 84 42 47 46 - *MESH_TFACE 85 42 43 47 - *MESH_TFACE 86 43 44 47 - *MESH_TFACE 87 43 40 44 - *MESH_TFACE 88 44 1 0 - *MESH_TFACE 89 44 45 1 - *MESH_TFACE 90 45 2 1 - *MESH_TFACE 91 45 46 2 - *MESH_TFACE 92 46 3 2 - *MESH_TFACE 93 46 47 3 - *MESH_TFACE 94 47 0 3 - *MESH_TFACE 95 47 44 0 - } - *MESH_NORMALS { - *MESH_FACENORMAL 0 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 0 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 -0.0000 1.0000 - *MESH_FACENORMAL 1 -0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 0 -0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 1 -0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 5 -0.0000 -0.0000 1.0000 - *MESH_FACENORMAL 2 -0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 1 -0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 6 -0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 5 -0.2588 -0.9659 0.0000 - *MESH_FACENORMAL 3 -0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 1 -0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 2 -0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 6 -0.2588 -0.9659 0.0000 - *MESH_FACENORMAL 4 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 5 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 6 0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 3 0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 4 0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 7 0.2588 0.9659 0.0000 - *MESH_FACENORMAL 7 0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 3 0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 0 0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 4 0.2588 0.9659 0.0000 - *MESH_FACENORMAL 8 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 8 0.0000 -0.0000 1.0000 - *MESH_FACENORMAL 9 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 -0.0000 0.0000 1.0000 - *MESH_FACENORMAL 10 -0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 5 -0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 10 -0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 9 -0.7071 -0.7071 0.0000 - *MESH_FACENORMAL 11 -0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 5 -0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 6 -0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 10 -0.7071 -0.7071 0.0000 - *MESH_FACENORMAL 12 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 13 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 14 0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 7 0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 8 0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 11 0.7071 0.7071 0.0000 - *MESH_FACENORMAL 15 0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 7 0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 4 0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 8 0.7071 0.7071 0.0000 - *MESH_FACENORMAL 16 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 8 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 13 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 12 0.0000 -0.0000 1.0000 - *MESH_FACENORMAL 17 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 8 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 13 -0.0000 0.0000 1.0000 - *MESH_FACENORMAL 18 -0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 9 -0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 14 -0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 13 -0.9659 -0.2588 0.0000 - *MESH_FACENORMAL 19 -0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 9 -0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 10 -0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 14 -0.9659 -0.2588 0.0000 - *MESH_FACENORMAL 20 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 15 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 14 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 21 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 15 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 22 0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 11 0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 12 0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 15 0.9659 0.2588 0.0000 - *MESH_FACENORMAL 23 0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 11 0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 8 0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 12 0.9659 0.2588 0.0000 - *MESH_FACENORMAL 24 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 12 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 17 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 16 -0.0000 0.0000 1.0000 - *MESH_FACENORMAL 25 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 12 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 13 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 17 -0.0000 0.0000 1.0000 - *MESH_FACENORMAL 26 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 13 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 18 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 17 -0.9659 0.2588 0.0000 - *MESH_FACENORMAL 27 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 13 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 14 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 18 -0.9659 0.2588 0.0000 - *MESH_FACENORMAL 28 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 14 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 19 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 18 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 29 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 14 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 15 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 19 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 30 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 15 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 16 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 19 0.9659 -0.2588 0.0000 - *MESH_FACENORMAL 31 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 15 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 12 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 16 0.9659 -0.2588 0.0000 - *MESH_FACENORMAL 32 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 16 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 21 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 20 -0.0000 0.0000 1.0000 - *MESH_FACENORMAL 33 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 16 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 17 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 21 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 34 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 17 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 22 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 21 -0.7071 0.7071 0.0000 - *MESH_FACENORMAL 35 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 17 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 18 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 22 -0.7071 0.7071 0.0000 - *MESH_FACENORMAL 36 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 18 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 23 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 22 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 37 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 18 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 19 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 23 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 38 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 19 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 20 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 23 0.7071 -0.7071 0.0000 - *MESH_FACENORMAL 39 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 19 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 16 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 20 0.7071 -0.7071 0.0000 - *MESH_FACENORMAL 40 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 20 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 25 -0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 24 -0.0000 0.0000 1.0000 - *MESH_FACENORMAL 41 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 20 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 21 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 25 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 42 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 21 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 26 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 25 -0.2588 0.9659 0.0000 - *MESH_FACENORMAL 43 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 21 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 22 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 26 -0.2588 0.9659 0.0000 - *MESH_FACENORMAL 44 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 22 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 27 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 26 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 45 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 22 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 23 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 27 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 46 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 23 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 24 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 27 0.2588 -0.9659 0.0000 - *MESH_FACENORMAL 47 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 23 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 20 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 24 0.2588 -0.9659 0.0000 - *MESH_FACENORMAL 48 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 24 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 29 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 49 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 24 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 25 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 29 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 50 0.2588 0.9659 -0.0000 - *MESH_VERTEXNORMAL 25 0.2588 0.9659 -0.0000 - *MESH_VERTEXNORMAL 30 0.2588 0.9659 -0.0000 - *MESH_VERTEXNORMAL 29 0.2588 0.9659 -0.0000 - *MESH_FACENORMAL 51 0.2588 0.9659 -0.0000 - *MESH_VERTEXNORMAL 25 0.2588 0.9659 -0.0000 - *MESH_VERTEXNORMAL 26 0.2588 0.9659 -0.0000 - *MESH_VERTEXNORMAL 30 0.2588 0.9659 -0.0000 - *MESH_FACENORMAL 52 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 26 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 31 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 30 -0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 53 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 26 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 27 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 31 -0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 54 -0.2588 -0.9659 -0.0000 - *MESH_VERTEXNORMAL 27 -0.2588 -0.9659 -0.0000 - *MESH_VERTEXNORMAL 28 -0.2588 -0.9659 -0.0000 - *MESH_VERTEXNORMAL 31 -0.2588 -0.9659 -0.0000 - *MESH_FACENORMAL 55 -0.2588 -0.9659 -0.0000 - *MESH_VERTEXNORMAL 27 -0.2588 -0.9659 -0.0000 - *MESH_VERTEXNORMAL 24 -0.2588 -0.9659 -0.0000 - *MESH_VERTEXNORMAL 28 -0.2588 -0.9659 -0.0000 - *MESH_FACENORMAL 56 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 33 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 32 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 57 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 29 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 33 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 58 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 29 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 34 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 33 0.7071 0.7071 -0.0000 - *MESH_FACENORMAL 59 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 29 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 30 0.7071 0.7071 -0.0000 - *MESH_VERTEXNORMAL 34 0.7071 0.7071 -0.0000 - *MESH_FACENORMAL 60 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 30 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 35 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 34 -0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 61 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 30 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 31 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 35 -0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 62 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 31 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 32 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 35 -0.7071 -0.7071 -0.0000 - *MESH_FACENORMAL 63 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 31 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 28 -0.7071 -0.7071 -0.0000 - *MESH_VERTEXNORMAL 32 -0.7071 -0.7071 -0.0000 - *MESH_FACENORMAL 64 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 32 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 37 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 36 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 65 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 32 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 33 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 37 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 66 0.9659 0.2588 -0.0000 - *MESH_VERTEXNORMAL 33 0.9659 0.2588 -0.0000 - *MESH_VERTEXNORMAL 38 0.9659 0.2588 -0.0000 - *MESH_VERTEXNORMAL 37 0.9659 0.2588 -0.0000 - *MESH_FACENORMAL 67 0.9659 0.2588 -0.0000 - *MESH_VERTEXNORMAL 33 0.9659 0.2588 -0.0000 - *MESH_VERTEXNORMAL 34 0.9659 0.2588 -0.0000 - *MESH_VERTEXNORMAL 38 0.9659 0.2588 -0.0000 - *MESH_FACENORMAL 68 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 34 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 39 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 38 -0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 69 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 34 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 35 -0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 39 -0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 70 -0.9659 -0.2588 -0.0000 - *MESH_VERTEXNORMAL 35 -0.9659 -0.2588 -0.0000 - *MESH_VERTEXNORMAL 36 -0.9659 -0.2588 -0.0000 - *MESH_VERTEXNORMAL 39 -0.9659 -0.2588 -0.0000 - *MESH_FACENORMAL 71 -0.9659 -0.2588 -0.0000 - *MESH_VERTEXNORMAL 35 -0.9659 -0.2588 -0.0000 - *MESH_VERTEXNORMAL 32 -0.9659 -0.2588 -0.0000 - *MESH_VERTEXNORMAL 36 -0.9659 -0.2588 -0.0000 - *MESH_FACENORMAL 72 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 36 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 41 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 40 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 73 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 36 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 37 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 41 0.0000 -0.0000 1.0000 - *MESH_FACENORMAL 74 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 37 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 42 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 41 0.9659 -0.2588 0.0000 - *MESH_FACENORMAL 75 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 37 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 38 0.9659 -0.2588 0.0000 - *MESH_VERTEXNORMAL 42 0.9659 -0.2588 0.0000 - *MESH_FACENORMAL 76 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 38 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 43 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 42 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 77 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 38 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 39 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 43 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 78 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 39 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 40 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 43 -0.9659 0.2588 0.0000 - *MESH_FACENORMAL 79 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 39 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 36 -0.9659 0.2588 0.0000 - *MESH_VERTEXNORMAL 40 -0.9659 0.2588 0.0000 - *MESH_FACENORMAL 80 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 40 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 45 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 44 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 81 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 40 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 41 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 45 0.0000 -0.0000 1.0000 - *MESH_FACENORMAL 82 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 41 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 46 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 45 0.7071 -0.7071 0.0000 - *MESH_FACENORMAL 83 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 41 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 42 0.7071 -0.7071 0.0000 - *MESH_VERTEXNORMAL 46 0.7071 -0.7071 0.0000 - *MESH_FACENORMAL 84 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 42 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 47 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 46 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 85 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 42 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 43 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 47 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 86 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 43 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 44 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 47 -0.7071 0.7071 0.0000 - *MESH_FACENORMAL 87 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 43 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 40 -0.7071 0.7071 0.0000 - *MESH_VERTEXNORMAL 44 -0.7071 0.7071 0.0000 - *MESH_FACENORMAL 88 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 44 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 89 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 44 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 45 0.0000 -0.0000 1.0000 - *MESH_VERTEXNORMAL 1 0.0000 -0.0000 1.0000 - *MESH_FACENORMAL 90 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 45 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 2 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 1 0.2588 -0.9659 0.0000 - *MESH_FACENORMAL 91 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 45 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 46 0.2588 -0.9659 0.0000 - *MESH_VERTEXNORMAL 2 0.2588 -0.9659 0.0000 - *MESH_FACENORMAL 92 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 46 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 3 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 93 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 46 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 47 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 3 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 94 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 47 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 0 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 3 -0.2588 0.9659 0.0000 - *MESH_FACENORMAL 95 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 47 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 44 -0.2588 0.9659 0.0000 - *MESH_VERTEXNORMAL 0 -0.2588 0.9659 0.0000 - } - } - *PROP_MOTIONBLUR 0 - *PROP_CASTSHADOW 1 - *PROP_RECVSHADOW 1 - *MATERIAL_REF 0 -} diff --git a/third_party/gfootball_engine/data/media/objects/helpers/yellow.ase b/third_party/gfootball_engine/data/media/objects/helpers/yellow.ase deleted file mode 100755 index 54027b74..00000000 --- a/third_party/gfootball_engine/data/media/objects/helpers/yellow.ase +++ /dev/null @@ -1,804 +0,0 @@ -*3DSMAX_ASCIIEXPORT 200 -*COMMENT "AsciiExport Version 2.00 - Wed Aug 11 02:14:06 2010" -*SCENE { - *SCENE_FILENAME "pilon.max" - *SCENE_FIRSTFRAME 0 - *SCENE_LASTFRAME 100 - *SCENE_FRAMESPEED 30 - *SCENE_TICKSPERFRAME 160 - *SCENE_BACKGROUND_STATIC 0.0000 0.0000 0.0000 - *SCENE_AMBIENT_STATIC 0.0000 0.0000 0.0000 -} -*MATERIAL_LIST { - *MATERIAL_COUNT 2 - *MATERIAL 0 { - *MATERIAL_NAME "01 - Default" - *MATERIAL_CLASS "Standard" - *MATERIAL_AMBIENT 0.5882 0.5882 0.5882 - *MATERIAL_DIFFUSE 0.5882 0.5882 0.5882 - *MATERIAL_SPECULAR 0.9000 0.9000 0.9000 - *MATERIAL_SHINE 0.1000 - *MATERIAL_SHINESTRENGTH 0.0000 - *MATERIAL_TRANSPARENCY 0.0000 - *MATERIAL_WIRESIZE 1.0000 - *MATERIAL_SHADING Blinn - *MATERIAL_XP_FALLOFF 0.0000 - *MATERIAL_SELFILLUM 0.6000 - *MATERIAL_FALLOFF In - *MATERIAL_XP_TYPE Filter - *MAP_DIFFUSE { - *MAP_NAME "Map #1" - *MAP_CLASS "Bitmap" - *MAP_SUBNO 1 - *MAP_AMOUNT 1.0000 - *BITMAP "media/objects/helpers/yellow.png" - *MAP_TYPE Screen - *UVW_U_OFFSET 0.0000 - *UVW_V_OFFSET 0.0000 - *UVW_U_TILING 1.0000 - *UVW_V_TILING 1.0000 - *UVW_ANGLE 0.0000 - *UVW_BLUR 1.0000 - *UVW_BLUR_OFFSET 0.0000 - *UVW_NOUSE_AMT 1.0000 - *UVW_NOISE_SIZE 1.0000 - *UVW_NOISE_LEVEL 1 - *UVW_NOISE_PHASE 0.0000 - *BITMAP_FILTER Pyramidal - } - } - *MATERIAL 1 { - *MATERIAL_NAME "white" - *MATERIAL_CLASS "Standard" - *MATERIAL_AMBIENT 0.5882 0.5882 0.5882 - *MATERIAL_DIFFUSE 0.5882 0.5882 0.5882 - *MATERIAL_SPECULAR 0.9000 0.9000 0.9000 - *MATERIAL_SHINE 0.2200 - *MATERIAL_SHINESTRENGTH 0.6300 - *MATERIAL_TRANSPARENCY 0.0000 - *MATERIAL_WIRESIZE 1.0000 - *MATERIAL_SHADING Blinn - *MATERIAL_XP_FALLOFF 0.0000 - *MATERIAL_SELFILLUM 0.6000 - *MATERIAL_FALLOFF In - *MATERIAL_XP_TYPE Filter - *MAP_DIFFUSE { - *MAP_NAME "Map #2" - *MAP_CLASS "Bitmap" - *MAP_SUBNO 1 - *MAP_AMOUNT 1.0000 - *BITMAP "media/textures/white.png" - *MAP_TYPE Screen - *UVW_U_OFFSET 0.0000 - *UVW_V_OFFSET 0.0000 - *UVW_U_TILING 1.0000 - *UVW_V_TILING 1.0000 - *UVW_ANGLE 0.0000 - *UVW_BLUR 1.0000 - *UVW_BLUR_OFFSET 0.0000 - *UVW_NOUSE_AMT 1.0000 - *UVW_NOISE_SIZE 1.0000 - *UVW_NOISE_LEVEL 1 - *UVW_NOISE_PHASE 0.0000 - *BITMAP_FILTER Pyramidal - } - } -} -*GEOMOBJECT { - *NODE_NAME "Cone01" - *NODE_TM { - *NODE_NAME "Cone01" - *INHERIT_POS 0 0 0 - *INHERIT_ROT 0 0 0 - *INHERIT_SCL 0 0 0 - *TM_ROW0 1.0000 0.0000 0.0000 - *TM_ROW1 0.0000 1.0000 0.0000 - *TM_ROW2 0.0000 0.0000 1.0000 - *TM_ROW3 0.0000 0.0000 0.0000 - *TM_POS 0.0000 0.0000 0.0000 - *TM_ROTAXIS 0.0000 0.0000 0.0000 - *TM_ROTANGLE 0.0000 - *TM_SCALE 1.0000 1.0000 1.0000 - *TM_SCALEAXIS 0.0000 0.0000 0.0000 - *TM_SCALEAXISANG 0.0000 - } - *MESH { - *TIMEVALUE 0 - *MESH_NUMVERTEX 34 - *MESH_NUMFACES 64 - *MESH_VERTEX_LIST { - *MESH_VERTEX 0 0.0000 0.0000 0.0000 - *MESH_VERTEX 1 0.1000 0.0000 0.0000 - *MESH_VERTEX 2 0.0924 0.0383 0.0000 - *MESH_VERTEX 3 0.0707 0.0707 0.0000 - *MESH_VERTEX 4 0.0383 0.0924 0.0000 - *MESH_VERTEX 5 -0.0000 0.1000 0.0000 - *MESH_VERTEX 6 -0.0383 0.0924 0.0000 - *MESH_VERTEX 7 -0.0707 0.0707 0.0000 - *MESH_VERTEX 8 -0.0924 0.0383 0.0000 - *MESH_VERTEX 9 -0.1000 0.0000 0.0000 - *MESH_VERTEX 10 -0.0924 -0.0383 0.0000 - *MESH_VERTEX 11 -0.0707 -0.0707 0.0000 - *MESH_VERTEX 12 -0.0383 -0.0924 0.0000 - *MESH_VERTEX 13 0.0000 -0.1000 0.0000 - *MESH_VERTEX 14 0.0383 -0.0924 0.0000 - *MESH_VERTEX 15 0.0707 -0.0707 0.0000 - *MESH_VERTEX 16 0.0924 -0.0383 0.0000 - *MESH_VERTEX 17 0.0000 0.0000 0.2000 - *MESH_VERTEX 18 0.0000 0.0000 0.2000 - *MESH_VERTEX 19 0.0000 0.0000 0.2000 - *MESH_VERTEX 20 0.0000 0.0000 0.2000 - *MESH_VERTEX 21 0.0000 0.0000 0.2000 - *MESH_VERTEX 22 0.0000 0.0000 0.2000 - *MESH_VERTEX 23 0.0000 0.0000 0.2000 - *MESH_VERTEX 24 0.0000 0.0000 0.2000 - *MESH_VERTEX 25 0.0000 0.0000 0.2000 - *MESH_VERTEX 26 0.0000 0.0000 0.2000 - *MESH_VERTEX 27 0.0000 0.0000 0.2000 - *MESH_VERTEX 28 0.0000 0.0000 0.2000 - *MESH_VERTEX 29 0.0000 0.0000 0.2000 - *MESH_VERTEX 30 0.0000 0.0000 0.2000 - *MESH_VERTEX 31 0.0000 0.0000 0.2000 - *MESH_VERTEX 32 0.0000 0.0000 0.2000 - *MESH_VERTEX 33 0.0000 0.0000 0.2000 - } - *MESH_FACE_LIST { - *MESH_FACE 0: A: 0 B: 2 C: 1 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 1: A: 0 B: 3 C: 2 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 2: A: 0 B: 4 C: 3 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 3: A: 0 B: 5 C: 4 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 4: A: 0 B: 6 C: 5 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 5: A: 0 B: 7 C: 6 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 6: A: 0 B: 8 C: 7 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 7: A: 0 B: 9 C: 8 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 8: A: 0 B: 10 C: 9 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 9: A: 0 B: 11 C: 10 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 10: A: 0 B: 12 C: 11 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 11: A: 0 B: 13 C: 12 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 12: A: 0 B: 14 C: 13 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 13: A: 0 B: 15 C: 14 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 14: A: 0 B: 16 C: 15 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 15: A: 0 B: 1 C: 16 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 - *MESH_FACE 16: A: 1 B: 18 C: 17 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 17: A: 1 B: 2 C: 18 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 18: A: 2 B: 19 C: 18 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 19: A: 2 B: 3 C: 19 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 20: A: 3 B: 20 C: 19 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 21: A: 3 B: 4 C: 20 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 22: A: 4 B: 21 C: 20 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 23: A: 4 B: 5 C: 21 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 24: A: 5 B: 22 C: 21 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 25: A: 5 B: 6 C: 22 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 26: A: 6 B: 23 C: 22 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 27: A: 6 B: 7 C: 23 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 28: A: 7 B: 24 C: 23 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 29: A: 7 B: 8 C: 24 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 30: A: 8 B: 25 C: 24 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 31: A: 8 B: 9 C: 25 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 32: A: 9 B: 26 C: 25 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 33: A: 9 B: 10 C: 26 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 34: A: 10 B: 27 C: 26 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 35: A: 10 B: 11 C: 27 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 36: A: 11 B: 28 C: 27 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 37: A: 11 B: 12 C: 28 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 38: A: 12 B: 29 C: 28 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 39: A: 12 B: 13 C: 29 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 40: A: 13 B: 30 C: 29 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 41: A: 13 B: 14 C: 30 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 42: A: 14 B: 31 C: 30 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 43: A: 14 B: 15 C: 31 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 44: A: 15 B: 32 C: 31 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 45: A: 15 B: 16 C: 32 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 46: A: 16 B: 17 C: 32 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 47: A: 16 B: 1 C: 17 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 2 - *MESH_FACE 48: A: 33 B: 17 C: 18 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 49: A: 33 B: 18 C: 19 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 50: A: 33 B: 19 C: 20 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 51: A: 33 B: 20 C: 21 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 52: A: 33 B: 21 C: 22 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 53: A: 33 B: 22 C: 23 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 54: A: 33 B: 23 C: 24 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 55: A: 33 B: 24 C: 25 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 56: A: 33 B: 25 C: 26 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 57: A: 33 B: 26 C: 27 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 58: A: 33 B: 27 C: 28 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 59: A: 33 B: 28 C: 29 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 60: A: 33 B: 29 C: 30 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 61: A: 33 B: 30 C: 31 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 62: A: 33 B: 31 C: 32 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - *MESH_FACE 63: A: 33 B: 32 C: 17 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 - } - *MESH_NUMTVERTEX 36 - *MESH_TVERTLIST { - *MESH_TVERT 0 0.5000 0.0000 0.0000 - *MESH_TVERT 1 0.7500 0.0000 1.0000 - *MESH_TVERT 2 0.8125 0.0000 1.0000 - *MESH_TVERT 3 0.8750 0.0000 1.0000 - *MESH_TVERT 4 0.9375 0.0000 1.0000 - *MESH_TVERT 5 0.0000 0.0000 1.0000 - *MESH_TVERT 6 0.0625 0.0000 1.0000 - *MESH_TVERT 7 0.1250 0.0000 1.0000 - *MESH_TVERT 8 0.1875 0.0000 1.0000 - *MESH_TVERT 9 0.2500 0.0000 1.0000 - *MESH_TVERT 10 0.3125 0.0000 1.0000 - *MESH_TVERT 11 0.3750 0.0000 1.0000 - *MESH_TVERT 12 0.4375 0.0000 1.0000 - *MESH_TVERT 13 0.5000 0.0000 1.0000 - *MESH_TVERT 14 0.5625 0.0000 1.0000 - *MESH_TVERT 15 0.6250 0.0000 1.0000 - *MESH_TVERT 16 0.6875 0.0000 1.0000 - *MESH_TVERT 17 0.5000 1.0000 0.0000 - *MESH_TVERT 18 0.5000 1.0000 0.0000 - *MESH_TVERT 19 0.5000 1.0000 0.0000 - *MESH_TVERT 20 0.5000 1.0000 0.0000 - *MESH_TVERT 21 0.5000 1.0000 0.0000 - *MESH_TVERT 22 0.5000 1.0000 0.0000 - *MESH_TVERT 23 0.5000 1.0000 0.0000 - *MESH_TVERT 24 0.5000 1.0000 0.0000 - *MESH_TVERT 25 0.5000 1.0000 0.0000 - *MESH_TVERT 26 0.5000 1.0000 0.0000 - *MESH_TVERT 27 0.5000 1.0000 0.0000 - *MESH_TVERT 28 0.5000 1.0000 0.0000 - *MESH_TVERT 29 0.5000 1.0000 0.0000 - *MESH_TVERT 30 0.5000 1.0000 0.0000 - *MESH_TVERT 31 0.5000 1.0000 0.0000 - *MESH_TVERT 32 0.5000 1.0000 0.0000 - *MESH_TVERT 33 0.5000 1.0000 0.0000 - *MESH_TVERT 34 -0.0625 0.0000 1.0000 - *MESH_TVERT 35 -0.0625 0.0000 1.0000 - } - *MESH_NUMTVFACES 64 - *MESH_TFACELIST { - *MESH_TFACE 0 0 2 1 - *MESH_TFACE 1 0 3 2 - *MESH_TFACE 2 0 4 3 - *MESH_TFACE 3 0 5 34 - *MESH_TFACE 4 0 6 5 - *MESH_TFACE 5 0 7 6 - *MESH_TFACE 6 0 8 7 - *MESH_TFACE 7 0 9 8 - *MESH_TFACE 8 0 10 9 - *MESH_TFACE 9 0 11 10 - *MESH_TFACE 10 0 12 11 - *MESH_TFACE 11 0 13 12 - *MESH_TFACE 12 0 14 13 - *MESH_TFACE 13 0 15 14 - *MESH_TFACE 14 0 16 15 - *MESH_TFACE 15 0 1 16 - *MESH_TFACE 16 1 18 17 - *MESH_TFACE 17 1 2 18 - *MESH_TFACE 18 2 19 18 - *MESH_TFACE 19 2 3 19 - *MESH_TFACE 20 3 20 19 - *MESH_TFACE 21 3 4 20 - *MESH_TFACE 22 4 21 20 - *MESH_TFACE 23 35 5 21 - *MESH_TFACE 24 5 22 21 - *MESH_TFACE 25 5 6 22 - *MESH_TFACE 26 6 23 22 - *MESH_TFACE 27 6 7 23 - *MESH_TFACE 28 7 24 23 - *MESH_TFACE 29 7 8 24 - *MESH_TFACE 30 8 25 24 - *MESH_TFACE 31 8 9 25 - *MESH_TFACE 32 9 26 25 - *MESH_TFACE 33 9 10 26 - *MESH_TFACE 34 10 27 26 - *MESH_TFACE 35 10 11 27 - *MESH_TFACE 36 11 28 27 - *MESH_TFACE 37 11 12 28 - *MESH_TFACE 38 12 29 28 - *MESH_TFACE 39 12 13 29 - *MESH_TFACE 40 13 30 29 - *MESH_TFACE 41 13 14 30 - *MESH_TFACE 42 14 31 30 - *MESH_TFACE 43 14 15 31 - *MESH_TFACE 44 15 32 31 - *MESH_TFACE 45 15 16 32 - *MESH_TFACE 46 16 17 32 - *MESH_TFACE 47 16 1 17 - *MESH_TFACE 48 33 17 18 - *MESH_TFACE 49 33 18 19 - *MESH_TFACE 50 33 19 20 - *MESH_TFACE 51 33 20 21 - *MESH_TFACE 52 33 21 22 - *MESH_TFACE 53 33 22 23 - *MESH_TFACE 54 33 23 24 - *MESH_TFACE 55 33 24 25 - *MESH_TFACE 56 33 25 26 - *MESH_TFACE 57 33 26 27 - *MESH_TFACE 58 33 27 28 - *MESH_TFACE 59 33 28 29 - *MESH_TFACE 60 33 29 30 - *MESH_TFACE 61 33 30 31 - *MESH_TFACE 62 33 31 32 - *MESH_TFACE 63 33 32 17 - } - *MESH_NORMALS { - *MESH_FACENORMAL 0 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 1 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 3 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 2 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 3 0.0000 -0.0000 -1.0000 - *MESH_FACENORMAL 3 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 4 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 5 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 9 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 10 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 12 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 11 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 13 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 12 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 12 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 14 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 13 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 13 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 15 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 14 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 14 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 16 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 15 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 15 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 16 -0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 16 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 1 0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 18 0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 17 0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 17 0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 1 0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 2 0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 18 0.8806 0.1752 0.4403 - *MESH_FACENORMAL 18 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 2 0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 19 0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 18 0.8806 0.1752 0.4403 - *MESH_FACENORMAL 19 0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 2 0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 3 0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 19 0.7465 0.4988 0.4403 - *MESH_FACENORMAL 20 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 3 0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 20 0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 19 0.7465 0.4988 0.4403 - *MESH_FACENORMAL 21 0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 3 0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 4 0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 20 0.4988 0.7465 0.4403 - *MESH_FACENORMAL 22 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 4 0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 21 0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 20 0.4988 0.7465 0.4403 - *MESH_FACENORMAL 23 0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 4 0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 5 0.0000 0.8944 0.4472 - *MESH_VERTEXNORMAL 21 0.1752 0.8806 0.4403 - *MESH_FACENORMAL 24 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.8944 0.4472 - *MESH_VERTEXNORMAL 22 -0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 21 0.1752 0.8806 0.4403 - *MESH_FACENORMAL 25 -0.1752 0.8806 0.4403 - *MESH_VERTEXNORMAL 5 0.0000 0.8944 0.4472 - *MESH_VERTEXNORMAL 6 -0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 22 -0.1752 0.8806 0.4403 - *MESH_FACENORMAL 26 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 6 -0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 23 -0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 22 -0.1752 0.8806 0.4403 - *MESH_FACENORMAL 27 -0.4988 0.7465 0.4403 - *MESH_VERTEXNORMAL 6 -0.3423 0.8263 0.4472 - *MESH_VERTEXNORMAL 7 -0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 23 -0.4988 0.7465 0.4403 - *MESH_FACENORMAL 28 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 7 -0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 24 -0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 23 -0.4988 0.7465 0.4403 - *MESH_FACENORMAL 29 -0.7465 0.4988 0.4403 - *MESH_VERTEXNORMAL 7 -0.6325 0.6325 0.4472 - *MESH_VERTEXNORMAL 8 -0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 24 -0.7465 0.4988 0.4403 - *MESH_FACENORMAL 30 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 8 -0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 25 -0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 24 -0.7465 0.4988 0.4403 - *MESH_FACENORMAL 31 -0.8806 0.1752 0.4403 - *MESH_VERTEXNORMAL 8 -0.8263 0.3423 0.4472 - *MESH_VERTEXNORMAL 9 -0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 25 -0.8806 0.1752 0.4403 - *MESH_FACENORMAL 32 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 9 -0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 26 -0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 25 -0.8806 0.1752 0.4403 - *MESH_FACENORMAL 33 -0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 9 -0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 10 -0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 26 -0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 34 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 10 -0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 27 -0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 26 -0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 35 -0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 10 -0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 11 -0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 27 -0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 36 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 11 -0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 28 -0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 27 -0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 37 -0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 11 -0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 12 -0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 28 -0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 38 0.0000 -0.0000 0.0000 - *MESH_VERTEXNORMAL 12 -0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 29 -0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 28 -0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 39 -0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 12 -0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 13 0.0000 -0.8944 0.4472 - *MESH_VERTEXNORMAL 29 -0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 40 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 13 0.0000 -0.8944 0.4472 - *MESH_VERTEXNORMAL 30 0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 29 -0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 41 0.1752 -0.8806 0.4403 - *MESH_VERTEXNORMAL 13 0.0000 -0.8944 0.4472 - *MESH_VERTEXNORMAL 14 0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 30 0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 42 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 14 0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 31 0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 30 0.1752 -0.8806 0.4403 - *MESH_FACENORMAL 43 0.4988 -0.7465 0.4403 - *MESH_VERTEXNORMAL 14 0.3423 -0.8263 0.4472 - *MESH_VERTEXNORMAL 15 0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 31 0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 44 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 15 0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 32 0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 31 0.4988 -0.7465 0.4403 - *MESH_FACENORMAL 45 0.7465 -0.4988 0.4403 - *MESH_VERTEXNORMAL 15 0.6325 -0.6325 0.4472 - *MESH_VERTEXNORMAL 16 0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 32 0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 46 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 16 0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 17 0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 32 0.7465 -0.4988 0.4403 - *MESH_FACENORMAL 47 0.8806 -0.1752 0.4403 - *MESH_VERTEXNORMAL 16 0.8263 -0.3423 0.4472 - *MESH_VERTEXNORMAL 1 0.8944 0.0000 0.4472 - *MESH_VERTEXNORMAL 17 0.8806 -0.1752 0.4403 - *MESH_FACENORMAL 48 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 17 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 18 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 49 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 18 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 19 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 50 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 19 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 20 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 51 0.0000 0.0000 -0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 20 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 21 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 52 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 21 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 22 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 53 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 22 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 23 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 54 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 23 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 24 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 55 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 24 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 25 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 56 -0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 25 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 26 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 57 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 26 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 27 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 58 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 27 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 28 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 59 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 28 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 29 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 60 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 29 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 30 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 61 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 30 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 31 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 62 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 31 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 32 1.0000 0.0000 0.0000 - *MESH_FACENORMAL 63 0.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 33 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 32 1.0000 0.0000 0.0000 - *MESH_VERTEXNORMAL 17 1.0000 0.0000 0.0000 - } - } - *PROP_MOTIONBLUR 0 - *PROP_CASTSHADOW 1 - *PROP_RECVSHADOW 1 - *MATERIAL_REF 0 -} -*GEOMOBJECT { - *NODE_NAME "Line01" - *NODE_TM { - *NODE_NAME "Line01" - *INHERIT_POS 0 0 0 - *INHERIT_ROT 0 0 0 - *INHERIT_SCL 0 0 0 - *TM_ROW0 1.0000 0.0000 0.0000 - *TM_ROW1 0.0000 -0.0000 1.0000 - *TM_ROW2 0.0000 -1.0000 -0.0000 - *TM_ROW3 0.0000 0.0100 0.0667 - *TM_POS 0.0000 0.0100 0.0667 - *TM_ROTAXIS -1.0000 -0.0000 -0.0000 - *TM_ROTANGLE 1.5708 - *TM_SCALE 1.0000 1.0000 1.0000 - *TM_SCALEAXIS 0.0000 0.0000 0.0000 - *TM_SCALEAXISANG 0.0000 - } - *MESH { - *TIMEVALUE 0 - *MESH_NUMVERTEX 12 - *MESH_NUMFACES 24 - *MESH_VERTEX_LIST { - *MESH_VERTEX 0 -0.1000 0.0100 0.0000 - *MESH_VERTEX 1 0.0000 0.0100 0.2000 - *MESH_VERTEX 2 0.1000 0.0100 0.0000 - *MESH_VERTEX 3 -0.1000 -0.0100 0.0000 - *MESH_VERTEX 4 0.0000 -0.0100 0.2000 - *MESH_VERTEX 5 0.1000 -0.0100 0.0000 - *MESH_VERTEX 6 -0.1447 0.0100 -0.0292 - *MESH_VERTEX 7 0.1447 0.0100 -0.0292 - *MESH_VERTEX 8 0.0000 0.0100 0.2603 - *MESH_VERTEX 9 -0.1447 -0.0100 -0.0292 - *MESH_VERTEX 10 0.1447 -0.0100 -0.0292 - *MESH_VERTEX 11 0.0000 -0.0100 0.2603 - } - *MESH_FACE_LIST { - *MESH_FACE 0: A: 0 B: 1 C: 4 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 1: A: 0 B: 4 C: 3 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 2: A: 1 B: 2 C: 5 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 3: A: 1 B: 5 C: 4 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 4: A: 2 B: 0 C: 3 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 5: A: 2 B: 3 C: 5 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 6: A: 6 B: 7 C: 10 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 7: A: 6 B: 10 C: 9 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 1 *MESH_MTLID 2 - *MESH_FACE 8: A: 7 B: 8 C: 11 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 9: A: 7 B: 11 C: 10 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 3 *MESH_MTLID 2 - *MESH_FACE 10: A: 8 B: 6 C: 9 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 11: A: 8 B: 9 C: 11 AB: 0 BC: 1 CA: 1 *MESH_SMOOTHING 2 *MESH_MTLID 2 - *MESH_FACE 12: A: 8 B: 0 C: 6 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 13: A: 8 B: 1 C: 0 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 14: A: 7 B: 1 C: 8 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 15: A: 7 B: 2 C: 1 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 16: A: 6 B: 2 C: 7 AB: 0 BC: 0 CA: 1 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 17: A: 6 B: 0 C: 2 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 1 - *MESH_FACE 18: A: 11 B: 9 C: 3 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 19: A: 11 B: 3 C: 4 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 20: A: 10 B: 11 C: 4 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 21: A: 10 B: 4 C: 5 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 22: A: 9 B: 10 C: 5 AB: 1 BC: 0 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - *MESH_FACE 23: A: 9 B: 5 C: 3 AB: 0 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 0 - } - *MESH_NUMTVERTEX 28 - *MESH_TVERTLIST { - *MESH_TVERT 0 0.0000 0.0000 0.0000 - *MESH_TVERT 1 0.3455 0.0000 0.0000 - *MESH_TVERT 2 0.6910 0.0000 0.0000 - *MESH_TVERT 3 1.0000 0.0000 0.0000 - *MESH_TVERT 4 0.0000 1.0000 0.0000 - *MESH_TVERT 5 0.3455 1.0000 0.0000 - *MESH_TVERT 6 0.6910 1.0000 0.0000 - *MESH_TVERT 7 1.0000 1.0000 0.0000 - *MESH_TVERT 8 0.0000 0.0000 0.0000 - *MESH_TVERT 9 0.3090 0.0000 0.0000 - *MESH_TVERT 10 0.6545 0.0000 0.0000 - *MESH_TVERT 11 1.0000 0.0000 0.0000 - *MESH_TVERT 12 0.0000 1.0000 0.0000 - *MESH_TVERT 13 0.3090 1.0000 0.0000 - *MESH_TVERT 14 0.6545 1.0000 0.0000 - *MESH_TVERT 15 1.0000 1.0000 0.0000 - *MESH_TVERT 16 0.1545 0.1007 0.0000 - *MESH_TVERT 17 0.5000 0.7918 0.0000 - *MESH_TVERT 18 0.8455 0.1007 0.0000 - *MESH_TVERT 19 0.0000 0.0000 0.0000 - *MESH_TVERT 20 1.0000 0.0000 0.0000 - *MESH_TVERT 21 0.5000 1.0000 0.0000 - *MESH_TVERT 22 0.1545 0.1007 0.0000 - *MESH_TVERT 23 0.5000 0.7918 0.0000 - *MESH_TVERT 24 0.8455 0.1007 0.0000 - *MESH_TVERT 25 0.0000 0.0000 0.0000 - *MESH_TVERT 26 1.0000 0.0000 0.0000 - *MESH_TVERT 27 0.5000 1.0000 0.0000 - } - *MESH_NUMTVFACES 24 - *MESH_TFACELIST { - *MESH_TFACE 0 0 1 5 - *MESH_TFACE 1 0 5 4 - *MESH_TFACE 2 1 2 6 - *MESH_TFACE 3 1 6 5 - *MESH_TFACE 4 2 3 7 - *MESH_TFACE 5 2 7 6 - *MESH_TFACE 6 8 9 13 - *MESH_TFACE 7 8 13 12 - *MESH_TFACE 8 9 10 14 - *MESH_TFACE 9 9 14 13 - *MESH_TFACE 10 10 11 15 - *MESH_TFACE 11 10 15 14 - *MESH_TFACE 12 21 16 19 - *MESH_TFACE 13 21 17 16 - *MESH_TFACE 14 20 17 21 - *MESH_TFACE 15 20 18 17 - *MESH_TFACE 16 19 18 20 - *MESH_TFACE 17 19 16 18 - *MESH_TFACE 18 27 25 22 - *MESH_TFACE 19 27 22 23 - *MESH_TFACE 20 26 27 23 - *MESH_TFACE 21 26 23 24 - *MESH_TFACE 22 25 26 24 - *MESH_TFACE 23 25 24 22 - } - *MESH_NORMALS { - *MESH_FACENORMAL 0 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 0 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 1 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 4 0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 1 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 0 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 4 0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 3 0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 2 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 1 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 2 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 5 -0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 3 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 1 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 5 -0.8944 -0.4472 0.0000 - *MESH_VERTEXNORMAL 4 -0.8944 -0.4472 0.0000 - *MESH_FACENORMAL 4 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 2 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 0 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 3 0.0000 1.0000 0.0000 - *MESH_FACENORMAL 5 -0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 2 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 3 0.0000 1.0000 0.0000 - *MESH_VERTEXNORMAL 5 -0.0000 1.0000 0.0000 - *MESH_FACENORMAL 6 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 6 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 7 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 10 0.0000 -1.0000 0.0000 - *MESH_FACENORMAL 7 -0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 6 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 10 0.0000 -1.0000 0.0000 - *MESH_VERTEXNORMAL 9 -0.0000 -1.0000 0.0000 - *MESH_FACENORMAL 8 0.8944 0.4472 -0.0000 - *MESH_VERTEXNORMAL 7 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 8 0.8944 0.4472 -0.0000 - *MESH_VERTEXNORMAL 11 0.8944 0.4472 0.0000 - *MESH_FACENORMAL 9 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 7 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 11 0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 10 0.8944 0.4472 0.0000 - *MESH_FACENORMAL 10 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 8 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 6 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 9 -0.8944 0.4472 0.0000 - *MESH_FACENORMAL 11 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 8 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 9 -0.8944 0.4472 0.0000 - *MESH_VERTEXNORMAL 11 -0.8944 0.4472 0.0000 - *MESH_FACENORMAL 12 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 13 -0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 14 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 8 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 15 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 1 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 16 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 7 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 17 0.0000 -0.0000 -1.0000 - *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 - *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 - *MESH_FACENORMAL 18 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 19 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 20 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 11 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 21 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 4 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 22 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 10 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 - *MESH_FACENORMAL 23 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 9 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 - *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 - } - } - *PROP_MOTIONBLUR 0 - *PROP_CASTSHADOW 1 - *PROP_RECVSHADOW 1 - *MATERIAL_REF 1 -} diff --git a/third_party/gfootball_engine/data/media/objects/helpers/yellow.bmp b/third_party/gfootball_engine/data/media/objects/helpers/yellow.bmp deleted file mode 100644 index f003bbc8..00000000 Binary files a/third_party/gfootball_engine/data/media/objects/helpers/yellow.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/objects/players/textures/UVW.bmp b/third_party/gfootball_engine/data/media/objects/players/textures/UVW.bmp deleted file mode 100644 index f8a29430..00000000 Binary files a/third_party/gfootball_engine/data/media/objects/players/textures/UVW.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/objects/players/textures/shoe_dark.bmp b/third_party/gfootball_engine/data/media/objects/players/textures/shoe_dark.bmp deleted file mode 100644 index a44c52d4..00000000 Binary files a/third_party/gfootball_engine/data/media/objects/players/textures/shoe_dark.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/objects/players/textures/shoe_light.bmp b/third_party/gfootball_engine/data/media/objects/players/textures/shoe_light.bmp deleted file mode 100644 index 5e5b2642..00000000 Binary files a/third_party/gfootball_engine/data/media/objects/players/textures/shoe_light.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/objects/stadiums/test/goals.bmp b/third_party/gfootball_engine/data/media/objects/stadiums/test/goals.bmp deleted file mode 100644 index d81e9c51..00000000 Binary files a/third_party/gfootball_engine/data/media/objects/stadiums/test/goals.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/objects/stadiums/test/seat01.bmp b/third_party/gfootball_engine/data/media/objects/stadiums/test/seat01.bmp deleted file mode 100644 index 8cdd8317..00000000 Binary files a/third_party/gfootball_engine/data/media/objects/stadiums/test/seat01.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/objects/stadiums/test/seat01_normal.bmp b/third_party/gfootball_engine/data/media/objects/stadiums/test/seat01_normal.bmp deleted file mode 100644 index 4be0b3e2..00000000 Binary files a/third_party/gfootball_engine/data/media/objects/stadiums/test/seat01_normal.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/objects/stadiums/test/white.bmp b/third_party/gfootball_engine/data/media/objects/stadiums/test/white.bmp deleted file mode 100644 index d510413a..00000000 Binary files a/third_party/gfootball_engine/data/media/objects/stadiums/test/white.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/data/media/textures/concrete/concrete.wall01_normalb.bmp b/third_party/gfootball_engine/data/media/textures/concrete/concrete.wall01_normalb.bmp deleted file mode 100644 index 76c90249..00000000 Binary files a/third_party/gfootball_engine/data/media/textures/concrete/concrete.wall01_normalb.bmp and /dev/null differ diff --git a/third_party/gfootball_engine/sources.cmake b/third_party/gfootball_engine/sources.cmake index 1ad07c46..fb94e6b5 100644 --- a/third_party/gfootball_engine/sources.cmake +++ b/third_party/gfootball_engine/sources.cmake @@ -140,7 +140,6 @@ set(TYPES_HEADERS src/types/resource.hpp src/types/material.hpp src/types/observer.hpp - src/types/singleton.hpp src/types/interpreter.hpp src/types/refcounted.hpp src/types/command.hpp @@ -215,7 +214,6 @@ set(SCENE_SOURCES set(MANAGERS_HEADERS src/managers/resourcemanager.hpp - src/managers/resourcemanagerpool.hpp src/managers/environmentmanager.hpp src/managers/scenemanager.hpp src/managers/systemmanager.hpp @@ -223,7 +221,6 @@ set(MANAGERS_HEADERS set(MANAGERS_SOURCES src/managers/scenemanager.cpp - src/managers/resourcemanagerpool.cpp src/managers/environmentmanager.cpp src/managers/systemmanager.cpp ) @@ -231,11 +228,9 @@ set(MANAGERS_SOURCES set(UTILS_HEADERS src/utils/animation.hpp src/utils/objectloader.hpp - src/utils/database.hpp src/utils/xmlloader.hpp src/utils/splitgeometry.hpp src/utils/orbitcamera.hpp - src/utils/directoryparser.hpp ) set(UTILS_EXT_HEADERS @@ -244,12 +239,10 @@ set(UTILS_EXT_HEADERS ) set(UTILS_SOURCES - src/utils/database.cpp src/utils/orbitcamera.cpp src/utils/animation.cpp src/utils/splitgeometry.cpp src/utils/objectloader.cpp - src/utils/directoryparser.cpp src/utils/xmlloader.cpp src/utils/animationextensions/footballanimationextension.cpp ) @@ -313,7 +306,7 @@ set(CLIENT_SOURCES set(CORE_HEADERS src/cmake/backtrace.h - src/cmake/helpers.h + src/cmake/file.h src/gamedefines.hpp src/utils.hpp src/main.hpp @@ -324,7 +317,7 @@ set(CORE_HEADERS set(CORE_SOURCES src/cmake/backtrace.cpp - src/cmake/helpers.cpp + src/cmake/file.cpp src/misc/perlin.cpp src/misc/hungarian.c src/gametask.cpp diff --git a/third_party/gfootball_engine/src/base/math/bluntmath.cpp b/third_party/gfootball_engine/src/base/math/bluntmath.cpp index 62c2fde1..745facb5 100644 --- a/third_party/gfootball_engine/src/base/math/bluntmath.cpp +++ b/third_party/gfootball_engine/src/base/math/bluntmath.cpp @@ -19,27 +19,11 @@ #include -#include +#include "../../main.hpp" namespace blunted { unsigned int fastrandseed = 0; - unsigned int max_uint = 0; - - typedef boost::mt19937 BaseGenerator; - typedef boost::uniform_real Distribution; - typedef boost::variate_generator Generator; - BaseGenerator base; - Distribution dist; - Generator rng(base, dist); - - // Two random number generators are needed. One (deterministic when running - // in deterministic mode) to be used in places which generate deterministic - // game state. Second one is used in places which are optional and don't - // affect observations (like position of the sun). - BaseGenerator base2; - Distribution dist2; - Generator rng_non_deterministic(base2, dist2); real clamp(const real value, const real min, const real max) { assert(max >= min); @@ -76,15 +60,13 @@ namespace blunted { } void randomseed(unsigned int seed) { - rng.engine().seed(seed); - rng_non_deterministic.engine().seed(seed); + GetContext().rng.engine().seed(seed); + GetContext().rng_non_deterministic.engine().seed(seed); } - inline real boostrandom() { - return rng(); - } + inline real boostrandom() { return GetContext().rng(); } - real random(real min, real max) { + real boostrandom(real min, real max) { float stretch = max - min; real value = min + (boostrandom() * stretch); return value; @@ -92,7 +74,7 @@ namespace blunted { real random_non_determ(real min, real max) { float stretch = max - min; - real value = min + (rng_non_deterministic() * stretch); + real value = min + (GetContext().rng_non_deterministic() * stretch); return value; } diff --git a/third_party/gfootball_engine/src/base/math/bluntmath.hpp b/third_party/gfootball_engine/src/base/math/bluntmath.hpp index ad6d00d4..2a75405b 100644 --- a/third_party/gfootball_engine/src/base/math/bluntmath.hpp +++ b/third_party/gfootball_engine/src/base/math/bluntmath.hpp @@ -33,7 +33,6 @@ namespace blunted { // you can never be too specific ;) const real pi = 3.1415926535897932384626433832795028841972f; // last decimal rounded ;) extern unsigned int fastrandseed; - extern unsigned int max_uint; typedef real radian; @@ -41,17 +40,16 @@ namespace blunted { signed int signSide(real n); // returns -1 or 1 bool is_odd(int n); void randomseed(unsigned int seed); - real random(real min, real max); + real boostrandom(real min, real max); real random_non_determ(real min, real max); inline void fastrandomseed(unsigned int seed) { fastrandseed = seed; - max_uint = std::numeric_limits::max(); } inline real fastrandom(real min, real max) { real range = max - min; - real tmp = (fastrandseed / (max_uint * 1.0f)) * range + min; + real tmp = (fastrandseed / (std::numeric_limits::max() * 1.0f)) * range + min; fastrandseed = (214013 * fastrandseed + 2531011); return tmp; } diff --git a/third_party/gfootball_engine/src/base/utils.cpp b/third_party/gfootball_engine/src/base/utils.cpp index 7e83b813..4c066f89 100644 --- a/third_party/gfootball_engine/src/base/utils.cpp +++ b/third_party/gfootball_engine/src/base/utils.cpp @@ -18,6 +18,7 @@ #include "utils.hpp" #include "../main.hpp" +#include "file.h" #include "log.hpp" #include "math/quaternion.hpp" #include "math/vector3.hpp" @@ -36,27 +37,29 @@ namespace blunted { s_tree *tree_load(std::string asefile) { asefile = GetGameConfig().updatePath(asefile); - std::ifstream datafile(asefile.c_str(), std::ios::in); - if (datafile.fail()) { - Log(e_FatalError, "tree_load", "", "could not open " + asefile); - return NULL; - } - - s_tree *tree = tree_readblock(datafile); - - datafile.close(); - + const std::string &datafile = GetFile(asefile); + const char *data = datafile.c_str(); + int len = datafile.size(); + s_tree *tree = tree_readblock(data, len); return tree; } - s_tree *tree_readblock(std::ifstream &datafile) { + s_tree *tree_readblock(const char *&datafile, int &len) { s_tree *content = new s_tree(); bool quit = false; - while (!datafile.eof() && quit == false) { + while (len > 0 && quit == false) { char tmp[2048]; - datafile.getline(tmp, 2048); + int l = 0; + for (l = 0; datafile[0] != '\n'; l++) { + tmp[l] = datafile[0]; + datafile++; + len--; + } + tmp[l] = 0; + datafile++; + len--; std::string line; line.assign(tmp); std::vector tokens; @@ -86,7 +89,7 @@ namespace blunted { if (tokens.at(tokens.size() - 1).compare("{") == 0) { // iterate entry->values.pop_back(); - entry->subtree = tree_readblock(datafile); + entry->subtree = tree_readblock(datafile, len); } content->entries.push_back(entry); } @@ -96,7 +99,6 @@ namespace blunted { return content; } - // tree structure utility functions const s_treeentry *treeentry_find(const s_tree *tree, const std::string needle) { @@ -148,46 +150,22 @@ namespace blunted { } std::string file_to_string(std::string filename) { - filename = GetGameConfig().updatePath(filename); - - char line[1024]; - std::ifstream file; - - file.open(filename.c_str(), std::ios::in); - - if (file.fail()) Log(e_FatalError, "utils", "file_to_vector", "file not found or empty: " + filename); - - std::string source; - while (file.getline(line, 1024)) { - source.append(line); - } - - // remove possible windows CR - source.erase( std::remove(source.begin(), source.end(), '\r'), source.end() ); - - file.close(); - - return source; + return GetFile(GetGameConfig().updatePath(filename)); } - void file_to_vector(std::string filename, std::vector &destination) { - - char line[32767]; - std::ifstream file; - filename = GetGameConfig().updatePath(filename); - file.open(filename.c_str(), std::ios::in); - - if (file.fail()) Log(e_FatalError, "utils", "file_to_vector", "file not found or empty: " + filename); - - while (file.getline(line, 32767)) { - std::string line_str; - line_str.assign(line); - // remove possible windows CR - line_str.erase( std::remove(line_str.begin(), line_str.end(), '\r'), line_str.end() ); - destination.push_back(line_str); + void file_to_vector(std::string filename, + std::vector &destination) { + std::string file = GetFile(GetGameConfig().updatePath(filename)); + int last_pos = 0; + for (int x = 0; x < file.length(); x++) { + if (file[x] == '\n') { + destination.push_back(file.substr(last_pos, x - last_pos)); + last_pos = x + 1; + } + } + if (last_pos < file.length()) { + destination.push_back(file.substr(last_pos, file.length() - last_pos)); } - - file.close(); } std::string get_file_name(const std::string &filename) { diff --git a/third_party/gfootball_engine/src/base/utils.hpp b/third_party/gfootball_engine/src/base/utils.hpp index a0a8d2c2..0205fb26 100644 --- a/third_party/gfootball_engine/src/base/utils.hpp +++ b/third_party/gfootball_engine/src/base/utils.hpp @@ -58,7 +58,7 @@ namespace blunted { // ----- load .ase file into a tree s_tree *tree_load(std::string asefile); - s_tree *tree_readblock(std::ifstream &datafile); + s_tree *tree_readblock(const char*& datafile, int& len); // tree structure utility functions const s_treeentry *treeentry_find(const s_tree *tree, const std::string needle); diff --git a/third_party/gfootball_engine/src/blunted.cpp b/third_party/gfootball_engine/src/blunted.cpp index fb87607a..c30979ef 100644 --- a/third_party/gfootball_engine/src/blunted.cpp +++ b/third_party/gfootball_engine/src/blunted.cpp @@ -17,112 +17,55 @@ #include "blunted.hpp" +#include "base/log.hpp" +#include "base/properties.hpp" +#include "base/utils.hpp" #include "framework/scheduler.hpp" - +#include "loaders/aseloader.hpp" +#include "loaders/imageloader.hpp" +#include "main.hpp" +#include "managers/environmentmanager.hpp" +#include "managers/resourcemanager.hpp" +#include "managers/scenemanager.hpp" +#include "managers/systemmanager.hpp" +#include "scene/objectfactory.hpp" #include "scene/objects/camera.hpp" -#include "scene/objects/image2d.hpp" #include "scene/objects/geometry.hpp" -#include "scene/objects/skybox.hpp" -#include "scene/objects/light.hpp" +#include "scene/objects/image2d.hpp" #include "scene/objects/joint.hpp" - -#include "scene/objectfactory.hpp" - -#include "scene/resources/surface.hpp" +#include "scene/objects/light.hpp" +#include "scene/objects/skybox.hpp" #include "scene/resources/geometrydata.hpp" - -#include "framework/scheduler.hpp" - -#include "managers/systemmanager.hpp" -#include "managers/environmentmanager.hpp" -#include "managers/scenemanager.hpp" -#include "managers/resourcemanager.hpp" -#include "managers/resourcemanagerpool.hpp" - +#include "scene/resources/surface.hpp" #include "systems/isystem.hpp" - -#include "base/log.hpp" -#include "base/utils.hpp" -#include "base/properties.hpp" - -#include "loaders/aseloader.hpp" -#include "loaders/imageloader.hpp" - #include "wrap_SDL_ttf.h" namespace blunted { - ASELoader *aseLoader; - ImageLoader *imageLoader; - Scheduler *scheduler; - - SystemManager *systemManager; - SceneManager *sceneManager; - //ResourceManagerPool *resourceManagerPool; - - ObjectFactory *objectFactory; - void RegisterObjectTypes(ObjectFactory* objectFactory); void Initialize(Properties &config) { - // initialize managers - - new EnvironmentManager(); - - new SystemManager(); - systemManager = SystemManager::GetInstancePtr(); - - new SceneManager(); - sceneManager = SceneManager::GetInstancePtr(); - - new ObjectFactory(); - objectFactory = ObjectFactory::GetInstancePtr(); - // initialize resource managers - - aseLoader = new ASELoader(); - ResourceManagerPool::getGeometryManager()->RegisterLoader("ase", aseLoader); - imageLoader = new ImageLoader(); - ResourceManagerPool::getSurfaceManager()->RegisterLoader("jpg", imageLoader); - ResourceManagerPool::getSurfaceManager()->RegisterLoader("png", imageLoader); - ResourceManagerPool::getSurfaceManager()->RegisterLoader("bmp", imageLoader); + GetContext().geometry_manager.RegisterLoader("ase", + &GetContext().aseLoader); + GetContext().surface_manager.RegisterLoader("jpg", + &GetContext().imageLoader); + GetContext().surface_manager.RegisterLoader("png", + &GetContext().imageLoader); + GetContext().surface_manager.RegisterLoader("bmp", + &GetContext().imageLoader); TTF_Init(); - - - // initialize scheduler - - scheduler = new Scheduler(); - - RegisterObjectTypes(objectFactory); - + RegisterObjectTypes(&GetContext().object_factory); } - void DoStep() { - scheduler->Run(); - } + void DoStep() { GetContext().scheduler.Run(); } - Scheduler *GetScheduler() { - assert(scheduler); - return scheduler; - } + Scheduler *GetScheduler() { return &GetContext().scheduler; } void Exit() { - SceneManager::GetInstance().Exit(); - - objectFactory->Exit(); - objectFactory->Destroy(); - - delete aseLoader; - delete imageLoader; - aseLoader = 0; - imageLoader = 0; - - SystemManager::GetInstance().Exit(); - SystemManager::GetInstance().Destroy(); - - SceneManager::GetInstance().Destroy(); - EnvironmentManager::GetInstance().Destroy(); - + GetContext().scene_manager.Exit(); + GetContext().object_factory.Exit(); + GetContext().system_manager.Exit(); TTF_Quit(); SDL_Quit(); } diff --git a/third_party/gfootball_engine/src/cmake/backtrace.h b/third_party/gfootball_engine/src/cmake/backtrace.h index d2d01652..f3976cfd 100644 --- a/third_party/gfootball_engine/src/cmake/backtrace.h +++ b/third_party/gfootball_engine/src/cmake/backtrace.h @@ -11,8 +11,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef _BACKTRACE_H_ -#define _BACKTRACE_H_ +#ifndef _CMAKE_BACKTRACE_H_ +#define _CMAKE_BACKTRACE_H_ static inline void print_stacktrace() { @@ -20,4 +20,4 @@ static inline void print_stacktrace() { void install_stacktrace(); -#endif // _BACKTRACE_H_ +#endif // _CMAKE_BACKTRACE_H_ diff --git a/third_party/gfootball_engine/src/cmake/file.cpp b/third_party/gfootball_engine/src/cmake/file.cpp new file mode 100644 index 00000000..595b2245 --- /dev/null +++ b/third_party/gfootball_engine/src/cmake/file.cpp @@ -0,0 +1,59 @@ +// Copyright 2019 Google LLC & Bastiaan Konings +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "file.h" + +#include "../base/log.hpp" +#include "../main.hpp" + +namespace fs = boost::filesystem; + +std::string GetFile(const std::string& fileName) { + std::ifstream file; + file.open(fileName.c_str(), std::ios::in); + std::string str((std::istreambuf_iterator(file)), + std::istreambuf_iterator()); + file.close(); + return str; +} + +void GetFilesRec(boost::filesystem::path path, const std::string &extension, + std::vector &files) { + if (!fs::exists(path) || !fs::is_directory(path)) { + Log(e_Error, "DirectoryParser", "Parse", + "Could not open directory " + path.string() + " for reading"); + } + fs::directory_iterator dirIter(path); + fs::directory_iterator endIter; + while (dirIter != endIter) { + if (is_directory(dirIter->status())) { + boost::filesystem::path thePath(path); + thePath /= dirIter->path().filename(); + GetFilesRec(thePath, extension, files); + } else { + boost::filesystem::path thePath(path); + thePath /= dirIter->path().filename(); + + if (thePath.extension() == "." + extension) { + files.push_back(path.string() + "/" + thePath.filename().string()); + } + } + + dirIter++; + } +} + +void GetFiles(std::string path, const std::string &extension, + std::vector &files) { + GetFilesRec(GetGameConfig().updatePath(path), extension, files); +} diff --git a/third_party/gfootball_engine/src/cmake/helpers.h b/third_party/gfootball_engine/src/cmake/file.h similarity index 58% rename from third_party/gfootball_engine/src/cmake/helpers.h rename to third_party/gfootball_engine/src/cmake/file.h index 7406dab8..dc734a19 100644 --- a/third_party/gfootball_engine/src/cmake/helpers.h +++ b/third_party/gfootball_engine/src/cmake/file.h @@ -11,13 +11,21 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef _HELPERS_H_ -#define _HELPERS_H_ +#ifndef _CMAKE_FILE_H_ +#define _CMAKE_FILE_H_ -#include +#include "../defines.hpp" -std::string FindDataDir(); +#define BOOST_FILESYSTEM_NO_DEPRECATED +#define BOOST_FILESYSTEM_VERSION 3 +#include "../base/log.hpp" +#include "boost/filesystem.hpp" -std::string FindFontFile(); +namespace fs = boost::filesystem; -#endif +std::string GetFile(const std::string& fileName); + +void GetFiles(std::string path, const std::string& extension, + std::vector& files); + +#endif // _CMAKE_FILE_H_ diff --git a/third_party/gfootball_engine/src/cmake/helpers.cpp b/third_party/gfootball_engine/src/cmake/helpers.cpp deleted file mode 100644 index ca40f372..00000000 --- a/third_party/gfootball_engine/src/cmake/helpers.cpp +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2019 Google LLC & Bastiaan Konings -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "helpers.h" - -std::string FindDataDir() { return ""; } - -std::string FindFontFile() { - return ""; -} diff --git a/third_party/gfootball_engine/src/data/playerdata.cpp b/third_party/gfootball_engine/src/data/playerdata.cpp index 2df46f66..b67407e2 100755 --- a/third_party/gfootball_engine/src/data/playerdata.cpp +++ b/third_party/gfootball_engine/src/data/playerdata.cpp @@ -19,8 +19,6 @@ #include -#include "../utils/database.hpp" - #include "../base/utils.hpp" #include "../main.hpp" @@ -54,31 +52,382 @@ PlayerStat PlayerStatFromString(const std::string& name) { } PlayerData::PlayerData(int playerDatabaseID) : databaseID(playerDatabaseID) { - DatabaseResult *result = GetDB()->Query("select firstname, lastname, base_stat, profile_xml, age, skincolor, hairstyle, haircolor, height from players where id = " + int_to_str(databaseID) + " limit 1"); std::string profileString; float baseStat = 0.0f; int age = 15; - skinColor = int(std::round(random(1, 4))); + skinColor = int(std::round(boostrandom(1, 4))); hairStyle = "short01"; hairColor = "darkblonde"; height = 1.8f; - for (unsigned int c = 0; c < result->data.at(0).size(); c++) { - if (result->header.at(c).compare("firstname") == 0) firstName = result->data.at(0).at(c); - if (result->header.at(c).compare("lastname") == 0) lastName = result->data.at(0).at(c); - if (result->header.at(c).compare("base_stat") == 0) baseStat = atof(result->data.at(0).at(c).c_str()); - if (result->header.at(c).compare("profile_xml") == 0) profileString = result->data.at(0).at(c); - if (result->header.at(c).compare("age") == 0) age = atoi(result->data.at(0).at(c).c_str()); - if (result->header.at(c).compare("skincolor") == 0) skinColor = atoi(result->data.at(0).at(c).c_str()); - if (result->header.at(c).compare("hairstyle") == 0) hairStyle = result->data.at(0).at(c); - if (result->header.at(c).compare("haircolor") == 0) hairColor = result->data.at(0).at(c); - if (result->header.at(c).compare("height") == 0) height = atof(result->data.at(0).at(c).c_str()); + switch (playerDatabaseID) { + case 398: + firstName = "Marc-Andr�"; + lastName = "ten Stegosaur"; + baseStat = 0.661913; + profileString = + "0.6500000.8500000.5500000.4500000.5500000.6500000.6500000.2500000.2500000.3500000.2500000.6500000.7500000.2500000.3500000.2500000.5500000.5500000.5500000.9500000.1500000.550000"; + age = 22; + skinColor = 1; + hairStyle = "short02"; + hairColor = "blonde"; + height = 1.87; + break; + case 11: + firstName = "Jordi"; + lastName = "Alblabla"; + baseStat = 0.619111; + profileString = + "0.5696970.5363640.5363640.5363640.4696970.5363640.5696970.5363640.5363640.5030300.4696970.5696970.5363640.4696970.4363640.3030300.4696970.4696970.4696970.5363640.4363640.503030"; + age = 25; + skinColor = 1; + hairStyle = "short02"; + hairColor = "black"; + height = 1.7; + break; + case 254: + firstName = "Javier"; + lastName = "Masqueranus"; + baseStat = 0.64269; + profileString = + "0.7136360.6136360.4636360.4636360.4636360.4636360.5636360.7136360.6636360.4636360.3136360.5636360.5636360.5136360.3136360.2136360.4636360.4636360.4636360.6636360.3136360.563636"; + age = 30; + skinColor = 2; + hairStyle = "bald"; + hairColor = "black"; + height = 1.74; + break; + case 320: + firstName = "Gerard"; + lastName = "Pitoresqué"; + baseStat = 0.625396; + profileString = + "0.7363640.6863640.4863640.4863640.4863640.4363640.6363640.7863640.7863640.3863640.2363640.4363640.4363640.5863640.2363640.1863640.4863640.4863640.4863640.7863640.2363640.486364"; + age = 27; + skinColor = 1; + hairStyle = "medium01"; + hairColor = "black"; + height = 1.93; + break; + case 103: + firstName = ""; + lastName = "Danny Ballfs"; + baseStat = 0.60786; + profileString = + "0.5621210.5287880.5287880.5287880.4621210.4954550.5287880.5954550.5621210.5287880.4287880.6287880.5954550.4621210.3621210.2621210.4621210.4621210.4621210.5954550.3621210.595455"; + age = 31; + skinColor = 2; + hairStyle = "short01"; + hairColor = "black"; + height = 1.72; + break; + case 188: + firstName = "Andr�s"; + lastName = "Ingestia"; + baseStat = 0.68319; + profileString = + "0.3863640.4863640.5863640.5863640.4863640.6863640.6863640.1863640.1863640.5863640.6863640.5863640.4863640.3863640.6863640.4863640.4863640.4863640.4863640.2863640.6863640.386364"; + age = 30; + skinColor = 1; + hairStyle = "short01"; + hairColor = "black"; + height = 1.71; + break; + case 74: + firstName = "Sergio"; + lastName = "Buckets"; + baseStat = 0.645507; + profileString = + "0.6636360.5636360.4636360.4636360.4636360.4636360.5636360.6636360.5636360.4636360.3636360.6636360.6636360.4636360.3636360.2636360.4636360.4636360.4636360.5636360.3636360.563636"; + age = 26; + skinColor = 1; + hairStyle = "short02"; + hairColor = "black"; + height = 1.89; + break; + case 332: + firstName = "Ivan"; + lastName = "Rattizić"; + baseStat = 0.63531; + profileString = + "0.5250000.5250000.5250000.5250000.4750000.5750000.6250000.4250000.3750000.5250000.5250000.6250000.5750000.4250000.5250000.3750000.4750000.4750000.4750000.4250000.5250000.475000"; + age = 26; + skinColor = 1; + hairStyle = "long01"; + hairColor = "blonde"; + height = 1.84; + break; + case 290: + firstName = ""; + lastName = "Niemeyer"; + baseStat = 0.716847; + profileString = + "0.3818180.4818180.6318180.6318180.4818180.6818180.6818180.1818180.1318180.5318180.7318180.5818180.5318180.3818180.6818180.4318180.4818180.4818180.4818180.2568180.7068180.431818"; + age = 22; + skinColor = 2; + hairStyle = "medium01"; + hairColor = "black"; + height = 1.74; + break; + case 391: + firstName = "Luis"; + lastName = "Sáreusz"; + baseStat = 0.693097; + profileString = + "0.3818180.4818180.6318180.6318180.4818180.6818180.6818180.1818180.1318180.5318180.7318180.5818180.5318180.3818180.6818180.4318180.4818180.4818180.4818180.2568180.7068180.431818"; + age = 27; + skinColor = 2; + hairStyle = "medium01"; + hairColor = "black"; + height = 1.81; + break; + case 264: + firstName = "Lionel"; + lastName = "Messy"; + baseStat = 0.718346; + profileString = + "0.3818180.4818180.6318180.6318180.4818180.6818180.6818180.1818180.1318180.5318180.7318180.5818180.5318180.3818180.6818180.4318180.4818180.4818180.4818180.2568180.7068180.431818"; + age = 27; + skinColor = 1; + hairStyle = "short02"; + hairColor = "black"; + height = 1.69; + break; } - delete result; - // get average stat for current age XMLLoader loader; @@ -100,7 +449,7 @@ PlayerData::PlayerData(int playerDatabaseID) : databaseID(playerDatabaseID) { PlayerData::PlayerData() { // officials, for example, use this constructor - skinColor = int(std::round(random(1, 4))); + skinColor = int(std::round(boostrandom(1, 4))); hairStyle = "short01"; hairColor = "darkblonde"; height = 1.8f; diff --git a/third_party/gfootball_engine/src/data/teamdata.cpp b/third_party/gfootball_engine/src/data/teamdata.cpp index 98773566..f983cd0c 100755 --- a/third_party/gfootball_engine/src/data/teamdata.cpp +++ b/third_party/gfootball_engine/src/data/teamdata.cpp @@ -22,7 +22,6 @@ #include "../base/utils.hpp" #include "../main.hpp" -#include "../utils/database.hpp" Vector3 GetDefaultRolePosition(e_PlayerRole role) { switch (role) { @@ -72,13 +71,6 @@ TeamData::TeamData(int teamDatabaseID, int playersTeamDatabaseID, formation.resize(f.empty() ? playerNum : f.size()); int player_count = formation.size(); - DatabaseResult *result = GetDB()->Query( - "select teams.name, teams.logo_url, teams.kit_url, teams.formation_xml, " - "teams.formation_factory_xml, teams.tactics_xml, " - "teams.tactics_factory_xml, teams.shortname, teams.color1, teams.color2 " - "from teams, leagues where teams.id = " + - int_to_str(databaseID) + " and leagues.id = teams.league_id limit 1"); - std::string formationString; std::string factoryFormationString; std::string factoryTacticsString; @@ -89,30 +81,165 @@ TeamData::TeamData(int teamDatabaseID, int playersTeamDatabaseID, bool national = false; - for (unsigned int c = 0; c < result->data.at(0).size(); c++) { - if (result->header.at(c).compare("national") == 0) - national = (atoi(result->data.at(0).at(c).c_str()) == 0) ? false : true; - - if (result->header.at(c).compare("name") == 0) - name = result->data.at(0).at(c); - if (result->header.at(c).compare("logo_url") == 0) - logo_url = result->data.at(0).at(c); - if (result->header.at(c).compare("kit_url") == 0) - kit_url = result->data.at(0).at(c); - if (result->header.at(c).compare("formation_xml") == 0) - formationString = result->data.at(0).at(c); - if (result->header.at(c).compare("formation_factory_xml") == 0) - factoryFormationString = result->data.at(0).at(c); - if (result->header.at(c).compare("tactics_xml") == 0) - tacticsString = result->data.at(0).at(c); - if (result->header.at(c).compare("tactics_factory_xml") == 0) - factoryTacticsString = result->data.at(0).at(c); - if (result->header.at(c).compare("shortname") == 0) - shortName = result->data.at(0).at(c); - if (result->header.at(c).compare("color1") == 0) - color1 = GetVectorFromString(result->data.at(0).at(c)); - if (result->header.at(c).compare("color2") == 0) - color2 = GetVectorFromString(result->data.at(0).at(c)); + switch (databaseID) { + case 3: + national = 0; + name = "Frequentists United"; + logo_url = "images_teams/primeradivision/fcbarcelona_logo.png"; + kit_url = "images_teams/primeradivision/fcbarcelona"; + formationString = + " -1.0, 0.0 " + "GK -0.7, " + "0.75LB -1.0, " + "0.25CB -1.0, " + "-0.25CB -0.7, " + "-0.75RB 0.0, 0.5 " + "CM -0.2, 0.0 " + "CM 0.0, -0.5 " + "CM 0.6, 0.75 " + "LM 1.0, 0.0 " + "CF 0.6, -0.75 " + "RM"; + factoryFormationString = + " -1.0, 0.0 " + "GK -0.7, " + "0.75LB -1.0, " + "0.25CB -1.0, " + "-0.25CB -0.7, " + "-0.75RB 0.0, 0.5 " + "CM -0.2, 0.0 " + "CM 0.0, -0.5 " + "CM 0.6, 0.75 " + "LM 1.0, 0.0 " + "CF 0.6, -0.75 " + "RM"; + tacticsString = + "0.7200000.5000000.300000" + "0.9600000.960000" + "0.160000" + "0.7000000." + "340000" + "0.9200000.880000" + "0.880000" + "0.740000"; + factoryTacticsString = + "0.7200000.5000000.300000" + "0.9600000.960000" + "0.160000" + "0.7000000." + "340000" + "0.9200000.880000" + "0.880000" + "0.740000"; + shortName = "FRQ"; + color1 = Vector3(255, 100, 100); + color2 = Vector3(100, 100, 255); + break; + case 8: + national = 0; + name = "Real Bayesians"; + logo_url = "images_teams/primeradivision/realmadrid_logo.png"; + kit_url = "images_teams/primeradivision/realmadrid"; + formationString = + "-1.0, " + "0.0GK-0.7, " + "0.75LB-1.0, " + "0.25CB-1.0, " + "-0.25CB-0.7, " + "-0.75RB-0.2, " + "0.3CM-0.2, " + "-0.3CM 0.7, " + "0.9LM 0.2, " + "0.0AM0.7, " + "-0.9RM1.0, " + "0.0CF"; + factoryFormationString = + "-1.0, " + "0.0GK-0.7, " + "0.75LB-1.0, " + "0.25CB-1.0, " + "-0.25CB-0.7, " + "-0.75RB-0.2, " + "0.3CM-0.2, " + "-0.3CM 0.7, " + "0.9LM 0.2, " + "0.0AM0.7, " + "-0.9RM1.0, " + "0.0CF"; + tacticsString = + "0.5000000.9000000.180000" + "0.3800000.660000" + "0.760000" + "0.5400000." + "900000" + "0.1400000.740000" + "0.960000" + "0.940000"; + factoryTacticsString = + "0.5000000.9000000.180000" + "0.3800000.660000" + "0.760000" + "0.5400000." + "900000" + "0.1400000.740000" + "0.960000" + "0.940000"; + shortName = "RBA"; + color1 = Vector3(255, 255, 255); + color2 = Vector3(50, 50, 126); + break; } if (shortName.compare("") == 0) { @@ -122,8 +249,6 @@ TeamData::TeamData(int teamDatabaseID, int playersTeamDatabaseID, shortName = boost::to_upper_copy(shortName.substr(0, 3)); } - delete result; - logo_url = "databases/default/" + logo_url; kit_url = "databases/default/" + kit_url; @@ -219,85 +344,10 @@ TeamData::TeamData(int teamDatabaseID, int playersTeamDatabaseID, iter = tree.children.begin(); while (iter != tree.children.end()) { - tactics.userProperties.Set((*iter).first.c_str(), + tactics.userProperties.Set((*iter).first, atof((*iter).second.value.c_str())); - // printf("value name: %s, value: %f\n", (*iter).first.c_str(), - // atof((*iter).second.value.c_str())); - - if ((*iter).first.compare("position_offense_depth_factor") == 0) { - tactics.humanReadableNames.Set((*iter).first.c_str(), - "attacking: team depth"); - tactics.descriptions.Set( - (*iter).first.c_str(), - "how much vertical space the team takes up, during possession"); - } else if ((*iter).first.compare("position_defense_depth_factor") == 0) { - tactics.humanReadableNames.Set((*iter).first.c_str(), - "defending: team depth"); - tactics.descriptions.Set( - (*iter).first.c_str(), - "how much vertical space the team takes up, while defending"); - } else if ((*iter).first.compare("position_offense_width_factor") == 0) { - tactics.humanReadableNames.Set((*iter).first.c_str(), - "attacking: team width"); - tactics.descriptions.Set((*iter).first.c_str(), - "horizontal team width during possession"); - } else if ((*iter).first.compare("position_defense_width_factor") == 0) { - tactics.humanReadableNames.Set((*iter).first.c_str(), - "defending: team width"); - tactics.descriptions.Set((*iter).first.c_str(), - "horizontal team width while defending"); - } else if ((*iter).first.compare("position_offense_midfieldfocus") == 0) { - tactics.humanReadableNames.Set((*iter).first.c_str(), - "attacking: midfield joins attack"); - tactics.descriptions.Set((*iter).first.c_str(), - "lower values: midfield stays back. higher " - "values: midfield joins attack"); - } else if ((*iter).first.compare("position_defense_midfieldfocus") == 0) { - tactics.humanReadableNames.Set((*iter).first.c_str(), - "defending: midfield stays high up"); - tactics.descriptions.Set((*iter).first.c_str(), - "lower values: midfield stays back. higher " - "values: midfield stays higher up"); - } else if ((*iter).first.compare("position_offense_sidefocus_strength") == - 0) { - tactics.humanReadableNames.Set((*iter).first.c_str(), - "attacking: forward drive"); - tactics.descriptions.Set((*iter).first.c_str(), ""); - } else if ((*iter).first.compare("position_defense_sidefocus_strength") == - 0) { - tactics.humanReadableNames.Set((*iter).first.c_str(), - "defending: backward drive"); - tactics.descriptions.Set((*iter).first.c_str(), ""); - } else if ((*iter).first.compare("position_offense_microfocus_strength") == - 0) { - tactics.humanReadableNames.Set((*iter).first.c_str(), - "attacking: compactness around ball"); - tactics.descriptions.Set((*iter).first.c_str(), ""); - } else if ((*iter).first.compare("position_defense_microfocus_strength") == - 0) { - tactics.humanReadableNames.Set((*iter).first.c_str(), - "defending: compactness around ball"); - tactics.descriptions.Set((*iter).first.c_str(), ""); - } else if ((*iter).first.compare("dribble_offensiveness") == 0) { - tactics.humanReadableNames.Set((*iter).first.c_str(), - "CPU player on the ball: offensiveness"); - tactics.descriptions.Set((*iter).first.c_str(), - "higher values mean more forward drive for the " - "CPU player in possession."); - } else if ((*iter).first.compare("dribble_centermagnet") == 0) { - tactics.humanReadableNames.Set((*iter).first.c_str(), - "CPU player on the ball: prefer center"); - tactics.descriptions.Set( - (*iter).first.c_str(), - "lower values: hug the sidelines more often. higher values: prefer " - "dribbling through the middle of the pitch"); - } - iter++; } - // printf("result:\n"); - // tactics.userProperties.Print(); - // factory tactics tree = loader.Load(factoryTacticsString); @@ -312,24 +362,18 @@ TeamData::TeamData(int teamDatabaseID, int playersTeamDatabaseID, } // load players - - std::string order = "formationorder"; - if (national) order = "nationalformationorder"; - - result = GetDB()->Query( - "select id from players where team_id = " + - int_to_str(playersTeamDatabaseID) + " or nationalteam_id = " + - int_to_str(playersTeamDatabaseID) + " order by " + order); - for (unsigned int r = 0; r < player_count; r++) { - // int playerDatabaseID = atoi(playerQuery.result[r * playerQuery.columns + - // c]); - int playerDatabaseID = atoi(result->data.at(r).at(0).c_str()); - // printf("loading player %i\n", playerDatabaseID); - PlayerData *onePlayerData = new PlayerData(playerDatabaseID); - playerData.push_back(onePlayerData); - } - - delete result; + playerData.push_back(new PlayerData(398)); + playerData.push_back(new PlayerData(11)); + playerData.push_back(new PlayerData(254)); + playerData.push_back(new PlayerData(320)); + playerData.push_back(new PlayerData(103)); + playerData.push_back(new PlayerData(188)); + playerData.push_back(new PlayerData(74)); + playerData.push_back(new PlayerData(332)); + playerData.push_back(new PlayerData(290)); + playerData.push_back(new PlayerData(391)); + playerData.push_back(new PlayerData(264)); + playerData.resize(player_count); } TeamData::~TeamData() { diff --git a/third_party/gfootball_engine/src/data/teamdata.hpp b/third_party/gfootball_engine/src/data/teamdata.hpp index 7e52cb6d..3c01bf70 100755 --- a/third_party/gfootball_engine/src/data/teamdata.hpp +++ b/third_party/gfootball_engine/src/data/teamdata.hpp @@ -32,8 +32,8 @@ struct TeamTactics { Properties factoryProperties; Properties userProperties; - Properties humanReadableNames; - Properties descriptions; + //Properties humanReadableNames; + //Properties descriptions; }; diff --git a/third_party/gfootball_engine/src/framework/scheduler.cpp b/third_party/gfootball_engine/src/framework/scheduler.cpp index cb39e61e..1c071deb 100644 --- a/third_party/gfootball_engine/src/framework/scheduler.cpp +++ b/third_party/gfootball_engine/src/framework/scheduler.cpp @@ -17,9 +17,9 @@ #include "scheduler.hpp" -#include "../managers/resourcemanagerpool.hpp" -#include "../managers/environmentmanager.hpp" #include "../base/log.hpp" +#include "../main.hpp" +#include "../managers/environmentmanager.hpp" namespace blunted { @@ -39,7 +39,7 @@ namespace blunted { if (sequence->GetEntryCount() == 0) Log(e_FatalError, "Scheduler", "RegisterTaskSequence", "Trying to add a sequence without entries"); sequence->AddTerminator(); boost::shared_ptr program(new TaskSequenceProgram()); - unsigned long time_ms = EnvironmentManager::GetInstance().GetTime_ms(); + unsigned long time_ms = GetContext().environment_manager.GetTime_ms(); program->taskSequence = sequence; program->programCounter = 0; program->previousProgramCounter = -1; @@ -55,7 +55,8 @@ namespace blunted { for (unsigned int i = 0; i < sequences.size(); i++) { boost::shared_ptr program = sequences[i]; if (program->taskSequence->GetName() == name) { - program->startTime = EnvironmentManager::GetInstance().GetTime_ms();// - startTime_ms; + program->startTime = + GetContext().environment_manager.GetTime_ms(); // - startTime_ms; program->timesRan = 0; break; } @@ -85,55 +86,65 @@ namespace blunted { unsigned int firstSequence = 0; //while (true) { - unsigned long time_ms = EnvironmentManager::GetInstance().GetTime_ms(); - unsigned long timeDiff_ms = time_ms - previousTime_ms; - previousTime_ms = time_ms; - - // find first sequence entry that needs to be started - - TaskSequenceQueueEntry dueEntry; + unsigned long time_ms = GetContext().environment_manager.GetTime_ms(); + unsigned long timeDiff_ms = time_ms - previousTime_ms; + previousTime_ms = time_ms; - bool someSequenceNeedsDeleting = false; + // find first sequence entry that needs to be started - for (unsigned int i = 0; i < sequences.size(); i++) { - int programIndex = (i + firstSequence) % sequences.size(); - boost::shared_ptr program = sequences.at(programIndex); + TaskSequenceQueueEntry dueEntry; - // check if previous entry is ready - bool previousEntryIsReady = true; - if (program->previousProgramCounter != -1) { - - previousEntryIsReady = program->taskSequence->GetEntry(program->previousProgramCounter)->IsReady(); - - if (previousEntryIsReady && program->programCounter == program->taskSequence->GetEntryCount()) { - program->programCounter = 0; - program->timesRan++; - program->lastSequenceTime = time_ms - program->sequenceStartTime; - } + bool someSequenceNeedsDeleting = false; + for (unsigned int i = 0; i < sequences.size(); i++) { + int programIndex = (i + firstSequence) % sequences.size(); + boost::shared_ptr program = + sequences.at(programIndex); + + // check if previous entry is ready + bool previousEntryIsReady = true; + if (program->previousProgramCounter != -1) { + previousEntryIsReady = + program->taskSequence->GetEntry(program->previousProgramCounter) + ->IsReady(); + + if (previousEntryIsReady && + program->programCounter == program->taskSequence->GetEntryCount()) { + program->programCounter = 0; + program->timesRan++; + program->lastSequenceTime = time_ms - program->sequenceStartTime; } + } - if (previousEntryIsReady) { - - long timeUntilDueEntry_ms = 0; // if programCounter != 0, we just want to start the next entry ASAP - - if (program->programCounter == 0) { // else, (re)starting sequence; find out when it's due + if (previousEntryIsReady) { + long timeUntilDueEntry_ms = 0; // if programCounter != 0, we just want + // to start the next entry ASAP - if (program->taskSequence->GetSkippable()) { - // use relative time: don't mind if last frame lasted too long - timeUntilDueEntry_ms = (program->sequenceStartTime + program->taskSequence->GetSequenceTime()) - time_ms; - } else { - // use absolute time: if not enough iterations have been done to get to frametime * timesran, start immediately - timeUntilDueEntry_ms = (program->startTime + program->taskSequence->GetSequenceTime() * program->timesRan) - time_ms; - } - } + if (program->programCounter == + 0) { // else, (re)starting sequence; find out when it's due - if (!program->readyToQuit && (timeUntilDueEntry_ms < dueEntry.timeUntilDueEntry_ms || dueEntry.program == boost::shared_ptr())) { - dueEntry.program = program; - dueEntry.timeUntilDueEntry_ms = timeUntilDueEntry_ms; + if (program->taskSequence->GetSkippable()) { + // use relative time: don't mind if last frame lasted too long + timeUntilDueEntry_ms = (program->sequenceStartTime + + program->taskSequence->GetSequenceTime()) - + time_ms; + } else { + // use absolute time: if not enough iterations have been done to get + // to frametime * timesran, start immediately + timeUntilDueEntry_ms = + (program->startTime + + program->taskSequence->GetSequenceTime() * program->timesRan) - + time_ms; } + } + if (!program->readyToQuit && + (timeUntilDueEntry_ms < dueEntry.timeUntilDueEntry_ms || + dueEntry.program == boost::shared_ptr())) { + dueEntry.program = program; + dueEntry.timeUntilDueEntry_ms = timeUntilDueEntry_ms; } + } } // checked all sequences and (hopefully) found an entry that is due next @@ -181,7 +192,7 @@ namespace blunted { dueEntry.program->programCounter++; } else { - EnvironmentManager::GetInstance().IncrementTime_ms(10); + GetContext().environment_manager.IncrementTime_ms(10); } } diff --git a/third_party/gfootball_engine/src/gamedefines.cpp b/third_party/gfootball_engine/src/gamedefines.cpp index 032f3007..9fd03810 100755 --- a/third_party/gfootball_engine/src/gamedefines.cpp +++ b/third_party/gfootball_engine/src/gamedefines.cpp @@ -22,6 +22,7 @@ #include "base/log.hpp" #include "base/utils.hpp" +#include "file.h" #include "main.hpp" struct index3 { @@ -34,21 +35,14 @@ void GetVertexColors(std::map &colorCoords) { std::vector faces; std::vector colorFaces; - char line[32767]; - std::ifstream file; - - std::string filename = - GetGameConfig().updatePath("media/objects/players/models/fullbody.ase"); - - file.open(filename.c_str(), std::ios::in); - - if (file.fail()) - Log(e_FatalError, "", "GetVertexColors", - "file not found or empty: " + filename); - - while (file.getline(line, 32767)) { - std::string line_str; - line_str.assign(line); + std::string data = GetFile(GetGameConfig().updatePath("media/objects/players/models/fullbody.ase")); + int pos = 0; + int last_pos = 0; + while (pos < data.length()) { + while (pos < data.length() && data[pos] != '\n') pos++; + std::string line_str = data.substr(last_pos, pos - last_pos); + pos++; + last_pos = pos; std::vector tokens; tokenize(line_str, tokens, " \t"); @@ -86,10 +80,6 @@ void GetVertexColors(std::map &colorCoords) { } if (tokens.at(0).compare("*MESH_FACE") == 0) { - // for (unsigned int x = 0; x < tokens.size(); x++) { - // printf("%s - ", tokens.at(x).c_str()); - // } - // printf("\n"); assert(tokens.size() > 7); index3 bla; bla.index[0] = atoi(tokens.at(3).c_str()); @@ -119,8 +109,6 @@ void GetVertexColors(std::map &colorCoords) { } } } - - file.close(); } e_FunctionType StringToFunctionType(const std::string &fun) { diff --git a/third_party/gfootball_engine/src/gametask.cpp b/third_party/gfootball_engine/src/gametask.cpp index a3272575..9564b26d 100755 --- a/third_party/gfootball_engine/src/gametask.cpp +++ b/third_party/gfootball_engine/src/gametask.cpp @@ -20,7 +20,6 @@ #include "main.hpp" #include "framework/scheduler.hpp" -#include "managers/resourcemanagerpool.hpp" #include "blunted.hpp" @@ -38,12 +37,8 @@ GameTask::~GameTask() { } void GameTask::Exit() { - Action(e_GameTaskMessage_StopMatch); Action(e_GameTaskMessage_StopMenuScene); - - ResourceManagerPool::CleanUp(); - scene3D.reset(); } diff --git a/third_party/gfootball_engine/src/loaders/aseloader.cpp b/third_party/gfootball_engine/src/loaders/aseloader.cpp index e99b48b4..034e8bcd 100644 --- a/third_party/gfootball_engine/src/loaders/aseloader.cpp +++ b/third_party/gfootball_engine/src/loaders/aseloader.cpp @@ -17,14 +17,14 @@ #include "aseloader.hpp" +#include + +#include "../base/geometry/triangle.hpp" +#include "../base/geometry/trianglemeshutils.hpp" #include "../base/log.hpp" #include "../base/math/bluntmath.hpp" #include "../base/math/matrix3.hpp" -#include "../base/geometry/trianglemeshutils.hpp" -#include "../base/geometry/triangle.hpp" -#include "../managers/resourcemanagerpool.hpp" - -#include +#include "../main.hpp" namespace blunted { @@ -365,18 +365,22 @@ namespace blunted { // use texture filename as material name matname.assign(materialList.at(material_reference).maps[0]); - material.diffuseTexture = ResourceManagerPool::getSurfaceManager()->Fetch(matname, true, true); + material.diffuseTexture = + GetContext().surface_manager.Fetch(matname, true, true); matname.assign(materialList.at(material_reference).maps[1]); if (matname.length() > 0) { - material.normalTexture = ResourceManagerPool::getSurfaceManager()->Fetch(matname, true, true); + material.normalTexture = + GetContext().surface_manager.Fetch(matname, true, true); } matname.assign(materialList.at(material_reference).maps[2]); if (matname.length() > 0) { - material.specularTexture = ResourceManagerPool::getSurfaceManager()->Fetch(matname, true, true); + material.specularTexture = + GetContext().surface_manager.Fetch(matname, true, true); } matname.assign(materialList.at(material_reference).maps[3]); if (matname.length() > 0) { - material.illuminationTexture = ResourceManagerPool::getSurfaceManager()->Fetch(matname, true, true); + material.illuminationTexture = + GetContext().surface_manager.Fetch(matname, true, true); } material.shininess = atof(materialList.at(material_reference).shininess.c_str()); diff --git a/third_party/gfootball_engine/src/main.cpp b/third_party/gfootball_engine/src/main.cpp index 35c2623e..30917184 100755 --- a/third_party/gfootball_engine/src/main.cpp +++ b/third_party/gfootball_engine/src/main.cpp @@ -19,33 +19,24 @@ #include #endif -#include "main.hpp" +#include -#include "base/utils.hpp" +#include "ai/ai_keyboard.hpp" +#include "base/log.hpp" #include "base/math/bluntmath.hpp" - +#include "base/utils.hpp" +#include "file.h" +#include "framework/scheduler.hpp" +#include "main.hpp" +#include "managers/scenemanager.hpp" +#include "managers/systemmanager.hpp" +#include "scene/objectfactory.hpp" #include "scene/scene2d/scene2d.hpp" #include "scene/scene3d/scene3d.hpp" - -#include "managers/resourcemanagerpool.hpp" #include "utils/objectloader.hpp" -#include "scene/objectfactory.hpp" - -#include "framework/scheduler.hpp" - -#include "managers/systemmanager.hpp" -#include "managers/scenemanager.hpp" - -#include "base/log.hpp" - #include "utils/orbitcamera.hpp" - #include "wrap_SDL_ttf.h" -#include "ai/ai_keyboard.hpp" - -#include - using std::string; #if defined(WIN32) && defined(__MINGW32__) @@ -54,75 +45,35 @@ using std::string; using namespace blunted; -GraphicsSystem *graphicsSystem; - -boost::shared_ptr scene2D; -boost::shared_ptr scene3D; - -boost::shared_ptr graphicsSequence; -boost::shared_ptr gameSequence; - -boost::shared_ptr gameTask; -boost::shared_ptr menuTask; -boost::shared_ptr synchronizationTask; +thread_local GameContext* context; -Database *db; +GameContext& GetContext() { return *context; } -Properties *config; -ScenarioConfig scenario_config; -GameConfig game_config; -TTF_Font *defaultFont; -TTF_Font *defaultOutlineFont; +void SetContext(GameContext* c) { context = c; } -std::vector controllers; +boost::shared_ptr GetScene2D() { return context->scene2D; } -std::string activeSaveDirectory; +boost::shared_ptr GetScene3D() { return context->scene3D; } -std::string configFile = "football.config"; - -boost::shared_ptr GetScene2D() { - return scene2D; -} - -boost::shared_ptr GetScene3D() { - return scene3D; -} - -GraphicsSystem *GetGraphicsSystem() { - return graphicsSystem; -} +GraphicsSystem* GetGraphicsSystem() { return context->graphicsSystem; } -boost::shared_ptr GetGameTask() { - return gameTask; -} +boost::shared_ptr GetGameTask() { return context->gameTask; } -boost::shared_ptr GetMenuTask() { - return menuTask; -} +boost::shared_ptr GetMenuTask() { return context->menuTask; } boost::shared_ptr GetSynchronizationTask() { - return synchronizationTask; + return context->synchronizationTask; } -Database *GetDB() { - return db; -} +Properties* GetConfiguration() { return context->config; } -Properties *GetConfiguration() { - return config; -} +SystemManager* GetSystemManager() { return &context->system_manager; } -ScenarioConfig& GetScenarioConfig() { - return scenario_config; -} +ScenarioConfig& GetScenarioConfig() { return context->scenario_config; } -GameConfig& GetGameConfig() { - return game_config; -} +GameConfig& GetGameConfig() { return context->game_config; } -const std::vector &GetControllers() { - return controllers; -} +const std::vector& GetControllers() { return context->controllers; } void randomize(unsigned int seed) { srand(seed); @@ -132,105 +83,113 @@ void randomize(unsigned int seed) { } void run_game(Properties* input_config) { - config = input_config; + context->config = input_config; auto& game_config = GetGameConfig(); - Initialize(*config); + Initialize(*context->config); randomize(0); - int timeStep_ms = config->GetInt("physics_frametime_ms", 10); - - - // database - - db = new Database(); - bool dbSuccess = - db->Load(game_config.updatePath("databases/default/database.sqlite")); - if (!dbSuccess) Log(e_FatalError, "main", "()", "Could not open database"); - + int timeStep_ms = context->config->GetInt("physics_frametime_ms", 10); // initialize systems - SystemManager *systemManager = SystemManager::GetInstancePtr(); + SystemManager* systemManager = &GetContext().system_manager; - graphicsSystem = new GraphicsSystem(); - bool returnvalue = systemManager->RegisterSystem("GraphicsSystem", graphicsSystem); + context->graphicsSystem = new GraphicsSystem(); + bool returnvalue = + systemManager->RegisterSystem("GraphicsSystem", context->graphicsSystem); if (!returnvalue) Log(e_FatalError, "football", "main", "Could not register GraphicsSystem"); - graphicsSystem->Initialize(*config); + context->graphicsSystem->Initialize(*context->config); // init scenes - scene2D = boost::shared_ptr(new Scene2D("scene2D", *config)); - SceneManager::GetInstance().RegisterScene(scene2D); + context->scene2D = + boost::shared_ptr(new Scene2D("scene2D", *context->config)); + GetContext().scene_manager.RegisterScene(context->scene2D); - scene3D = boost::shared_ptr(new Scene3D("scene3D")); - SceneManager::GetInstance().RegisterScene(scene3D); + context->scene3D = boost::shared_ptr(new Scene3D("scene3D")); + GetContext().scene_manager.RegisterScene(context->scene3D); for (int x = 0; x < 2 * MAX_PLAYERS; x++) { - controllers.push_back(new AIControlledKeyboard()); + context->controllers.push_back(new AIControlledKeyboard()); } // sequences - gameTask = boost::shared_ptr(new GameTask()); - std::string fontfilename = config->Get("font_filename", "media/fonts/alegreya/AlegreyaSansSC-ExtraBold.ttf"); - defaultFont = TTF_OpenFont(fontfilename.c_str(), 32); - if (!defaultFont) Log(e_FatalError, "football", "main", "Could not load font " + fontfilename); - defaultOutlineFont = TTF_OpenFont(fontfilename.c_str(), 32); - TTF_SetFontOutline(defaultOutlineFont, 2); - menuTask = boost::shared_ptr(new MenuTask(5.0f / 4.0f, 0, defaultFont, defaultOutlineFont, config)); + context->gameTask = boost::shared_ptr(new GameTask()); + std::string fontfilename = context->config->Get( + "font_filename", "media/fonts/alegreya/AlegreyaSansSC-ExtraBold.ttf"); + context->font = GetFile(fontfilename); + context->defaultFont = TTF_OpenFontIndexRW( + SDL_RWFromConstMem(context->font.data(), context->font.size()), 0, 32, 0); + if (!context->defaultFont) + Log(e_FatalError, "football", "main", + "Could not load font " + fontfilename); + context->defaultOutlineFont = TTF_OpenFontIndexRW( + SDL_RWFromConstMem(context->font.data(), context->font.size()), 0, 32, 0); + TTF_SetFontOutline(context->defaultOutlineFont, 2); + context->menuTask = boost::shared_ptr( + new MenuTask(5.0f / 4.0f, 0, context->defaultFont, + context->defaultOutlineFont, context->config)); // ME //if (controllers.size() > 1) menuTask->SetEventJoyButtons(static_cast(controllers.at(1))->GetControllerMapping(e_ControllerButton_A), static_cast(controllers.at(1))->GetControllerMapping(e_ControllerButton_B)); - - gameSequence = boost::shared_ptr(new TaskSequence("game", timeStep_ms, false)); + context->gameSequence = boost::shared_ptr( + new TaskSequence("game", timeStep_ms, false)); // note: the whole locking stuff is now happening from within some of the code, iirc, 't is all very ugly and unclear. sorry //gameSequence->AddLockEntry(graphicsGameMutex, e_LockAction_Lock); // ---------- lock ----- - synchronizationTask = boost::shared_ptr(new SynchronizationTask()); - gameSequence->AddUserTaskEntry(synchronizationTask, e_TaskPhase_Get); + context->synchronizationTask = + boost::shared_ptr(new SynchronizationTask()); + context->gameSequence->AddUserTaskEntry(context->synchronizationTask, + e_TaskPhase_Get); - gameSequence->AddUserTaskEntry(menuTask, e_TaskPhase_Get); - gameSequence->AddUserTaskEntry(menuTask, e_TaskPhase_Process); - gameSequence->AddUserTaskEntry(menuTask, e_TaskPhase_Put); + context->gameSequence->AddUserTaskEntry(context->menuTask, e_TaskPhase_Get); + context->gameSequence->AddUserTaskEntry(context->menuTask, + e_TaskPhase_Process); + context->gameSequence->AddUserTaskEntry(context->menuTask, e_TaskPhase_Put); //gameSequence->AddLockEntry(graphicsGameMutex, e_LockAction_Unlock); // ---------- unlock --- - gameSequence->AddUserTaskEntry(gameTask, e_TaskPhase_Get); - gameSequence->AddUserTaskEntry(gameTask, e_TaskPhase_Process); - gameSequence->AddUserTaskEntry(gameTask, e_TaskPhase_Put); - if (graphicsSystem && game_config.render_mode != e_Disabled) { - gameSequence->AddSystemTaskEntry(graphicsSystem, e_TaskPhase_Get); - gameSequence->AddSystemTaskEntry(graphicsSystem, e_TaskPhase_Process); - gameSequence->AddSystemTaskEntry(graphicsSystem, e_TaskPhase_Put); + context->gameSequence->AddUserTaskEntry(context->gameTask, e_TaskPhase_Get); + context->gameSequence->AddUserTaskEntry(context->gameTask, + e_TaskPhase_Process); + context->gameSequence->AddUserTaskEntry(context->gameTask, e_TaskPhase_Put); + if (context->graphicsSystem && game_config.render_mode != e_Disabled) { + context->gameSequence->AddSystemTaskEntry(context->graphicsSystem, + e_TaskPhase_Get); + context->gameSequence->AddSystemTaskEntry(context->graphicsSystem, + e_TaskPhase_Process); + context->gameSequence->AddSystemTaskEntry(context->graphicsSystem, + e_TaskPhase_Put); } - gameSequence->AddUserTaskEntry(synchronizationTask, e_TaskPhase_Put); - GetScheduler()->RegisterTaskSequence(gameSequence); + context->gameSequence->AddUserTaskEntry(context->synchronizationTask, + e_TaskPhase_Put); + GetScheduler()->RegisterTaskSequence(context->gameSequence); } // fire! void quit_game() { - gameTask.reset(); - menuTask.reset(); + context->gameTask.reset(); + context->menuTask.reset(); - gameSequence.reset(); - graphicsSequence.reset(); + context->gameSequence.reset(); + context->graphicsSequence.reset(); - scene2D.reset(); - scene3D.reset(); + context->scene2D.reset(); + context->scene3D.reset(); - for (unsigned int i = 0; i < controllers.size(); i++) { - delete controllers[i]; + for (unsigned int i = 0; i < context->controllers.size(); i++) { + delete context->controllers[i]; } - controllers.clear(); + context->controllers.clear(); - TTF_CloseFont(defaultFont); - TTF_CloseFont(defaultOutlineFont); + TTF_CloseFont(context->defaultFont); + TTF_CloseFont(context->defaultOutlineFont); - delete db; - delete config; + delete context->config; Exit(); } diff --git a/third_party/gfootball_engine/src/main.hpp b/third_party/gfootball_engine/src/main.hpp index ec9782d0..3aeee1f2 100755 --- a/third_party/gfootball_engine/src/main.hpp +++ b/third_party/gfootball_engine/src/main.hpp @@ -27,11 +27,14 @@ #include "systems/graphics/graphics_system.hpp" #include "synchronizationTask.hpp" - +#include "managers/systemmanager.hpp" +#include "managers/scenemanager.hpp" +#include "scene/objectfactory.hpp" +#include "loaders/aseloader.hpp" +#include "loaders/imageloader.hpp" #include "base/properties.hpp" +#include -#include "utils/database.hpp" -#include enum e_RenderingMode { e_Disabled, @@ -46,8 +49,6 @@ struct GameConfig { e_RenderingMode render_mode = e_Onscreen; // Directory with textures and other resources. std::string data_dir; - // Font file used for rendering UI. - std::string font_file; // How many physics animation steps are done per single environment step. int physics_steps_per_frame = 10; std::string updatePath(const std::string& path) { @@ -104,8 +105,53 @@ struct ScenarioConfig { } }; +struct GameContext { + GameContext() : rng(BaseGenerator(), Distribution()), rng_non_deterministic(BaseGenerator(), Distribution()) {} + GraphicsSystem *graphicsSystem = nullptr; + boost::shared_ptr gameTask; + boost::shared_ptr menuTask; + boost::shared_ptr gameSequence; + boost::shared_ptr graphicsSequence; + boost::shared_ptr scene2D; + boost::shared_ptr scene3D; + boost::shared_ptr synchronizationTask; + + Properties *config = nullptr; + ScenarioConfig scenario_config; + GameConfig game_config; + std::string font; + TTF_Font *defaultFont = nullptr; + TTF_Font *defaultOutlineFont = nullptr; + + std::vector controllers; + SystemManager system_manager; + ObjectFactory object_factory; + EnvironmentManager environment_manager; + ResourceManager geometry_manager; + ResourceManager surface_manager; + ResourceManager texture_manager; + ResourceManager vertices_manager; + ASELoader aseLoader; + ImageLoader imageLoader; + Scheduler scheduler; + SceneManager scene_manager; + + typedef boost::mt19937 BaseGenerator; + typedef boost::uniform_real Distribution; + typedef boost::variate_generator Generator; + Generator rng; + + // Two random number generators are needed. One (deterministic when running + // in deterministic mode) to be used in places which generate deterministic + // game state. Second one is used in places which are optional and don't + // affect observations (like position of the sun). + Generator rng_non_deterministic; +}; + class Match; +void SetContext(GameContext* c); +GameContext& GetContext(); boost::shared_ptr GetScene2D(); boost::shared_ptr GetScene3D(); GraphicsSystem *GetGraphicsSystem(); @@ -113,8 +159,8 @@ boost::shared_ptr GetGameTask(); boost::shared_ptr GetMenuTask(); boost::shared_ptr GetSynchronizationTask(); -Database *GetDB(); Properties *GetConfiguration(); +SystemManager* GetSystemManager(); ScenarioConfig& GetScenarioConfig(); GameConfig& GetGameConfig(); diff --git a/third_party/gfootball_engine/src/managers/environmentmanager.cpp b/third_party/gfootball_engine/src/managers/environmentmanager.cpp index cf629057..e1101636 100644 --- a/third_party/gfootball_engine/src/managers/environmentmanager.cpp +++ b/third_party/gfootball_engine/src/managers/environmentmanager.cpp @@ -22,9 +22,6 @@ namespace blunted { - template<> EnvironmentManager* Singleton::singleton = 0; - - EnvironmentManager::EnvironmentManager() { }; diff --git a/third_party/gfootball_engine/src/managers/environmentmanager.hpp b/third_party/gfootball_engine/src/managers/environmentmanager.hpp index 4b7de1c1..a5d15a2b 100644 --- a/third_party/gfootball_engine/src/managers/environmentmanager.hpp +++ b/third_party/gfootball_engine/src/managers/environmentmanager.hpp @@ -20,11 +20,9 @@ #include "../defines.hpp" -#include "../types/singleton.hpp" - namespace blunted { - class EnvironmentManager : public Singleton { + class EnvironmentManager { public: EnvironmentManager(); diff --git a/third_party/gfootball_engine/src/managers/resourcemanager.hpp b/third_party/gfootball_engine/src/managers/resourcemanager.hpp index 8b74d55f..458e3eba 100644 --- a/third_party/gfootball_engine/src/managers/resourcemanager.hpp +++ b/third_party/gfootball_engine/src/managers/resourcemanager.hpp @@ -36,7 +36,7 @@ namespace blunted { class ResourceManager { public: - ResourceManager(const std::string &typeDescription) : typeDescription(typeDescription) {}; + ResourceManager() {}; ~ResourceManager() { @@ -183,8 +183,6 @@ namespace blunted { std::map < std::string, boost::intrusive_ptr < Resource > > resources; - std::string typeDescription; - private: }; diff --git a/third_party/gfootball_engine/src/managers/resourcemanagerpool.cpp b/third_party/gfootball_engine/src/managers/resourcemanagerpool.cpp deleted file mode 100644 index 9bd03d4c..00000000 --- a/third_party/gfootball_engine/src/managers/resourcemanagerpool.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2019 Google LLC & Bastiaan Konings -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// written by bastiaan konings schuiling 2008 - 2014 -// this work is public domain. the code is undocumented, scruffy, untested, and should generally not be used for anything important. -// i do not offer support, so don't ask. to be used for inspiration :) - -#include "resourcemanagerpool.hpp" - -namespace blunted { -ResourceManager geometryManager(""); -ResourceManager surfaceManager(""); -ResourceManager textureManager(""); -ResourceManager verticesManager(""); - - void ResourceManagerPool::CleanUp() { - geometryManager.RemoveUnused(); - surfaceManager.RemoveUnused(); - textureManager.RemoveUnused(); - verticesManager.RemoveUnused(); -} - - ResourceManager* ResourceManagerPool::getGeometryManager() { - return &geometryManager; -} - - ResourceManager* ResourceManagerPool::getSurfaceManager() { - return &surfaceManager; -} - - ResourceManager* ResourceManagerPool::getTextureManager() { - return &textureManager; -} - - ResourceManager* ResourceManagerPool::getVerticesManager() { - return &verticesManager; -} - -} diff --git a/third_party/gfootball_engine/src/managers/resourcemanagerpool.hpp b/third_party/gfootball_engine/src/managers/resourcemanagerpool.hpp deleted file mode 100644 index c48729a3..00000000 --- a/third_party/gfootball_engine/src/managers/resourcemanagerpool.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2019 Google LLC & Bastiaan Konings -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// written by bastiaan konings schuiling 2008 - 2014 -// this work is public domain. the code is undocumented, scruffy, untested, and should generally not be used for anything important. -// i do not offer support, so don't ask. to be used for inspiration :) - -#ifndef _HPP_RESOURCEMANAGERPOOL -#define _HPP_RESOURCEMANAGERPOOL - -#include "../managers/resourcemanager.hpp" -#include "../types/singleton.hpp" -#include "../types/resource.hpp" - -namespace blunted { - - class Texture; - class VertexBuffer; - class GeometryData; - class Surface; - - class ResourceManagerPool { - public: - - static void CleanUp(); - - static ResourceManager* getGeometryManager(); - - static ResourceManager* getSurfaceManager(); - - static ResourceManager* getTextureManager(); - - static ResourceManager* getVerticesManager(); - }; - -} - -#endif diff --git a/third_party/gfootball_engine/src/managers/scenemanager.cpp b/third_party/gfootball_engine/src/managers/scenemanager.cpp index 7a65b10e..9cb84398 100644 --- a/third_party/gfootball_engine/src/managers/scenemanager.cpp +++ b/third_party/gfootball_engine/src/managers/scenemanager.cpp @@ -18,13 +18,11 @@ #include "scenemanager.hpp" #include "../base/log.hpp" - +#include "../main.hpp" #include "../managers/systemmanager.hpp" namespace blunted { - template<> SceneManager* Singleton::singleton = 0; - SceneManager::SceneManager() { } @@ -40,7 +38,7 @@ namespace blunted { void SceneManager::RegisterScene(boost::shared_ptr scene) { scenes.push_back(scene); - SystemManager::GetInstance().CreateSystemScenes(scene); + GetSystemManager()->CreateSystemScenes(scene); } boost::shared_ptr SceneManager::GetScene(const std::string &name, bool &success) { diff --git a/third_party/gfootball_engine/src/managers/scenemanager.hpp b/third_party/gfootball_engine/src/managers/scenemanager.hpp index 706a1b4c..422c992b 100644 --- a/third_party/gfootball_engine/src/managers/scenemanager.hpp +++ b/third_party/gfootball_engine/src/managers/scenemanager.hpp @@ -16,16 +16,13 @@ #include "../defines.hpp" -#include "../types/singleton.hpp" #include "../scene/scene.hpp" namespace blunted { typedef std::vector < boost::shared_ptr > vector_Scenes; - class SceneManager : public Singleton { - - friend class Singleton; + class SceneManager { public: SceneManager(); diff --git a/third_party/gfootball_engine/src/managers/systemmanager.cpp b/third_party/gfootball_engine/src/managers/systemmanager.cpp index 6e334f72..9d64dafe 100644 --- a/third_party/gfootball_engine/src/managers/systemmanager.cpp +++ b/third_party/gfootball_engine/src/managers/systemmanager.cpp @@ -24,8 +24,6 @@ namespace blunted { - template<> SystemManager* Singleton::singleton = 0; - SystemManager::SystemManager() { } diff --git a/third_party/gfootball_engine/src/managers/systemmanager.hpp b/third_party/gfootball_engine/src/managers/systemmanager.hpp index ecf4a09d..ea133d5c 100644 --- a/third_party/gfootball_engine/src/managers/systemmanager.hpp +++ b/third_party/gfootball_engine/src/managers/systemmanager.hpp @@ -20,8 +20,6 @@ #include "../defines.hpp" -#include "../types/singleton.hpp" - namespace blunted { class ISystem; @@ -32,7 +30,7 @@ namespace blunted { /// manages the registration of systems and the creation of their scenes and objects - class SystemManager : public Singleton { + class SystemManager { public: SystemManager(); diff --git a/third_party/gfootball_engine/src/menu/menuscene.cpp b/third_party/gfootball_engine/src/menu/menuscene.cpp index 22ec6128..484a3dec 100755 --- a/third_party/gfootball_engine/src/menu/menuscene.cpp +++ b/third_party/gfootball_engine/src/menu/menuscene.cpp @@ -18,12 +18,15 @@ #include "menuscene.hpp" #include - -#include "../managers/resourcemanagerpool.hpp" #include "../scene/objectfactory.hpp" - #include "../main.hpp" +MenuSceneLocation::MenuSceneLocation() { + position = Vector3(0.0f, 0.0f, 1.0f); + orientation = Quaternion(QUATERNION_IDENTITY); + timeStamp_ms = GetContext().environment_manager.GetTime_ms(); +} + MenuScene::MenuScene() { seamless = false; @@ -37,7 +40,8 @@ MenuScene::MenuScene() { // camera - camera = static_pointer_cast(ObjectFactory::GetInstance().CreateObject("camera_MenuScene", e_ObjectType_Camera)); + camera = static_pointer_cast(GetContext().object_factory.CreateObject( + "camera_MenuScene", e_ObjectType_Camera)); GetScene3D()->CreateSystemObjects(camera); camera->Init(); camera->SetFOV(90); @@ -54,7 +58,9 @@ MenuScene::MenuScene() { float hoverLightBrightness = 2.0f; for (int i = 0; i < 3; i++) { - hoverLights[i] = static_pointer_cast(ObjectFactory::GetInstance().CreateObject("light_MenuScene_hover" + int_to_str(i), e_ObjectType_Light)); + hoverLights[i] = + static_pointer_cast(GetContext().object_factory.CreateObject( + "light_MenuScene_hover" + int_to_str(i), e_ObjectType_Light)); GetScene3D()->CreateSystemObjects(hoverLights[i]); hoverLights[i]->SetShadow(false); hoverLights[i]->SetType(e_LightType_Point); @@ -68,8 +74,11 @@ MenuScene::MenuScene() { // geometry - boost::intrusive_ptr < Resource > geometryData = ResourceManagerPool::getGeometryManager()->Fetch("media/objects/menu/background01.ase", true); - geom = static_pointer_cast(ObjectFactory::GetInstance().CreateObject("geometry_menuscene", e_ObjectType_Geometry)); + boost::intrusive_ptr > geometryData = + GetContext().geometry_manager.Fetch("media/objects/menu/background01.ase", + true); + geom = static_pointer_cast(GetContext().object_factory.CreateObject( + "geometry_menuscene", e_ObjectType_Geometry)); GetScene3D()->CreateSystemObjects(geom); geom->SetGeometryData(geometryData); geom->SetPosition(Vector3(0.0f, 0.0f, 0.0f)); @@ -90,7 +99,7 @@ void MenuScene::Get() { void MenuScene::Process() { // calculate position - unsigned long time_ms = EnvironmentManager::GetInstance().GetTime_ms(); + unsigned long time_ms = GetContext().environment_manager.GetTime_ms(); if (targetLocation.timeStamp_ms >= time_ms) { float bias = (time_ms - sourceLocation.timeStamp_ms) / (float)(targetLocation.timeStamp_ms - sourceLocation.timeStamp_ms); @@ -146,7 +155,8 @@ void MenuScene::Put() { } void MenuScene::RandomizeTargetLocation() { - Vector3 dir = Vector3(0.0f, -1.0f, 0.0f).GetRotated2D(random(-1.0f * pi, 1.0f * pi)); + Vector3 dir = Vector3(0.0f, -1.0f, 0.0f) + .GetRotated2D(boostrandom(-1.0f * pi, 1.0f * pi)); dir *= 0.5f; Vector3 targetPos; @@ -160,19 +170,21 @@ void MenuScene::RandomizeTargetLocation() { if (targetPos1.GetLength() > targetPos2.GetLength()) targetPos = targetPos2; } - radian angle = random(-0.1f * pi, 0.1f * pi); + radian angle = boostrandom(-0.1f * pi, 0.1f * pi); SetTargetLocation(targetPos, angle); } void MenuScene::SetTargetLocation(const Vector3 &position, radian angle) { Quaternion orientation; - orientation.SetAngleAxis(angle, Vector3(random(-0.2f, 0.2f), random(-0.2f, 0.2f), -1.0f).GetNormalized()); + orientation.SetAngleAxis( + angle, Vector3(boostrandom(-0.2f, 0.2f), boostrandom(-0.2f, 0.2f), -1.0f) + .GetNormalized()); SetTargetLocation(position, orientation); } void MenuScene::SetTargetLocation(const Vector3 &position, const Quaternion &orientation) { - sourceLocation.timeStamp_ms = EnvironmentManager::GetInstance().GetTime_ms(); + sourceLocation.timeStamp_ms = GetContext().environment_manager.GetTime_ms(); sourceLocation.position = currentPosition; sourceLocation.orientation = currentOrientation; diff --git a/third_party/gfootball_engine/src/menu/menuscene.hpp b/third_party/gfootball_engine/src/menu/menuscene.hpp index 70d45867..dab5b2c0 100755 --- a/third_party/gfootball_engine/src/menu/menuscene.hpp +++ b/third_party/gfootball_engine/src/menu/menuscene.hpp @@ -28,11 +28,7 @@ using namespace blunted; struct MenuSceneLocation { - MenuSceneLocation() { - position = Vector3(0.0f, 0.0f, 1.0f); - orientation = Quaternion(QUATERNION_IDENTITY); - timeStamp_ms = EnvironmentManager::GetInstance().GetTime_ms(); - } + MenuSceneLocation(); Vector3 position; Quaternion orientation; unsigned long timeStamp_ms = 0; diff --git a/third_party/gfootball_engine/src/menu/menutask.cpp b/third_party/gfootball_engine/src/menu/menutask.cpp index 577faf4a..aff1b76f 100755 --- a/third_party/gfootball_engine/src/menu/menutask.cpp +++ b/third_party/gfootball_engine/src/menu/menutask.cpp @@ -26,7 +26,6 @@ #include "../main.hpp" #include "../framework/scheduler.hpp" -#include "../managers/resourcemanagerpool.hpp" using namespace blunted; diff --git a/third_party/gfootball_engine/src/onthepitch/ball.cpp b/third_party/gfootball_engine/src/onthepitch/ball.cpp index cd9aed35..3e0be5f5 100755 --- a/third_party/gfootball_engine/src/onthepitch/ball.cpp +++ b/third_party/gfootball_engine/src/onthepitch/ball.cpp @@ -22,8 +22,6 @@ #include "../utils/objectloader.hpp" #include "../scene/objectfactory.hpp" -#include "../managers/resourcemanagerpool.hpp" - #include "match.hpp" #include "../main.hpp" diff --git a/third_party/gfootball_engine/src/onthepitch/humangamer.cpp b/third_party/gfootball_engine/src/onthepitch/humangamer.cpp index 0a2769ec..0fe72b05 100755 --- a/third_party/gfootball_engine/src/onthepitch/humangamer.cpp +++ b/third_party/gfootball_engine/src/onthepitch/humangamer.cpp @@ -19,8 +19,6 @@ #include "team.hpp" -#include "../managers/resourcemanagerpool.hpp" - #include "../scene/objectfactory.hpp" #include "../main.hpp" diff --git a/third_party/gfootball_engine/src/onthepitch/match.cpp b/third_party/gfootball_engine/src/onthepitch/match.cpp index 01460d13..1ad9aadc 100755 --- a/third_party/gfootball_engine/src/onthepitch/match.cpp +++ b/third_party/gfootball_engine/src/onthepitch/match.cpp @@ -19,26 +19,18 @@ #include +#include "../base/geometry/triangle.hpp" +#include "../base/log.hpp" #include "../main.hpp" - -#include "proceduralpitch.hpp" - +#include "../menu/pagefactory.hpp" +#include "../menu/startmatch/loadingmatch.hpp" #include "../scene/objectfactory.hpp" +#include "../scene/objects/light.hpp" #include "../utils/splitgeometry.hpp" -#include "../utils/directoryparser.hpp" #include "AIsupport/AIfunctions.hpp" -#include "../scene/objects/light.hpp" - -#include "../managers/resourcemanagerpool.hpp" - -#include "../base/geometry/triangle.hpp" - +#include "file.h" #include "player/playerofficial.hpp" - -#include "../base/log.hpp" - -#include "../menu/pagefactory.hpp" -#include "../menu/startmatch/loadingmatch.hpp" +#include "proceduralpitch.hpp" const unsigned int replaySize_ms = 10000; const unsigned int camPosSize = 150;//180; //130 @@ -80,7 +72,7 @@ Match::Match(MatchData *matchData, const std::vector &controllers) : if (!anims) { anims = boost::shared_ptr(new AnimCollection(GetScene3D())); - anims->Load("media/animations"); + anims->Load(); // cache animation positions const std::vector < Animation* > &animationsTmp = anims->GetAnimations(); @@ -130,7 +122,8 @@ Match::Match(MatchData *matchData, const std::vector &controllers) : // officials std::string kitFilename = "media/objects/players/textures/referee_kit.png"; - boost::intrusive_ptr < Resource > kit = ResourceManagerPool::getSurfaceManager()->Fetch(kitFilename); + boost::intrusive_ptr > kit = + GetContext().surface_manager.Fetch(kitFilename); officials = new Officials(this, fullbodyNode, colorCoords, kit, anims); dynamicNode->AddObject(officials->GetYellowCardGeom()); @@ -139,7 +132,8 @@ Match::Match(MatchData *matchData, const std::vector &controllers) : // camera - camera = static_pointer_cast(ObjectFactory::GetInstance().CreateObject("camera", e_ObjectType_Camera)); + camera = static_pointer_cast( + GetContext().object_factory.CreateObject("camera", e_ObjectType_Camera)); GetScene3D()->CreateSystemObjects(camera); camera->Init(); @@ -227,10 +221,12 @@ Match::Match(MatchData *matchData, const std::vector &controllers) : bestPossessionTeam = 0; SetMatchPhase(e_MatchPhase_PreMatch); - gameSequenceInfo = GetScheduler()->GetTaskSequenceInfo("game"); + gameSequenceInfo = GetContext().scheduler.GetTaskSequenceInfo("game"); - previousProcessTime_ms = EnvironmentManager::GetInstance().GetTime_ms() - gameSequenceInfo.startTime_ms; - previousPutTime_ms = EnvironmentManager::GetInstance().GetTime_ms() - gameSequenceInfo.startTime_ms; + previousProcessTime_ms = GetContext().environment_manager.GetTime_ms() - + gameSequenceInfo.startTime_ms; + previousPutTime_ms = GetContext().environment_manager.GetTime_ms() - + gameSequenceInfo.startTime_ms; timeSincePreviousProcess_ms = 0; timeSincePreviousPut_ms = 0; @@ -319,9 +315,14 @@ void Match::SetRandomSunParams() { Vector3 sunPos = Vector3(-1.2f, 0.4f, 1.0f); // sane default float averageHeightMultiplier = 1.3f; - sunPos = Vector3(clamp(random(-1.7f, 1.7f), -1.0, 1.0), clamp(random(-1.7f, 1.7f), -1.0, 1.0), averageHeightMultiplier); + sunPos = Vector3(clamp(boostrandom(-1.7f, 1.7f), -1.0, 1.0), + clamp(boostrandom(-1.7f, 1.7f), -1.0, 1.0), + averageHeightMultiplier); sunPos.Normalize(); - if (random(0, 1) > 0.5f && sunPos.coords[1] > 0.25f) sunPos.coords[1] = -sunPos.coords[1]; // sun more often on (default) camera side (coming from front == clearer lighting on players) + if (boostrandom(0, 1) > 0.5f && sunPos.coords[1] > 0.25f) + sunPos.coords[1] = + -sunPos.coords[1]; // sun more often on (default) camera side (coming + // from front == clearer lighting on players) sunNode->GetObject("sun")->SetPosition(sunPos * 10000.0f); float defaultRadius = 1000000.0f; @@ -335,7 +336,8 @@ void Match::SetRandomSunParams() { std::pow(NormalizedClamp(sunPos.coords[2], 0.5f, 1.0f), 1.2f); Vector3 sunColor = sunColorNoon * noonBias + sunColorDusk * (1.0f - noonBias); - Vector3 randomAddition(random(-0.1, 0.1), random(-0.1, 0.1), random(-0.1, 0.1)); + Vector3 randomAddition(boostrandom(-0.1, 0.1), boostrandom(-0.1, 0.1), + boostrandom(-0.1, 0.1)); randomAddition *= 1.2f; sunColor += randomAddition; @@ -345,14 +347,13 @@ void Match::SetRandomSunParams() { void Match::RandomizeAdboards(boost::intrusive_ptr stadiumNode) { // collect texture files - DirectoryParser parser; std::vector files; - parser.Parse("media/textures/adboards", "bmp", files, false); + GetFiles("media/textures/adboards", "bmp", files); sort(files.begin(), files.end()); std::vector < boost::intrusive_ptr < Resource > > adboardSurfaces; for (unsigned int i = 0; i < files.size(); i++) { - adboardSurfaces.push_back(ResourceManagerPool::getSurfaceManager()->Fetch(files[i])); + adboardSurfaces.push_back(GetContext().surface_manager.Fetch(files[i])); } if (adboardSurfaces.empty()) return; @@ -650,8 +651,8 @@ void Match::GetState(SharedInfo *state) { (ball->GetRotation() / GetGameConfig().physics_steps_per_frame).coords; state->ball_direction = (ball->GetMovement() / GetGameConfig().physics_steps_per_frame).coords; - state->ball_owned_team = GetLastTouchTeamID(); state->ball_owned_player = -1; + state->ball_owned_team = -1; state->left_goals = GetScore(0); state->right_goals = GetScore(1); state->is_in_play = IsInPlay(); @@ -698,8 +699,10 @@ void Match::GetState(SharedInfo *state) { info.has_card = player->HasCards(); info.is_active = player->IsActive(); info.role = player->GetFormationEntry().role; - if (player->HasPossession()) { + if (player->HasPossession() && GetLastTouchTeamID() != -1 && + GetLastTouchTeam()->GetLastTouchPlayer() == player) { state->ball_owned_player = team.size(); + state->ball_owned_team = GetLastTouchTeamID(); } team.push_back(info); } @@ -713,8 +716,8 @@ void Match::Get() { } void Match::Process() { - - unsigned long time_ms = EnvironmentManager::GetInstance().GetTime_ms() - gameSequenceInfo.startTime_ms; + unsigned long time_ms = GetContext().environment_manager.GetTime_ms() - + gameSequenceInfo.startTime_ms; timeSincePreviousProcess_ms = time_ms - GetPreviousProcessTime_ms(); previousProcessTime_ms = time_ms; @@ -940,9 +943,9 @@ void Match::Process() { } void Match::PreparePutBuffers() { - - gameSequenceInfo = GetScheduler()->GetTaskSequenceInfo("game"); - unsigned long time_ms = EnvironmentManager::GetInstance().GetTime_ms() - gameSequenceInfo.startTime_ms; + gameSequenceInfo = GetContext().scheduler.GetTaskSequenceInfo("game"); + unsigned long time_ms = GetContext().environment_manager.GetTime_ms() - + gameSequenceInfo.startTime_ms; timeSincePreviousPreparePut_ms = time_ms - GetPreviousPreparePutTime_ms(); previousPreparePutTime_ms = time_ms; @@ -962,10 +965,12 @@ void Match::PreparePutBuffers() { buf_cameraNodeOrientation.SetValue(cameraNodeOrientation, snapshotTime_ms); // test fun! - //float xfun = sin((float)EnvironmentManager::GetInstance().GetTime_ms() * 0.001f) * 60; - //float xfun = sin((float)(EnvironmentManager::GetInstance().GetTime_ms() + PredictFrameTimeToGo_ms(7)) * 0.001f) * 60; - //float xfun = sin(snapshotTime_ms * 0.001f) * 60.0f; - //buf_cameraNodePosition.SetValue(cameraNodePosition + Vector3(xfun, 0, 0), snapshotTime_ms); + // float xfun = sin((float)GetContext().environment_manager.GetTime_ms() * + // 0.001f) * 60; float xfun = + // sin((float)(GetContext().environment_manager.GetTime_ms() + + // PredictFrameTimeToGo_ms(7)) * 0.001f) * 60; float xfun = sin(snapshotTime_ms + // * 0.001f) * 60.0f; buf_cameraNodePosition.SetValue(cameraNodePosition + + // Vector3(xfun, 0, 0), snapshotTime_ms); buf_cameraNodePosition.SetValue(cameraNodePosition, snapshotTime_ms); //printf("timetogo prediction: %i ms\n", PredictFrameTimeToGo_ms(7)); @@ -982,7 +987,8 @@ void Match::FetchPutBuffers() { if (GetIterations() < 1) return; // no processes done yet - unsigned long time_ms = EnvironmentManager::GetInstance().GetTime_ms() - gameSequenceInfo.startTime_ms; + unsigned long time_ms = GetContext().environment_manager.GetTime_ms() - + gameSequenceInfo.startTime_ms; timeSincePreviousPut_ms = time_ms - GetPreviousPutTime_ms(); previousPutTime_ms = time_ms; unsigned long putTime_ms = time_ms;// - gameSequenceInfo.startTime_ms; // test: + PredictFrameTimeToGo_ms(7) - 15; @@ -1617,7 +1623,8 @@ void Match::CheckBallCollisions() { resultVector *= 0.7f; ball->Touch(resultVector); - ball->SetRotation(random(-30, 30), random(-30, 30), random(-30, 30), 0.5f * bias); + ball->SetRotation(boostrandom(-30, 30), boostrandom(-30, 30), + boostrandom(-30, 30), 0.5f * bias); lastBodyBallCollisionTime_ms = actualTime_ms; } diff --git a/third_party/gfootball_engine/src/onthepitch/officials.cpp b/third_party/gfootball_engine/src/onthepitch/officials.cpp index d95e0b21..e195d1bf 100755 --- a/third_party/gfootball_engine/src/onthepitch/officials.cpp +++ b/third_party/gfootball_engine/src/onthepitch/officials.cpp @@ -19,7 +19,6 @@ #include "../scene/scene3d/scene3d.hpp" -#include "../managers/resourcemanagerpool.hpp" #include "../utils/objectloader.hpp" #include "../scene/objectfactory.hpp" @@ -51,15 +50,22 @@ Officials::Officials(Match *match, boost::intrusive_ptr fullbodySourceNode linesmen[0]->CastHumanoid()->ResetPosition(Vector3(25, -36.5, 0), Vector3(0)); linesmen[1]->CastHumanoid()->ResetPosition(Vector3(-25, 36.5, 0), Vector3(0)); - boost::intrusive_ptr < Resource > geometry = ResourceManagerPool::getGeometryManager()->Fetch("media/objects/officials/yellowcard.ase", true); - yellowCard = static_pointer_cast(ObjectFactory::GetInstance().CreateObject("yellowcard", e_ObjectType_Geometry)); + boost::intrusive_ptr > geometry = + GetContext().geometry_manager.Fetch( + "media/objects/officials/yellowcard.ase", true); + yellowCard = + static_pointer_cast(GetContext().object_factory.CreateObject( + "yellowcard", e_ObjectType_Geometry)); GetScene3D()->CreateSystemObjects(yellowCard); yellowCard->SetGeometryData(geometry); yellowCard->SetLocalMode(e_LocalMode_Absolute); yellowCard->SetPosition(Vector3(0, 0, -10)); - geometry = ResourceManagerPool::getGeometryManager()->Fetch("media/objects/officials/redcard.ase", true); - redCard = static_pointer_cast(ObjectFactory::GetInstance().CreateObject("redcard", e_ObjectType_Geometry)); + geometry = GetContext().geometry_manager.Fetch( + "media/objects/officials/redcard.ase", true); + redCard = + static_pointer_cast(GetContext().object_factory.CreateObject( + "redcard", e_ObjectType_Geometry)); GetScene3D()->CreateSystemObjects(redCard); redCard->SetGeometryData(geometry); redCard->SetLocalMode(e_LocalMode_Absolute); diff --git a/third_party/gfootball_engine/src/onthepitch/player/controller/elizacontroller.cpp b/third_party/gfootball_engine/src/onthepitch/player/controller/elizacontroller.cpp index e787b670..8aaac621 100755 --- a/third_party/gfootball_engine/src/onthepitch/player/controller/elizacontroller.cpp +++ b/third_party/gfootball_engine/src/onthepitch/player/controller/elizacontroller.cpp @@ -117,13 +117,18 @@ void ElizaController::RequestCommand(PlayerCommandQueue &commandQueue) { command.desiredVelocityFloat = idleVelocity; //if (!match->IsInSetPiece()) { command.desiredDirection = (player->GetDirectionVec() * 0.6f + (Vector3(0) - player->GetPosition()).GetNormalized(player->GetDirectionVec()) * 0.4f).GetNormalized(player->GetDirectionVec()); - command.desiredVelocityFloat = ClampVelocity(player->GetFloatVelocity() * 0.95f - random(0.0f, 3.2f)); - //} - command.useDesiredLookAt = true; - command.desiredLookAt = player->GetPosition() + (match->GetBall()->Predict(0).Get2D() - player->GetPosition()).GetNormalized(command.desiredDirection) * 10.0f; - commandQueue.push_back(command); + command.desiredVelocityFloat = ClampVelocity( + player->GetFloatVelocity() * 0.95f - boostrandom(0.0f, 3.2f)); + //} + command.useDesiredLookAt = true; + command.desiredLookAt = + player->GetPosition() + + (match->GetBall()->Predict(0).Get2D() - player->GetPosition()) + .GetNormalized(command.desiredDirection) * + 10.0f; + commandQueue.push_back(command); - return; + return; } @@ -138,8 +143,11 @@ void ElizaController::RequestCommand(PlayerCommandQueue &commandQueue) { actionCommand.desiredFunctionType = e_FunctionType_Shot; actionCommand.useDesiredMovement = false; actionCommand.useDesiredLookAt = false; - actionCommand.touchInfo.desiredDirection = (Vector3(-team->GetSide() * pitchHalfW, random(-5, 5), 0) - CastPlayer()->GetPosition()).GetNormalized(Vector3(-team->GetSide(), 0, 0)); - actionCommand.touchInfo.desiredPower = random(0.4f, 1.0f); + actionCommand.touchInfo.desiredDirection = + (Vector3(-team->GetSide() * pitchHalfW, boostrandom(-5, 5), 0) - + CastPlayer()->GetPosition()) + .GetNormalized(Vector3(-team->GetSide(), 0, 0)); + actionCommand.touchInfo.desiredPower = boostrandom(0.4f, 1.0f); commandQueue.push_back(actionCommand); } else { @@ -158,12 +166,16 @@ void ElizaController::RequestCommand(PlayerCommandQueue &commandQueue) { bool doCommand = true; if (team->GetController()->GetSetPieceType() == e_GameMode_GoalKick) { - if (random(0.0f, 1.0f) > 0.4f && team->GetHumanGamerCount() == 0) { + if (boostrandom(0.0f, 1.0f) > 0.4f && team->GetHumanGamerCount() == 0) { actionCommand.desiredFunctionType = e_FunctionType_HighPass; - desiredTargetPosition = Vector3((pitchHalfW * -team->GetSide()) * 0.2f, random(-pitchHalfH, pitchHalfH), 0.0f); + desiredTargetPosition = + Vector3((pitchHalfW * -team->GetSide()) * 0.2f, + boostrandom(-pitchHalfH, pitchHalfH), 0.0f); } else { actionCommand.desiredFunctionType = e_FunctionType_ShortPass; - desiredTargetPosition = Vector3(player->GetPosition().coords[0] * 0.9f, random(-pitchHalfH, pitchHalfH), 0.0f); + desiredTargetPosition = + Vector3(player->GetPosition().coords[0] * 0.9f, + boostrandom(-pitchHalfH, pitchHalfH), 0.0f); } } else if (team->GetController()->GetSetPieceType() == e_GameMode_KickOff) { @@ -171,18 +183,24 @@ void ElizaController::RequestCommand(PlayerCommandQueue &commandQueue) { desiredTargetPosition = player->GetPosition() + player->GetDirectionVec() * 1.0f; } else if (team->GetController()->GetSetPieceType() == e_GameMode_FreeKick) { - if (random(0.0f, 1.0f) > 0.5f) { + if (boostrandom(0.0f, 1.0f) > 0.5f) { actionCommand.desiredFunctionType = e_FunctionType_HighPass; - desiredTargetPosition = Vector3(pitchHalfW * -team->GetSide(), random(-10.0f, 10.0f), 0.0f); + desiredTargetPosition = Vector3(pitchHalfW * -team->GetSide(), + boostrandom(-10.0f, 10.0f), 0.0f); } else { actionCommand.desiredFunctionType = e_FunctionType_ShortPass; - desiredTargetPosition = player->GetPosition() + Vector3(-team->GetSide() * 10.0f, random(-10.0f, 10.0f), 0.0f); + desiredTargetPosition = + player->GetPosition() + Vector3(-team->GetSide() * 10.0f, + boostrandom(-10.0f, 10.0f), 0.0f); } } else if (team->GetController()->GetSetPieceType() == e_GameMode_Corner) { - if (random(0.0f, 1.0f) > 0.3f) { + if (boostrandom(0.0f, 1.0f) > 0.3f) { actionCommand.desiredFunctionType = e_FunctionType_HighPass; - desiredTargetPosition = Vector3((pitchHalfW * -team->GetSide()) * (0.99f - random(0.0f, 0.12f)), random(-10.0f, 10.0f), 0.0f); + desiredTargetPosition = + Vector3((pitchHalfW * -team->GetSide()) * + (0.99f - boostrandom(0.0f, 0.12f)), + boostrandom(-10.0f, 10.0f), 0.0f); } else { actionCommand.desiredFunctionType = e_FunctionType_ShortPass; desiredTargetPosition = Vector3((pitchHalfW * -team->GetSide()) * 0.8f, player->GetPosition().coords[1] * 0.8f, 0.0f); @@ -194,7 +212,9 @@ void ElizaController::RequestCommand(PlayerCommandQueue &commandQueue) { } else if (match->GetBallRetainer() == player) { // keeper fetched ball, probably actionCommand.desiredFunctionType = e_FunctionType_HighPass; - desiredTargetPosition = Vector3(pitchHalfW * team->GetSide(), random(-pitchHalfH, pitchHalfH), 0.0f); + desiredTargetPosition = + Vector3(pitchHalfW * team->GetSide(), + boostrandom(-pitchHalfH, pitchHalfH), 0.0f); Player *targetPlayer = AI_GetClosestPlayer(team, desiredTargetPosition, false, CastPlayer()); if (targetPlayer) { @@ -822,16 +842,23 @@ void ElizaController::GetOnTheBallCommands(std::vector &commandQu odds = std::pow(odds, 0.5f); - if (odds + random(0.0f, 0.5f) > 0.5f) { + if (odds + boostrandom(0.0f, 0.5f) > 0.5f) { PlayerCommand command; command.desiredFunctionType = e_FunctionType_Shot; command.useDesiredMovement = false; command.useDesiredLookAt = false; command.desiredVelocityFloat = rawInputVelocityFloat; // this is so we can use sprint/dribble buttons as shot modifiers - command.touchInfo.desiredDirection = (Vector3((pitchHalfW + 1.0f) * -team->GetSide(), y + random(-1.0f + player->GetStat(technical_shot), 1.0f - player->GetStat(technical_shot)), 0) - (CastPlayer()->GetPosition() + CastPlayer()->GetMovement() * 0.2f)).GetNormalized(Vector3(-team->GetSide(), 0, 0)); + command.touchInfo.desiredDirection = + (Vector3((pitchHalfW + 1.0f) * -team->GetSide(), + y + boostrandom(-1.0f + player->GetStat(technical_shot), + 1.0f - player->GetStat(technical_shot)), + 0) - + (CastPlayer()->GetPosition() + CastPlayer()->GetMovement() * 0.2f)) + .GetNormalized(Vector3(-team->GetSide(), 0, 0)); command.touchInfo.desiredDirection = (command.touchInfo.desiredDirection * 0.7f + -CastPlayer()->GetDirectionVec() * (CastPlayer()->GetFloatVelocity() / sprintVelocity) * 0.3f).GetNormalized(); command.touchInfo.autoDirectionBias = 1.0f; - command.touchInfo.desiredPower = random(0.7f * (0.6f + goalDist * 0.4f), 1.0f * (0.6f + goalDist * 0.4f)); + command.touchInfo.desiredPower = boostrandom( + 0.7f * (0.6f + goalDist * 0.4f), 1.0f * (0.6f + goalDist * 0.4f)); commandQueue.push_back(command); } } diff --git a/third_party/gfootball_engine/src/onthepitch/player/controller/strategies/offtheball/goalie_default.cpp b/third_party/gfootball_engine/src/onthepitch/player/controller/strategies/offtheball/goalie_default.cpp index 3af7b494..e13897f7 100755 --- a/third_party/gfootball_engine/src/onthepitch/player/controller/strategies/offtheball/goalie_default.cpp +++ b/third_party/gfootball_engine/src/onthepitch/player/controller/strategies/offtheball/goalie_default.cpp @@ -174,8 +174,6 @@ void GoalieDefaultStrategy::RequestInput(const MentalImage *mentalImage, Vector3 } else { // intercept ball - - maxVelocity = sprintVelocity; Line ballToGoal; diff --git a/third_party/gfootball_engine/src/onthepitch/player/humanoid/animcollection.cpp b/third_party/gfootball_engine/src/onthepitch/player/humanoid/animcollection.cpp index 216fda7c..e79dd741 100755 --- a/third_party/gfootball_engine/src/onthepitch/player/humanoid/animcollection.cpp +++ b/third_party/gfootball_engine/src/onthepitch/player/humanoid/animcollection.cpp @@ -19,20 +19,13 @@ #include -#include "../../../utils/directoryparser.hpp" - +#include "../../../main.hpp" +#include "../../../scene/objectfactory.hpp" #include "../../../utils/animationextensions/footballanimationextension.hpp" - -#include "../../../managers/resourcemanagerpool.hpp" - #include "../../../utils/objectloader.hpp" -#include "../../../scene/objectfactory.hpp" - -#include "humanoid_utils.hpp" - +#include "file.h" #include "humanoid.hpp" - -#include "../../../main.hpp" +#include "humanoid_utils.hpp" void FillNodeMap(boost::intrusive_ptr targetNode, NodeMap &nodeMap) { nodeMap[BodyPartFromString(targetNode->GetName())] = targetNode; @@ -354,9 +347,7 @@ void GenerateAutoAnims(const std::vector &templates, std::vector files; - parser.Parse(directory / "/templates", "anim", files); + GetFiles("media/animations/templates", "anim", files); sort(files.begin(), files.end()); std::vector templates; @@ -420,7 +410,7 @@ void AnimCollection::Load(boost::filesystem::path directory) { // load all other animations files.clear(); - parser.Parse(directory, "anim", files); + GetFiles("media/animations", "anim", files); sort(files.begin(), files.end()); bool omitLuxuryAnims = true; diff --git a/third_party/gfootball_engine/src/onthepitch/player/humanoid/animcollection.hpp b/third_party/gfootball_engine/src/onthepitch/player/humanoid/animcollection.hpp index e0cb8573..3bdc83d7 100755 --- a/third_party/gfootball_engine/src/onthepitch/player/humanoid/animcollection.hpp +++ b/third_party/gfootball_engine/src/onthepitch/player/humanoid/animcollection.hpp @@ -159,7 +159,7 @@ class AnimCollection { virtual ~AnimCollection(); void Clear(); - void Load(boost::filesystem::path directory); + void Load(); const std::vector < Animation* > &GetAnimations() const; diff --git a/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoid.cpp b/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoid.cpp index cb224761..35cd6dc4 100755 --- a/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoid.cpp +++ b/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoid.cpp @@ -35,8 +35,6 @@ #include "../../../systems/graphics/graphics_scene.hpp" #include "../../../systems/graphics/graphics_system.hpp" -#include "../../../managers/resourcemanagerpool.hpp" - const bool animSmoothing = true; const float cheatFactor = 0.5f; const bool useContinuousBallCheck = true; @@ -498,7 +496,12 @@ void Humanoid::Process() { radian xRot = 0; radian yRot = 0; Vector3 touchVec = GetTrapVector(match, CastPlayer(), nextStartPos, nextStartAngle, nextBodyAngle, CalculateOutgoingMovement(currentAnim->positions), currentAnim, currentAnim->frameNum, spatialState, decayingPositionOffset, xRot, yRot); - touchVec = touchVec * 0.5f + (match->GetBall()->Predict(0).Get2D() - spatialState.position).GetNormalized() * 4.0f + Vector3(0, 0, random(0.5f, 1.5f)); // was 1 .. 6 + touchVec = + touchVec * 0.5f + + (match->GetBall()->Predict(0).Get2D() - spatialState.position) + .GetNormalized() * + 4.0f + + Vector3(0, 0, boostrandom(0.5f, 1.5f)); // was 1 .. 6 touchVec = touchVec * (1.0f - bumpyRideBias) + currentBallVec * bumpyRideBias; @@ -528,7 +531,13 @@ void Humanoid::Process() { } else { Vector3 currentBallMovement = match->GetBall()->GetMovement().Get2D(); Vector3 playerMovement = spatialState.movement; - Vector3 touchVec = (-currentBallMovement * 0.1f + playerMovement * 2.0f + Vector3(-team->GetSide(), 0, 0) * 4.0f + Vector3(0, random(-1, 1), 0)).GetNormalized(0) * (currentBallMovement.GetLength() * 0.3f + playerMovement.GetLength() * 2.5f); + Vector3 touchVec = + (-currentBallMovement * 0.1f + playerMovement * 2.0f + + Vector3(-team->GetSide(), 0, 0) * 4.0f + + Vector3(0, boostrandom(-1, 1), 0)) + .GetNormalized(0) * + (currentBallMovement.GetLength() * 0.3f + + playerMovement.GetLength() * 2.5f); touchVec.coords[2] += 1.2f; touchVec = touchVec * (1.0f - bumpyRideBias) + currentBallVec * bumpyRideBias; @@ -2057,7 +2066,8 @@ Vector3 Humanoid::GetBestPossibleTouch(const Vector3 &desiredTouch, e_FunctionTy Vector3 nativeTouch = animBallDirection.GetNormalized(resultTouch).Get2D() * resultTouch.GetLength() + resultTouch * Vector3(0, 0, 1); resultTouch = resultTouch * (1.0f - bias) + nativeTouch * bias; } else { - radian rotation = random(-0.5f * pi, 0.5f * pi) * std::min(randomRotation, 0.5f); + radian rotation = + boostrandom(-0.5f * pi, 0.5f * pi) * std::min(randomRotation, 0.5f); resultTouch.Rotate2D(rotation); } @@ -2071,7 +2081,7 @@ Vector3 Humanoid::GetBestPossibleTouch(const Vector3 &desiredTouch, e_FunctionTy resultTouch = resultTouch * (1.0f - ballMovementFactor) + match->GetBall()->GetMovement() * ballMovementFactor; - resultTouch.coords[2] += difficultyFactor * 5.0f * random(0.2f, 1.0f); + resultTouch.coords[2] += difficultyFactor * 5.0f * boostrandom(0.2f, 1.0f); return resultTouch; } diff --git a/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoid_utils.cpp b/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoid_utils.cpp index 603663d9..7822b615 100755 --- a/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoid_utils.cpp +++ b/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoid_utils.cpp @@ -180,7 +180,9 @@ void GetDifficultyFactors(Match *match, Player *player, const Vector3 &positionO } ballMovementFactor = clamp(ballMovementFactor, 0.0f, 0.9f); - float skillPenaltyMultiplier = (1.0f - player->GetStat(technical_ballcontrol) * 0.5f) * random(0.5f, 1.0f); + float skillPenaltyMultiplier = + (1.0f - player->GetStat(technical_ballcontrol) * 0.5f) * + boostrandom(0.5f, 1.0f); distanceFactor *= skillPenaltyMultiplier; heightFactor *= skillPenaltyMultiplier; ballMovementFactor *= skillPenaltyMultiplier; @@ -431,7 +433,10 @@ Vector3 GetShotVector(Match *match, Player *player, const Vector3 &nextStartPos, worstCaseDirection = (touchDirection * laggyDirectionBias + worstCaseDirection * (1.0f - laggyDirectionBias)).GetNormalized(0); // random dir - worstCaseDirection = worstCaseDirection + (Vector3(random(-1, 1), random(-1, 1), random(-1, 1)) * 0.5f * difficultyFactor); + worstCaseDirection = + worstCaseDirection + + (Vector3(boostrandom(-1, 1), boostrandom(-1, 1), boostrandom(-1, 1)) * + 0.5f * difficultyFactor); worstCaseDirection.Normalize(); float worstCaseHeight = curve(std::pow(difficultyFactor, 0.7f), 0.7f) * 0.7f; @@ -443,7 +448,7 @@ Vector3 GetShotVector(Match *match, Player *player, const Vector3 &nextStartPos, // actual result - float worstCaseFactor = random(0.0f, 1.0f); + float worstCaseFactor = boostrandom(0.0f, 1.0f); worstCaseFactor = std::pow(worstCaseFactor, player->GetStat(technical_shot) * 0.7f); @@ -457,8 +462,12 @@ Vector3 GetShotVector(Match *match, Player *player, const Vector3 &nextStartPos, float plannedCurveFactor = 0.7f; // forward/backward 'curve' - xRot = -currentAnim->originatingCommand.touchInfo.desiredDirection.coords[1] * 20.0f + (random(-20, 20) * randomCurveFactor); - yRot = -currentAnim->originatingCommand.touchInfo.desiredDirection.coords[0] * 20.0f + (random(-20, 20) * randomCurveFactor); + xRot = -currentAnim->originatingCommand.touchInfo.desiredDirection.coords[1] * + 20.0f + + (boostrandom(-20, 20) * randomCurveFactor); + yRot = -currentAnim->originatingCommand.touchInfo.desiredDirection.coords[0] * + 20.0f + + (boostrandom(-20, 20) * randomCurveFactor); // lateral curve radian bodyTouchAngle = spatialState.bodyDirectionVec.GetAngle2D(shot) / pi; @@ -467,7 +476,7 @@ Vector3 GetShotVector(Match *match, Player *player, const Vector3 &nextStartPos, //printf("bodyTouchAngle: %f\n", bodyTouchAngle); radian amount = bodyTouchAngle * 0.25f; shot.Rotate2D(amount * (0.4f + 0.6f * NormalizedClamp(shot.GetLength(), 0.0f, 70.0f))); - zRot = amount * -420 + (random(-20, 20) * plannedCurveFactor); + zRot = amount * -420 + (boostrandom(-20, 20) * plannedCurveFactor); //SetRedDebugPilon(match->GetBall()->Predict(0).Get2D() + touchVec.Get2D() * 0.4f); diff --git a/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoidbase.cpp b/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoidbase.cpp index 56f71353..13a38ccb 100755 --- a/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoidbase.cpp +++ b/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoidbase.cpp @@ -29,8 +29,6 @@ #include "../../../utils/animationextensions/footballanimationextension.hpp" -#include "../../../managers/resourcemanagerpool.hpp" - #include "../../../scene/objectfactory.hpp" const float bodyRotationSmoothingFactor = 1.0f; @@ -44,8 +42,10 @@ void FillTemporalHumanoidNodes(boost::intrusive_ptr targetNode, std::vecto temporalHumanoidNode.cachedPosition = targetNode->GetPosition(); temporalHumanoidNode.cachedOrientation = targetNode->GetRotation(); // initial values, not sure if really needed - temporalHumanoidNode.position.SetValue(targetNode->GetPosition(), EnvironmentManager::GetInstance().GetTime_ms()); - temporalHumanoidNode.orientation.SetValue(targetNode->GetRotation(), EnvironmentManager::GetInstance().GetTime_ms()); + temporalHumanoidNode.position.SetValue( + targetNode->GetPosition(), GetContext().environment_manager.GetTime_ms()); + temporalHumanoidNode.orientation.SetValue( + targetNode->GetRotation(), GetContext().environment_manager.GetTime_ms()); temporalHumanoidNodes.push_back(temporalHumanoidNode); std::vector < boost::intrusive_ptr > gatherNodes; @@ -119,7 +119,10 @@ HumanoidBase::HumanoidBase(PlayerBase *player, Match *match, boost::intrusive_pt humanoidNode->SetLocalMode(e_LocalMode_Absolute); boost::intrusive_ptr < Resource > skin; - skin = ResourceManagerPool::getSurfaceManager()->Fetch("media/objects/players/textures/skin0" + int_to_str(player->GetPlayerData()->GetSkinColor()) + ".png", true, true); + skin = GetContext().surface_manager.Fetch( + "media/objects/players/textures/skin0" + + int_to_str(player->GetPlayerData()->GetSkinColor()) + ".png", + true, true); boost::intrusive_ptr bla2(new Node(*fullbodySourceNode.get(), int_to_str(player->GetID()), GetScene3D())); fullbodyNode = bla2; @@ -155,8 +158,14 @@ HumanoidBase::HumanoidBase(PlayerBase *player, Match *match, boost::intrusive_pt // hairstyle - boost::intrusive_ptr < Resource > geometry = ResourceManagerPool::getGeometryManager()->Fetch("media/objects/players/hairstyles/" + player->GetPlayerData()->GetHairStyle() + ".ase", true, true); - hairStyle = static_pointer_cast(ObjectFactory::GetInstance().CreateObject("hairstyle", e_ObjectType_Geometry)); + boost::intrusive_ptr > geometry = + GetContext().geometry_manager.Fetch( + "media/objects/players/hairstyles/" + + player->GetPlayerData()->GetHairStyle() + ".ase", + true, true); + hairStyle = + static_pointer_cast(GetContext().object_factory.CreateObject( + "hairstyle", e_ObjectType_Geometry)); scene3D->CreateSystemObjects(hairStyle); hairStyle->SetLocalMode(e_LocalMode_Absolute); @@ -164,7 +173,10 @@ HumanoidBase::HumanoidBase(PlayerBase *player, Match *match, boost::intrusive_pt fullbodyTargetNode->AddObject(hairStyle); boost::intrusive_ptr < Resource > hairTexture; - hairTexture = ResourceManagerPool::getSurfaceManager()->Fetch("media/objects/players/textures/hair/" + player->GetPlayerData()->GetHairColor() + ".png", true, true); + hairTexture = GetContext().surface_manager.Fetch( + "media/objects/players/textures/hair/" + + player->GetPlayerData()->GetHairColor() + ".png", + true, true); std::vector < MaterializedTriangleMesh > &hairtmesh = hairStyle->GetGeometryData()->GetResource()->GetTriangleMeshesRef(); @@ -225,7 +237,7 @@ void HumanoidBase::PrepareFullbodyModel(std::map &colorCoords) // joints for (unsigned int i = 0; i < jointsVec.size(); i++) { - Joint joint; + HJoint joint; joint.node = jointsVec[i]; joint.origPos = jointsVec[i]->GetDerivedPosition(); joints.push_back(joint); @@ -709,10 +721,12 @@ void HumanoidBase::FetchPutBuffers(unsigned long putTime_ms) { } void HumanoidBase::Put() { - - //unsigned long timeDiff_ms = match->GetTimeSincePreviousPut_ms();//EnvironmentManager::GetInstance().GetTime_ms() - match->GetPreviousTime_ms(); - // the apply function doesn't know better than that it is displaying snapshot times, so continue this hoax into the timeDiff_ms value. then, - // the temporalsmoother will convert it to 'realtime' once again + // unsigned long timeDiff_ms = + // match->GetTimeSincePreviousPut_ms();//GetContext().environment_manager.GetTime_ms() + // - match->GetPreviousTime_ms(); + // the apply function doesn't know better than that it is displaying snapshot + // times, so continue this hoax into the timeDiff_ms value. then, the + // temporalsmoother will convert it to 'realtime' once again unsigned long timeDiff_ms = fetchedbuf_animApplyBuffer.snapshotTime_ms - fetchedbuf_previousSnapshotTime_ms; timeDiff_ms = clamp(timeDiff_ms, 10, 50); fetchedbuf_previousSnapshotTime_ms = fetchedbuf_animApplyBuffer.snapshotTime_ms; @@ -820,7 +834,8 @@ void HumanoidBase::ResetPosition(const Vector3 &newPos, const Vector3 &focusPos) currentAnim->anim = anims->GetAnim(currentAnim->id); currentAnim->positions.clear(); currentAnim->positions = match->GetAnimPositionCache(currentAnim->anim); - currentAnim->frameNum = random(0, currentAnim->anim->GetEffectiveFrameCount() - 1); + currentAnim->frameNum = + boostrandom(0, currentAnim->anim->GetEffectiveFrameCount() - 1); currentAnim->radiusOffset = 0.0; currentAnim->touchFrame = -1; currentAnim->originatingInterrupt = e_InterruptAnim_None; diff --git a/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoidbase.hpp b/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoidbase.hpp index e19703fa..2ff257fa 100755 --- a/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoidbase.hpp +++ b/third_party/gfootball_engine/src/onthepitch/player/humanoid/humanoidbase.hpp @@ -33,7 +33,7 @@ using namespace blunted; class PlayerBase; class Match; -struct Joint { +struct HJoint { boost::intrusive_ptr node; Vector3 position; Quaternion orientation; @@ -298,7 +298,7 @@ class HumanoidBase { std::vector < std::vector > weightedVerticesVec; // < subgeoms < vertices > > unsigned int fullbodySubgeomCount = 0; std::vector uniqueIndicesVec; - std::vector joints; + std::vector joints; Vector3 fullbodyOffset; boost::intrusive_ptr fullbodyTargetNode; diff --git a/third_party/gfootball_engine/src/onthepitch/player/player.cpp b/third_party/gfootball_engine/src/onthepitch/player/player.cpp index dfc879fe..e41fb06b 100755 --- a/third_party/gfootball_engine/src/onthepitch/player/player.cpp +++ b/third_party/gfootball_engine/src/onthepitch/player/player.cpp @@ -412,7 +412,7 @@ void Player::Hide2D() { } void Player::SendOff() { - float x = random(0, 3); + float x = boostrandom(0, 3); std::string message; if (x < 1.0) { message = "an early shower for " + playerData->GetLastName() + "!"; diff --git a/third_party/gfootball_engine/src/onthepitch/proceduralpitch.cpp b/third_party/gfootball_engine/src/onthepitch/proceduralpitch.cpp index 55e455ed..d02b7afb 100755 --- a/third_party/gfootball_engine/src/onthepitch/proceduralpitch.cpp +++ b/third_party/gfootball_engine/src/onthepitch/proceduralpitch.cpp @@ -25,7 +25,6 @@ #include "../types/resource.hpp" #include "../systems/graphics/resources/texture.hpp" -#include "../managers/resourcemanagerpool.hpp" #include "../main.hpp" // for getconfig @@ -267,11 +266,18 @@ void CreateChunk(int i, int resX, int resY, int resSpecularX, int resSpecularY, // find pitch texture bool alreadyThere = false; - boost::intrusive_ptr < Resource > pitchDiffuseTex = ResourceManagerPool::getTextureManager()->Fetch("pitch_0" + int_to_str(i) + ".png", false, alreadyThere, true); + boost::intrusive_ptr > pitchDiffuseTex = + GetContext().texture_manager.Fetch("pitch_0" + int_to_str(i) + ".png", + false, alreadyThere, true); assert(alreadyThere); - boost::intrusive_ptr < Resource > pitchSpecularTex = ResourceManagerPool::getTextureManager()->Fetch("pitch_specular_0" + int_to_str(i) + ".png", false, alreadyThere, true); + boost::intrusive_ptr > pitchSpecularTex = + GetContext().texture_manager.Fetch( + "pitch_specular_0" + int_to_str(i) + ".png", false, alreadyThere, + true); assert(alreadyThere); - boost::intrusive_ptr < Resource > pitchNormalTex = ResourceManagerPool::getTextureManager()->Fetch("pitch_normal_0" + int_to_str(i) + ".png", false, alreadyThere, true); + boost::intrusive_ptr > pitchNormalTex = + GetContext().texture_manager.Fetch( + "pitch_normal_0" + int_to_str(i) + ".png", false, alreadyThere, true); assert(alreadyThere); @@ -377,7 +383,7 @@ void GeneratePitch(int resX, int resY, int resSpecularX, int resSpecularY, int r } // boost::thread pitchThread[4]; - float grassNormalRepeatMultiplier = (random(0, 1) > 0.5f) ? 1.0f : 0.5f; + float grassNormalRepeatMultiplier = (boostrandom(0, 1) > 0.5f) ? 1.0f : 0.5f; for (int i = 0; i < 4; i++) { CreateChunk(i + 1, resX, resY, resSpecularX, resSpecularY, resNormalX, resNormalY, grassNormalRepeatMultiplier); } diff --git a/third_party/gfootball_engine/src/onthepitch/referee.cpp b/third_party/gfootball_engine/src/onthepitch/referee.cpp index 2ddd31d8..7d500042 100755 --- a/third_party/gfootball_engine/src/onthepitch/referee.cpp +++ b/third_party/gfootball_engine/src/onthepitch/referee.cpp @@ -19,8 +19,6 @@ #include #include "../scene/objectfactory.hpp" -#include "../managers/resourcemanagerpool.hpp" - #include "match.hpp" #include "AIsupport/AIfunctions.hpp" diff --git a/third_party/gfootball_engine/src/onthepitch/team.cpp b/third_party/gfootball_engine/src/onthepitch/team.cpp index 98d5202f..1215b86b 100755 --- a/third_party/gfootball_engine/src/onthepitch/team.cpp +++ b/third_party/gfootball_engine/src/onthepitch/team.cpp @@ -20,7 +20,6 @@ #include "../gamedefines.hpp" #include "../main.hpp" -#include "../managers/resourcemanagerpool.hpp" #include "../utils.hpp" #include "AIsupport/AIfunctions.hpp" #include "match.hpp" @@ -103,7 +102,7 @@ void Team::InitPlayers(boost::intrusive_ptr fullbodyNode, } else { kitFilename = "media/objects/players/textures/goalie_kit.png"; } - kit = ResourceManagerPool::getSurfaceManager()->Fetch(kitFilename); + kit = GetContext().surface_manager.Fetch(kitFilename); player->Activate( playerNode, playerData->GetModelId() ? fullbody2Node : fullbodyNode, colorCoords, kit, match->GetAnimCollection(), formation.lazy); diff --git a/third_party/gfootball_engine/src/onthepitch/teamAIcontroller.cpp b/third_party/gfootball_engine/src/onthepitch/teamAIcontroller.cpp index 8839bf4e..5c4332aa 100755 --- a/third_party/gfootball_engine/src/onthepitch/teamAIcontroller.cpp +++ b/third_party/gfootball_engine/src/onthepitch/teamAIcontroller.cpp @@ -687,7 +687,9 @@ void TeamAIController::PrepareSetPiece(e_GameMode setPiece, Team* other_team, case e_GameMode_KickOff: for (unsigned int i = 0; i < players.size(); i++) { Vector3 basePos = players[i]->GetFormationEntry().position * Vector3(-team->GetSide() * pitchHalfW * 0.6, -team->GetSide() * pitchHalfH * 0.6, 0); - basePos.coords[1] += random(-2.0f, 2.0f); // to stop people from bumping into each other and such + basePos.coords[1] += boostrandom( + -2.0f, + 2.0f); // to stop people from bumping into each other and such basePos.coords[0] *= 0.5; basePos.coords[0] += (pitchHalfW * 0.2) * team->GetSide(); if (basePos.coords[0] * team->GetSide() < 0.5) basePos.coords[0] = 0.5 * team->GetSide(); // not allowed to stand on opp side diff --git a/third_party/gfootball_engine/src/scene/objectfactory.cpp b/third_party/gfootball_engine/src/scene/objectfactory.cpp index 3e82efdb..da021d0e 100644 --- a/third_party/gfootball_engine/src/scene/objectfactory.cpp +++ b/third_party/gfootball_engine/src/scene/objectfactory.cpp @@ -29,8 +29,6 @@ namespace blunted { - template<> ObjectFactory* Singleton::singleton = 0; - ObjectFactory::ObjectFactory() { } diff --git a/third_party/gfootball_engine/src/scene/objectfactory.hpp b/third_party/gfootball_engine/src/scene/objectfactory.hpp index 4e5955bd..4f61035f 100644 --- a/third_party/gfootball_engine/src/scene/objectfactory.hpp +++ b/third_party/gfootball_engine/src/scene/objectfactory.hpp @@ -22,11 +22,9 @@ #include "object.hpp" -#include "../types/singleton.hpp" - namespace blunted { - class ObjectFactory : public Singleton { + class ObjectFactory { public: ObjectFactory(); diff --git a/third_party/gfootball_engine/src/scene/objects/geometry.cpp b/third_party/gfootball_engine/src/scene/objects/geometry.cpp index cabe5583..90e7fa50 100644 --- a/third_party/gfootball_engine/src/scene/objects/geometry.cpp +++ b/third_party/gfootball_engine/src/scene/objects/geometry.cpp @@ -19,7 +19,6 @@ #include "../../base/log.hpp" #include "../../main.hpp" -#include "../../managers/resourcemanagerpool.hpp" #include "../../systems/isystemobject.hpp" #include "../../main.hpp" @@ -35,8 +34,10 @@ namespace blunted { bool alreadyThere = false; - geometryData = (ResourceManagerPool::getGeometryManager()->FetchCopy(srcName, srcName + postfix, alreadyThere)); - //geometryData = (ResourceManagerPool::getGeometryManager()->Fetch(srcName, false, alreadyThere, true)); + geometryData = (GetContext().geometry_manager.FetchCopy( + srcName, srcName + postfix, alreadyThere)); + // geometryData = (GetContext().geometry_manager.Fetch(srcName, false, + // alreadyThere, true)); } InvalidateBoundingVolume(); } diff --git a/third_party/gfootball_engine/src/scene/scene3d/node.cpp b/third_party/gfootball_engine/src/scene/scene3d/node.cpp index baabed5d..0560571a 100644 --- a/third_party/gfootball_engine/src/scene/scene3d/node.cpp +++ b/third_party/gfootball_engine/src/scene/scene3d/node.cpp @@ -17,9 +17,9 @@ #include "node.hpp" -#include "scene3d.hpp" - +#include "../../main.hpp" #include "../../scene/objectfactory.hpp" +#include "scene3d.hpp" namespace blunted { @@ -41,7 +41,8 @@ namespace blunted { source.GetObjects(gatherObjects, false); std::list < boost::intrusive_ptr >::iterator objectIter = gatherObjects.begin(); while (objectIter != gatherObjects.end()) { - boost::intrusive_ptr objCopy = ObjectFactory::GetInstance().CopyObject((*objectIter), postfix); + boost::intrusive_ptr objCopy = + GetContext().object_factory.CopyObject((*objectIter), postfix); scene3D->CreateSystemObjects(objCopy); objCopy->Synchronize(); AddObject(objCopy); diff --git a/third_party/gfootball_engine/src/systems/graphics/graphics_system.cpp b/third_party/gfootball_engine/src/systems/graphics/graphics_system.cpp index 9f600e42..04b86d35 100644 --- a/third_party/gfootball_engine/src/systems/graphics/graphics_system.cpp +++ b/third_party/gfootball_engine/src/systems/graphics/graphics_system.cpp @@ -22,8 +22,6 @@ #include "../../base/log.hpp" #include "../../base/utils.hpp" -#include "../../managers/resourcemanagerpool.hpp" - #include "rendering/r3d_messages.hpp" namespace blunted { diff --git a/third_party/gfootball_engine/src/systems/graphics/graphics_system.hpp b/third_party/gfootball_engine/src/systems/graphics/graphics_system.hpp index e99e32c9..4cf07d07 100644 --- a/third_party/gfootball_engine/src/systems/graphics/graphics_system.hpp +++ b/third_party/gfootball_engine/src/systems/graphics/graphics_system.hpp @@ -61,8 +61,6 @@ namespace blunted { virtual std::string GetName() const { return "graphics"; } - //boost::mutex getPhaseMutex; - protected: const e_SystemType systemType = e_SystemType_Graphics; diff --git a/third_party/gfootball_engine/src/systems/graphics/graphics_task.cpp b/third_party/gfootball_engine/src/systems/graphics/graphics_task.cpp index 8136cdd6..17d57d03 100644 --- a/third_party/gfootball_engine/src/systems/graphics/graphics_task.cpp +++ b/third_party/gfootball_engine/src/systems/graphics/graphics_task.cpp @@ -19,17 +19,14 @@ #include "../../base/log.hpp" #include "../../base/utils.hpp" - -#include "../../managers/scenemanager.hpp" +#include "../../main.hpp" #include "../../managers/environmentmanager.hpp" - -#include "graphics_system.hpp" - +#include "../../managers/scenemanager.hpp" #include "../../scene/objects/geometry.hpp" -#include "../../scene/objects/skybox.hpp" #include "../../scene/objects/light.hpp" - +#include "../../scene/objects/skybox.hpp" #include "../../scene/scene3d/scene3d.hpp" +#include "graphics_system.hpp" namespace blunted { @@ -49,13 +46,15 @@ namespace blunted { // poke all image2D objects bool success = false; - boost::shared_ptr scene2d = SceneManager::GetInstance().GetScene("scene2D", success); + boost::shared_ptr scene2d = + GetContext().scene_manager.GetScene("scene2D", success); if (success) { scene2d->PokeObjects(e_ObjectType_Image2D, e_SystemType_Graphics); } // collect visibles - boost::shared_ptr scene3d = SceneManager::GetInstance().GetScene("scene3D", success); + boost::shared_ptr scene3d = + GetContext().scene_manager.GetScene("scene3D", success); if (success) { std::list < boost::intrusive_ptr > cameras; boost::static_pointer_cast(scene3d)->GetObjects(e_ObjectType_Camera, cameras); @@ -81,7 +80,8 @@ namespace blunted { // poke lights { bool success = false; - boost::shared_ptr scene = SceneManager::GetInstance().GetScene("scene3D", success); + boost::shared_ptr scene = + GetContext().scene_manager.GetScene("scene3D", success); if (success) { scene->PokeObjects(e_ObjectType_Light, e_SystemType_Graphics); } @@ -89,7 +89,8 @@ namespace blunted { // poke camera bool success = false; - boost::shared_ptr scene = SceneManager::GetInstance().GetScene("scene3D", success); + boost::shared_ptr scene = + GetContext().scene_manager.GetScene("scene3D", success); if (success) scene->PokeObjects(e_ObjectType_Camera, e_SystemType_Graphics); // render the Overlay2D queue auto &overlay2DQueue = graphicsSystem->GetOverlay2DQueue(); @@ -115,10 +116,13 @@ namespace blunted { bool GraphicsTaskCommand_EnqueueView::Execute(void *caller) { bool success = false; - boost::shared_ptr scene = SceneManager::GetInstance().GetScene("scene3D", success); + boost::shared_ptr scene = + GetContext().scene_manager.GetScene("scene3D", success); if (success) { - // test camera->SetPosition(Vector3(sin((float)EnvironmentManager::GetInstance().GetTime_ms() * 0.001f) * 60, 0, 0), true); + // test + // camera->SetPosition(Vector3(sin((float)GetContext().environment_manager.GetTime_ms() + // * 0.001f) * 60, 0, 0), true); Vector3 cameraPos = camera->GetDerivedPosition(); Quaternion cameraRot = camera->GetDerivedRotation(); float nearCap, farCap; @@ -179,7 +183,8 @@ namespace blunted { void GraphicsTaskCommand_EnqueueView::EnqueueShadowMap(boost::intrusive_ptr light) { bool success = false; - boost::shared_ptr scene = SceneManager::GetInstance().GetScene("scene3D", success); + boost::shared_ptr scene = + GetContext().scene_manager.GetScene("scene3D", success); if (success) { std::deque < boost::intrusive_ptr > visibleGeometry; vector_Planes bounding; diff --git a/third_party/gfootball_engine/src/systems/graphics/objects/graphics_geometry.cpp b/third_party/gfootball_engine/src/systems/graphics/objects/graphics_geometry.cpp index d39974aa..a9a7c827 100644 --- a/third_party/gfootball_engine/src/systems/graphics/objects/graphics_geometry.cpp +++ b/third_party/gfootball_engine/src/systems/graphics/objects/graphics_geometry.cpp @@ -17,8 +17,6 @@ #include "graphics_geometry.hpp" -#include "../../../managers/resourcemanagerpool.hpp" - #include "../graphics_scene.hpp" #include "../graphics_system.hpp" @@ -77,9 +75,9 @@ namespace blunted { boost::intrusive_ptr < Resource > surface = material->diffuseTexture; bool texAlreadyThere = false; - diffuseTexture = - ResourceManagerPool::getTextureManager()-> - Fetch(surface->GetIdentString(), false, texAlreadyThere, true); // false == don't try to use loader + diffuseTexture = GetContext().texture_manager.Fetch( + surface->GetIdentString(), false, texAlreadyThere, + true); // false == don't try to use loader if (!texAlreadyThere) { //printf("%s\n", surface->GetIdentString().c_str()); @@ -98,9 +96,9 @@ namespace blunted { boost::intrusive_ptr < Resource > surface = material->normalTexture; bool texAlreadyThere = false; - normalTexture = - ResourceManagerPool::getTextureManager()-> - Fetch(surface->GetIdentString(), false, texAlreadyThere, true); // false == don't try to use loader + normalTexture = GetContext().texture_manager.Fetch( + surface->GetIdentString(), false, texAlreadyThere, + true); // false == don't try to use loader if (!texAlreadyThere) { SDL_Surface *image = surface->GetResource()->GetData(); @@ -114,9 +112,9 @@ namespace blunted { boost::intrusive_ptr < Resource > surface = material->specularTexture; bool texAlreadyThere = false; - specularTexture = - ResourceManagerPool::getTextureManager()-> - Fetch(surface->GetIdentString(), false, texAlreadyThere, true); // false == don't try to use loader + specularTexture = GetContext().texture_manager.Fetch( + surface->GetIdentString(), false, texAlreadyThere, + true); // false == don't try to use loader if (!texAlreadyThere) { SDL_Surface *image = surface->GetResource()->GetData(); @@ -130,9 +128,9 @@ namespace blunted { boost::intrusive_ptr < Resource > surface = material->illuminationTexture; bool texAlreadyThere = false; - illuminationTexture = - ResourceManagerPool::getTextureManager()-> - Fetch(surface->GetIdentString(), false, texAlreadyThere, true); // false == don't try to use loader + illuminationTexture = GetContext().texture_manager.Fetch( + surface->GetIdentString(), false, texAlreadyThere, + true); // false == don't try to use loader if (!texAlreadyThere) { SDL_Surface *image = surface->GetResource()->GetData(); @@ -163,10 +161,10 @@ namespace blunted { bool alreadyThere = false; - caller->vertexBuffer = - ResourceManagerPool::getVerticesManager()-> - Fetch(resource->GetIdentString(), false, alreadyThere, true); // false == don't try to use loader - //printf("%s, %i\n", resource->GetIdentString().c_str(), alreadyThere); + caller->vertexBuffer = GetContext().vertices_manager.Fetch( + resource->GetIdentString(), false, alreadyThere, + true); // false == don't try to use loader + // printf("%s, %i\n", resource->GetIdentString().c_str(), alreadyThere); std::vector < MaterializedTriangleMesh > triangleMeshes = resource->GetResource()->GetTriangleMeshes(); Renderer3D *renderer3D = caller->GetGraphicsScene()->GetGraphicsSystem()->GetRenderer3D(); diff --git a/third_party/gfootball_engine/src/systems/graphics/objects/graphics_light.cpp b/third_party/gfootball_engine/src/systems/graphics/objects/graphics_light.cpp index c0b281e6..30c7fcd5 100644 --- a/third_party/gfootball_engine/src/systems/graphics/objects/graphics_light.cpp +++ b/third_party/gfootball_engine/src/systems/graphics/objects/graphics_light.cpp @@ -17,12 +17,10 @@ #include "graphics_light.hpp" +#include "../../../main.hpp" #include "../../../systems/graphics/rendering/r3d_messages.hpp" -#include "../../../managers/resourcemanagerpool.hpp" - #include "../graphics_scene.hpp" #include "../graphics_system.hpp" - #include "graphics_geometry.hpp" namespace blunted { @@ -149,8 +147,9 @@ namespace blunted { // does not yet exist ShadowMap map; - map.texture = ResourceManagerPool::getTextureManager()-> - Fetch(std::string(camera->GetName() + int_to_str(intptr_t(this))), false, false); // false == don't try to use loader + map.texture = GetContext().texture_manager.Fetch( + std::string(camera->GetName() + int_to_str(intptr_t(this))), false, + false); // false == don't try to use loader if (map.texture->GetResource()->GetID() == -1) { Renderer3D *renderer3D = caller->GetGraphicsScene()->GetGraphicsSystem()->GetRenderer3D(); map.texture->GetResource()->SetRenderer3D(renderer3D); diff --git a/third_party/gfootball_engine/src/systems/graphics/objects/graphics_overlay2d.cpp b/third_party/gfootball_engine/src/systems/graphics/objects/graphics_overlay2d.cpp index ec76ba62..3ac71cf9 100644 --- a/third_party/gfootball_engine/src/systems/graphics/objects/graphics_overlay2d.cpp +++ b/third_party/gfootball_engine/src/systems/graphics/objects/graphics_overlay2d.cpp @@ -17,10 +17,9 @@ #include "graphics_overlay2d.hpp" -#include "../../../managers/resourcemanagerpool.hpp" - #include "../graphics_scene.hpp" #include "../graphics_system.hpp" +#include "../main.hpp" namespace blunted { @@ -47,9 +46,9 @@ namespace blunted { bool alreadyThere = false; - caller->texture = - ResourceManagerPool::getTextureManager()-> - Fetch(surface->GetIdentString(), false, alreadyThere, true); // false == don't try to use loader + caller->texture = GetContext().texture_manager.Fetch( + surface->GetIdentString(), false, alreadyThere, + true); // false == don't try to use loader SDL_Surface *image = surface->GetResource()->GetData(); diff --git a/third_party/gfootball_engine/src/types/singleton.hpp b/third_party/gfootball_engine/src/types/singleton.hpp deleted file mode 100644 index a182b108..00000000 --- a/third_party/gfootball_engine/src/types/singleton.hpp +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2019 Google LLC & Bastiaan Konings -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// written by bastiaan konings schuiling 2008 - 2014 -// this work is public domain. the code is undocumented, scruffy, untested, and should generally not be used for anything important. -// i do not offer support, so don't ask. to be used for inspiration :) - -#ifndef _HPP_TYPES_SINGLETON -#define _HPP_TYPES_SINGLETON - -#include "../defines.hpp" - -namespace blunted { - - template class Singleton { - - public: - Singleton(void) { - assert(!singleton); - singleton = static_cast(this); - } - - virtual ~Singleton(void) { - assert(singleton); // isn't this a paradox? :D - singleton = 0; - } - - static T& GetInstance(void) { - assert(singleton); - return(*singleton); - } - - static T* GetInstancePtr(void) { - return singleton; - } - - virtual void Destroy() { - delete singleton; - singleton = 0; - } - - protected: - static T* singleton; - - }; - -} - -#endif diff --git a/third_party/gfootball_engine/src/utils.cpp b/third_party/gfootball_engine/src/utils.cpp index ffbcb7cb..ef12eb16 100755 --- a/third_party/gfootball_engine/src/utils.cpp +++ b/third_party/gfootball_engine/src/utils.cpp @@ -20,8 +20,6 @@ #include "utils.hpp" #include "systems/graphics/resources/texture.hpp" -#include "managers/resourcemanagerpool.hpp" - #include #include @@ -150,7 +148,6 @@ template void TemporalSmoother::SetValue(const T &data, unsigned TemporalValue value; value.data = data; value.time_ms = valueTime_ms; - //printf("adding time: %lu\n", value.time_ms); values.push_back(value); } @@ -165,7 +162,6 @@ template T TemporalSmoother::GetValue(unsigned long currentTime_ //return (values.back()).data; // disable smoother unsigned long now_ms = currentTime_ms; - //unsigned long now_ms = (currentTime_ms == 0) ? EnvironmentManager::GetInstance().GetTime_ms() : currentTime_ms; unsigned long targetTime_ms = 0; if (history_ms <= now_ms) targetTime_ms = now_ms - history_ms; // this makes sure targetTime_ms won't become negative (and loop-around since it's an unsigned var) diff --git a/third_party/gfootball_engine/src/utils/database.cpp b/third_party/gfootball_engine/src/utils/database.cpp deleted file mode 100644 index 16cadc7c..00000000 --- a/third_party/gfootball_engine/src/utils/database.cpp +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2019 Google LLC & Bastiaan Konings -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// written by bastiaan konings schuiling 2008 - 2014 -// this work is public domain. the code is undocumented, scruffy, untested, and should generally not be used for anything important. -// i do not offer support, so don't ask. to be used for inspiration :) - -#include "database.hpp" - -#include "../base/log.hpp" - -#include - -namespace blunted { - - Database::Database() : db(0) { - } - - Database::~Database() { - if (db) sqlite3_close(db); - } - - - bool Database::Load(const std::string &filename) { - - // close previously opened db - if (db) sqlite3_close(db); - - int value = sqlite3_open_v2(filename.c_str(), &db, SQLITE_OPEN_READWRITE, 0); - if (value) { - //Log(e_FatalError, "Database", "Database", "Could not open database '" + filename + "'"); - return false; - } else return true; - } - - DatabaseResult *Database::Query(const std::string &query) { - - int rows, columns; - char **result; - char *errorMsg = 0; - - sqlite3_get_table(db, query.c_str(), &result, &rows, &columns, &errorMsg); - if (errorMsg) { - std::string errorMsgStr = errorMsg; - Log(e_FatalError, "Database", "Query", "SQLite error message: '" + errorMsgStr + "'"); - sqlite3_free(errorMsg); - } - - DatabaseResult *dbresult = new DatabaseResult(); - - // header - for (int i = 0; i < columns; i++) { - //printf("1st row heading: %s\n", result[i]); - dbresult->header.push_back(result[i]); - } - - // data - for (int r = 0; r < rows; r++) { - std::vector tmpRow; - for (int c = 0; c < columns; c++) { - if (result[(r + 1) * columns + c] == NULL) { - tmpRow.push_back(""); - } else { - //printf("data: %s\n", result[(r + 1) * columns + c]); - tmpRow.push_back(result[(r + 1) * columns + c]); - } - } - dbresult->data.push_back(tmpRow); - } - - sqlite3_free_table(result); - - return dbresult; - - } - -} diff --git a/third_party/gfootball_engine/src/utils/database.hpp b/third_party/gfootball_engine/src/utils/database.hpp deleted file mode 100644 index e2e4b10f..00000000 --- a/third_party/gfootball_engine/src/utils/database.hpp +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2019 Google LLC & Bastiaan Konings -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// written by bastiaan konings schuiling 2008 - 2014 -// this work is public domain. the code is undocumented, scruffy, untested, and should generally not be used for anything important. -// i do not offer support, so don't ask. to be used for inspiration :) - -#ifndef _HPP_DATABASE -#define _HPP_DATABASE - -#include "../defines.hpp" - -struct sqlite3; - -namespace blunted { - - class DatabaseResult; - - class Database { - - public: - Database(); - virtual ~Database(); - - bool Load(const std::string &filename); - DatabaseResult *Query(const std::string &query); - - protected: - sqlite3 *db; - - }; - - class DatabaseResult { - - public: - std::vector < std::string > header; - std::vector < std::vector < std::string > > data; - - }; - -} - -#endif diff --git a/third_party/gfootball_engine/src/utils/directoryparser.cpp b/third_party/gfootball_engine/src/utils/directoryparser.cpp deleted file mode 100644 index 4656c1ee..00000000 --- a/third_party/gfootball_engine/src/utils/directoryparser.cpp +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2019 Google LLC & Bastiaan Konings -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// written by bastiaan konings schuiling 2008 - 2014 -// this work is public domain. the code is undocumented, scruffy, untested, and should generally not be used for anything important. -// i do not offer support, so don't ask. to be used for inspiration :) - -#include "directoryparser.hpp" - -#include "../base/log.hpp" -#include "../main.hpp" - -namespace fs = boost::filesystem; - -namespace blunted { - - DirectoryParser::DirectoryParser() { - } - - DirectoryParser::~DirectoryParser() { - } - - void DirectoryParser::Parse(boost::filesystem::path path, const std::string &extension, std::vector &files, bool recurse) { - path = GetGameConfig().updatePath(path.string()); - if (!fs::exists(path) || !fs::is_directory(path)) Log(e_Error, "DirectoryParser", "Parse", "Could not open directory " + path.string() + " for reading"); - - fs::directory_iterator dirIter(path); - fs::directory_iterator endIter; - while (dirIter != endIter) { - if (is_directory(dirIter->status())) { - - if (recurse) { - boost::filesystem::path thePath(path); - thePath /= dirIter->path().filename(); - Parse(thePath, extension, files); - } - - } else { - boost::filesystem::path thePath(path); - thePath /= dirIter->path().filename(); - - if (thePath.extension() == "." + extension) { - - // add to results - //printf("adding %s\n", dirIter->path().filename().c_str()); - files.push_back(path.string() + "/" + thePath.filename().string()); - - } - } - - dirIter++; - } - } -} diff --git a/third_party/gfootball_engine/src/utils/directoryparser.hpp b/third_party/gfootball_engine/src/utils/directoryparser.hpp deleted file mode 100644 index feedcddf..00000000 --- a/third_party/gfootball_engine/src/utils/directoryparser.hpp +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2019 Google LLC & Bastiaan Konings -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// written by bastiaan konings schuiling 2008 - 2014 -// this work is public domain. the code is undocumented, scruffy, untested, and should generally not be used for anything important. -// i do not offer support, so don't ask. to be used for inspiration :) - -#ifndef _HPP_UTILS_DIRECTORYPARSER -#define _HPP_UTILS_DIRECTORYPARSER - -#include "../defines.hpp" - -#define BOOST_FILESYSTEM_NO_DEPRECATED -#define BOOST_FILESYSTEM_VERSION 3 -#include "boost/filesystem.hpp" - -#include "../base/log.hpp" - -namespace fs = boost::filesystem; - -namespace blunted { - - class DirectoryParser { - - public: - DirectoryParser(); - virtual ~DirectoryParser(); - - void Parse(boost::filesystem::path path, const std::string &extension, std::vector &files, bool recurse = true); - - protected: - - }; - -} - -#endif diff --git a/third_party/gfootball_engine/src/utils/gui2/widgets/image.cpp b/third_party/gfootball_engine/src/utils/gui2/widgets/image.cpp index 282a0ba9..a4eaf75d 100644 --- a/third_party/gfootball_engine/src/utils/gui2/widgets/image.cpp +++ b/third_party/gfootball_engine/src/utils/gui2/widgets/image.cpp @@ -21,13 +21,17 @@ #include "../main.hpp" #include "../windowmanager.hpp" +#include "file.h" namespace blunted { SDL_Surface* IMG_LoadBmp(const std::string& file) { std::string name = GetGameConfig().updatePath(file); name = name.substr(0, name.length() - 4) + ".bmp"; - auto image = SDL_LoadBMP(name.c_str()); + std::string file_data = GetFile(name); + SDL_RWops *rw = SDL_RWFromConstMem(file_data.data(), file_data.size()); + auto image = SDL_LoadBMP_RW(rw, 1); + if (image->format->format == SDL_PIXELFORMAT_ARGB8888) { SDL_Surface* tmp = SDL_ConvertSurfaceFormat(image, SDL_PIXELFORMAT_ABGR8888, 0); SDL_FreeSurface(image); diff --git a/third_party/gfootball_engine/src/utils/gui2/windowmanager.cpp b/third_party/gfootball_engine/src/utils/gui2/windowmanager.cpp index 4ccaf5b3..963ed3d4 100644 --- a/third_party/gfootball_engine/src/utils/gui2/windowmanager.cpp +++ b/third_party/gfootball_engine/src/utils/gui2/windowmanager.cpp @@ -19,10 +19,9 @@ #include -#include "widgets/root.hpp" - -#include "../../managers/resourcemanagerpool.hpp" +#include "../../main.hpp" #include "../../scene/objectfactory.hpp" +#include "widgets/root.hpp" namespace blunted { @@ -59,12 +58,16 @@ namespace blunted { scene2D->GetContextSize(contextW, contextH, bpp); SDL_Surface *sdlSurface = CreateSDLSurface(contextW, contextH); - boost::intrusive_ptr < Resource > resource = ResourceManagerPool::getSurfaceManager()->Fetch("gui2_blackoutbackground", false, true); + boost::intrusive_ptr > resource = + GetContext().surface_manager.Fetch("gui2_blackoutbackground", false, + true); Surface *surface = resource->GetResource(); surface->SetData(sdlSurface); - blackoutBackground = boost::static_pointer_cast(ObjectFactory::GetInstance().CreateObject("gui2_blackoutbackground", e_ObjectType_Image2D)); + blackoutBackground = boost::static_pointer_cast( + GetContext().object_factory.CreateObject("gui2_blackoutbackground", + e_ObjectType_Image2D)); scene2D->CreateSystemObjects(blackoutBackground); blackoutBackground->SetImage(resource); blackoutBackground->DrawRectangle(0, 0, contextW, contextH, Vector3(0, 0, 0), 255); @@ -169,12 +172,14 @@ namespace blunted { SDL_Surface *sdlSurface = CreateSDLSurface(width, height); - boost::intrusive_ptr < Resource > resource = ResourceManagerPool::getSurfaceManager()->Fetch(name, false, true); + boost::intrusive_ptr > resource = + GetContext().surface_manager.Fetch(name, false, true); Surface *surface = resource->GetResource(); surface->SetData(sdlSurface); - boost::intrusive_ptr image = boost::static_pointer_cast(ObjectFactory::GetInstance().CreateObject(name, e_ObjectType_Image2D)); + boost::intrusive_ptr image = boost::static_pointer_cast( + GetContext().object_factory.CreateObject(name, e_ObjectType_Image2D)); if (sceneRegister) scene2D->CreateSystemObjects(image); image->SetImage(resource); diff --git a/third_party/gfootball_engine/src/utils/objectloader.cpp b/third_party/gfootball_engine/src/utils/objectloader.cpp index f44ea06b..4b0b26ce 100644 --- a/third_party/gfootball_engine/src/utils/objectloader.cpp +++ b/third_party/gfootball_engine/src/utils/objectloader.cpp @@ -18,13 +18,13 @@ #include "objectloader.hpp" #include "../base/utils.hpp" -#include "../types/resource.hpp" -#include "../scene/resources/geometrydata.hpp" +#include "../main.hpp" +#include "../scene/objectfactory.hpp" #include "../scene/objects/geometry.hpp" -#include "../scene/objects/light.hpp" #include "../scene/objects/joint.hpp" -#include "../managers/resourcemanagerpool.hpp" -#include "../scene/objectfactory.hpp" +#include "../scene/objects/light.hpp" +#include "../scene/resources/geometrydata.hpp" +#include "../types/resource.hpp" namespace blunted { @@ -123,8 +123,10 @@ namespace blunted { iter++; } - boost::intrusive_ptr < Resource > geometry = ResourceManagerPool::getGeometryManager()->Fetch(dirpart + aseFilename, true); - boost::intrusive_ptr object = static_pointer_cast(ObjectFactory::GetInstance().CreateObject(objectName, objectType)); + boost::intrusive_ptr > geometry = + GetContext().geometry_manager.Fetch(dirpart + aseFilename, true); + boost::intrusive_ptr object = static_pointer_cast( + GetContext().object_factory.CreateObject(objectName, objectType)); if (properties.GetBool("dynamic")) geometry->GetResource()->SetDynamic(true); object->SetProperties(properties); @@ -165,7 +167,8 @@ namespace blunted { iter++; } - boost::intrusive_ptr object = static_pointer_cast(ObjectFactory::GetInstance().CreateObject(objectName, objectType)); + boost::intrusive_ptr object = static_pointer_cast( + GetContext().object_factory.CreateObject(objectName, objectType)); //object->SetProperties(properties); scene3D->CreateSystemObjects(object); @@ -223,7 +226,8 @@ namespace blunted { iter++; } - boost::intrusive_ptr object = static_pointer_cast(ObjectFactory::GetInstance().CreateObject(objectName, objectType)); + boost::intrusive_ptr object = static_pointer_cast( + GetContext().object_factory.CreateObject(objectName, objectType)); object->SetProperties(properties); scene3D->CreateSystemObjects(object); objNode->AddObject(object); diff --git a/third_party/gfootball_engine/src/utils/orbitcamera.cpp b/third_party/gfootball_engine/src/utils/orbitcamera.cpp index dac4a60b..3c4685fb 100644 --- a/third_party/gfootball_engine/src/utils/orbitcamera.cpp +++ b/third_party/gfootball_engine/src/utils/orbitcamera.cpp @@ -21,6 +21,5 @@ #include "../base/math/bluntmath.hpp" #include "../blunted.hpp" #include "../managers/environmentmanager.hpp" -#include "../managers/resourcemanagerpool.hpp" #include "../managers/systemmanager.hpp" #include "../scene/objectfactory.hpp" diff --git a/third_party/gfootball_engine/src/utils/splitgeometry.cpp b/third_party/gfootball_engine/src/utils/splitgeometry.cpp index d7135b5c..fc5ed3a1 100644 --- a/third_party/gfootball_engine/src/utils/splitgeometry.cpp +++ b/third_party/gfootball_engine/src/utils/splitgeometry.cpp @@ -19,10 +19,10 @@ #include +#include "../base/geometry/trianglemeshutils.hpp" #include "../base/utils.hpp" +#include "../main.hpp" #include "../scene/objectfactory.hpp" -#include "../managers/resourcemanagerpool.hpp" -#include "../base/geometry/trianglemeshutils.hpp" namespace blunted { @@ -66,7 +66,9 @@ namespace blunted { GeomIndex newIndex; newIndex.x = x; newIndex.y = y; - newIndex.geomData = ResourceManagerPool::getGeometryManager()->Fetch(name + " gridGeomData @ " + int_to_str(x) + ", " + int_to_str(y), false, false); + newIndex.geomData = GetContext().geometry_manager.Fetch( + name + " gridGeomData @ " + int_to_str(x) + ", " + int_to_str(y), false, + false); geomVec.push_back(newIndex); return newIndex.geomData; @@ -98,7 +100,11 @@ namespace blunted { for (int i = 0; i < (signed int)geomVec.size(); i++) { float x = geomVec[i].x; float y = geomVec[i].y; - boost::intrusive_ptr geom = static_pointer_cast(ObjectFactory::GetInstance().CreateObject(source->GetName() + " gridGeom @ " + int_to_str(x) + ", " + int_to_str(y), e_ObjectType_Geometry)); + boost::intrusive_ptr geom = static_pointer_cast( + GetContext().object_factory.CreateObject( + source->GetName() + " gridGeom @ " + int_to_str(x) + ", " + + int_to_str(y), + e_ObjectType_Geometry)); scene3D->CreateSystemObjects(geom); geom->SetGeometryData(geomVec[i].geomData); resultNode->AddObject(geom);